このトピックでは、growpart ツールと resize2fs ツールを使用して、Linux システムディスクのパーティションとファイルシステムのサイズを変更する方法について説明します。

始める前に

システムディスクのパーティションとファイルシステムのサイズを変更する前に、次の要件が満たされていることをご確認ください。

  1. growpart または xfsprogs ツールは、オペレーティングシステムに基づいてインストールされます。
    • CentOS 7 または Aliyun Linux では、次のコマンドを実行してツールをインストールします。
      yum install cloud-utils-growpart
      yum install xfsprogs
    • Ubuntu 14、Ubuntu 16、Ubuntu 18、または Debian 9 では、次のコマンドを実行してツールをインストールします。
      apt install cloud-guest-utils
      apt install xfsprogs
    • Debian 8、OpenSUSE 42.3、OpenSUSE 13.1、または SUSE Linux Enterprise Server 12 SP2 では、growpart または xfsprogs のアップストリームバージョンを使用します。
    フォーマットツールのエラーが原因でパーティションのサイズ変更に失敗した場合、ツールを再インストールします。
  2. インスタンスのカーネルバージョンが uname-a コマンドの実行などによって確認されます。
    • カーネル 3.6.0 以降の詳細については、「カーネル 3.6.0 以降のインスタンスの手順」をご参照ください。
    • 3.6.0 以前のカーネルの詳細については、「カーネル 3.6.0 以前のインスタンスの手順」をご参照ください。 インスタンスが CentOS 6、Debian 7、または SUSE Linux Enterprise Server 11 SP4 などの Linux ディストリビューションを実行している場合、コンソールまたは API 操作の実行のいずれかでインスタンスを再起動し、パーティションのサイズを変更できます。

このタスクについて

このトピックでの手順は、次のパーティションおよびファイルシステムフォーマットのシステムディスクに適用されます。
  • パーティション形式:MBR 、 GPT
  • ファイルシステム形式:ext *、XFS、Btrfs

カーネル 3.6.0 以降のインスタンスの手順

このセクションでは、CentOS 7 を実行しているインスタンスを例として使用して、システムディスクパーティションとファイルシステムのサイズを変更する方法を説明します。

  1. fdisk -l コマンドを実行し、現在のディスクサイズを確認します。
    次の例は、/dev/vda のディスクサイズが 100 GiB であることを示します。
    [root@ecshost ~]# fdisk -l
    Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000bad2b
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83886046    41941999+  83  Linux
  2. df -h コマンドを実行し、パーティションサイズとファイルシステムタイプを確認します。
    次の例では、/dev/vda1 パーティションサイズは 40 GiB、ファイルシステムタイプは ext4 です。
    [root@ecshost ~]# df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  869M     0  869M   0% /dev
    tmpfs          tmpfs     879M     0  879M   0% /dev/shm
    tmpfs          tmpfs     879M  460K  878M   1% /run
    tmpfs          tmpfs     879M     0  879M   0% /sys/fs/cgroup
    /dev/vda1      ext4       40G  1.8G   36G   5% /
    tmpfs          tmpfs     176M     0  176M   0% /run/user/0
  3. growpart <DeviceName> <PartionNumber> コマンドを実行し、パーティションのサイズを変更します。
    次の例では、最初のパーティション /dev/vda1 システムディスクのサイズが変更されます。
    [root@ecshost ~]# growpart /dev/vda 1
    CHANGED: partition=1 start=2048 old: size=83883999 end=83886047 new: size=209713119 end=209715167
  4. ファイルシステムのサイズを変更します。
    ファイルシステムタイプに基づいて、次のいずれかの方法を使用できます。
    • ファイルシステムが ext3 や ext4 などの ext * の場合は、 resize2fs <PartitionName> コマンドを実行します。
      次の例では、/dev/vda1 パーティションのサイズが変更されます。
      [root@ecshost ~]# resize2fs /dev/vda1
      resize2fs 1.42.9 (28-Dec-2013)
      Filesystem at /dev/vda1 is mounted on /; on-line resizing required
      old_desc_blocks = 3, new_desc_blocks = 7
      The filesystem on /dev/vda1 is now 26214139 blocks long.
    • ファイルシステムが XFS の場合、 xfs_growfs <mountpoint> コマンドを実行します。

      次の例は、/dev/vda1 パーティションのサイズが変更されます。 /dev/vda1 のマウントポイントはルートディレクトリ / です。

      [root@ecshost ~]# xfs_growfs /
      meta-data=/dev/vda1              isize=512    agcount=13, agsize=1310656 blks
               =                       sectsz=512   attr=2, projid32bit=1
               =                       crc=1        finobt=1, sparse=1, rmapbt=0
               =                       reflink=1
      data     =                       bsize=4096   blocks=15728379, imaxpct=25
               =                       sunit=0      swidth=0 blks
      naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
      log      =internal log           bsize=4096   blocks=2560, version=2
               =                       sectsz=512   sunit=0 blks, lazy-count=1
      realtime =none                   extsz=4096   blocks=0, rtextents=0
      data blocks changed from 15728379 to 20971259
      xfs_growfs コマンドは、バージョンによって異なる場合があります。 xfs_growfs --help を実行して、対応するコマンドを確認します。
  5. df -h コマンドを実行して、ディスクパーティションのサイズを確認します。
    次の例では、/dev/vda1 パーティションサイズは 100 GiB で、パーティションのサイズが変更されていることを示しています。
    [root@ecshost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        869M     0  869M   0% /dev
    tmpfs           879M     0  879M   0% /dev/shm
    tmpfs           879M  492K  878M   1% /run
    tmpfs           879M     0  879M   0% /sys/fs/cgroup
    /dev/vda1        99G  1.8G   93G   2% /
    tmpfs           176M     0  176M   0% /run/user/0

カーネル 3.6.0 以前のインスタンスの手順

このセクションでは、CentOS 6 を実行しているインスタンスを例として使用し、システムディスクパーティションとファイルシステムのサイズを変更する方法を説明します。

  1. dracut-modules-growroot ツールをインストールします。
    [root@ecshost ~]# yum install -y dracut-modules-growroot

    yum 以外のパッケージマネージャーを使用している場合、前途のコマンドの yum をパッケージマネージャーに基づいて変更します。

  2. 次のコマンドを実行して、既存の initramfs ファイルを上書きします。
    [root@ecshost ~]# dracut -f
  3. fdisk -l コマンドを実行し、現在のディスクサイズを確認します。
    次の例は、/dev/vda1 ディスクサイズは 100 GiB です。
    [root@ecshost ~]# fdisk -l
    Disk /dev/vda: 107.4 GB, 107374182400 bytes
    255 heads, 63 sectors/track, 13054 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0003a7b4
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1        2611    20970496   83  Linux
  4. df -h コマンドを実行して、ディスクパーティションのサイズを確認します。
    次の例では、/dev/vda1 パーティションサイズは20 GiB です。
    [root@ecshost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    tmpfs           7.8G     0  7.8G   0% /dev/shm
    /dev/vda1        20G  1.1G   18G   6% /
  5. growpart <DeviceName> <PartionNumber> コマンドを実行して、パーティションのサイズを変更します。
    次の例では、システムディスクの最初のパーティション /dev/vda1 のサイズが変更されます。
    [root@ecshost ~]# growpart /dev/vda 1
    CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=209710462,end=209712510
  6. コンソールまたは RebootInstance 操作の実行のいずれかでインスタンスを再起動します。 手順の詳細については、「インスタンスの再起動」、「RebootInstance」をご参照ください。
  7. インスタンスに接続します。
  8. ファイルシステムのサイズを変更します。
    ファイルシステムタイプに基づいて、次のいずれかの方法を使用できます。
    • ファイルシステムが ext3 や ext4 などの ext * の場合は、 resize2fs <PartitionName> コマンドを実行します。
      次の例は、/dev/vda1 パーティションのサイズが変更されます。
      [root@ecshost ~]# resize2fs /dev/vda1
      resize2fs 1.41.12 (17-May-2010)
      Filesystem at /dev/vda1 is mounted on /; on-line resizing required
      old desc_blocks = 2, new_desc_blocks = 7
      Performing an on-line resize of /dev/vda1 to 26213807 (4k) blocks.
      The filesystem on /dev/vda1 is now 26213807 blocks long.
    • ファイルシステムが XFS の場合は、 xfs_growfs <mountpoint> コマンドを実行します。

      次の例では、/dev/vda1 パーティションのサイズが変更されます。 /dev/vda1 パーティションのマウントポイントはルートディレクトリ / です。

      [root@ecshost ~]# xfs_growfs /
      xfs_growfs コマンドは、バージョンによって異なる場合があります。 xfs_growfs --help を実行して、対応するコマンドを確認します。
  9. df -h コマンドを実行して、ディスクパーティションのサイズを確認します。
    次の例では、 /dev/vda1 パーティションサイズは 100 GiB で、パーティションのサイズが変更されていることを示しています。
    [root@ecshost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        99G  1.1G   93G   2% /
    tmpfs           7.8G     0  7.8G   0% /dev/shm