2015年2月17日火曜日

Amazon EC2 CentOS 6 (x86_64) - with Updates HVM のディスク容量を増やす

https://www.flickr.com/photos/thebluekids/6094359814

Amazon EC2でAMI: CentOS 6 (x86_64) - with Updates HVM を利用したときは、最初に設定したストレージ容量が起動時に反映されず、しかもresize2fsができずディスクの容量を増やすことができません。

# resize2fs /dev/xvda1
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 2096896 blocks long.  Nothing to do!

resize2fsができず、”Nothing to do!”となります。
EC2でディスクの容量を拡張したいときなど、パーティションをリサイズしたいことがあると思います。

cloud-initを利用してディスクの容量を拡張する方法(EC2のCentOS6 HVMでresize2fs "Nothing to do!"と言われたとき)もありますが、ここでは、fdiskを利用して新しくディスクの容量を割り当てていきます。

以下、コマンドとともに <<コメント>> として説明を入れています。
#  df -h  <<7.9GBのディスクを確認。>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  797M  6.7G  11% /
tmpfs           3.6G     0  3.6G   0% /dev/shm

# fdisk -l <<ディスクとパーティーションを確認。ディスクは322.1 GBだけど、パーティーションが7.9GB(8387584ブロック)のみ。>>

Disk /dev/xvda: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 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: 0x00098461

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1        1045     8387584   83  Linux

# fdisk /dev/xvda <<fdiskコマンドをスタート。/dev/xvdaを指定。>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u <<セクターディスプレイを選択。>>
Changing display/entry units to sectors

Command (m for help): p <<パーティーションを表示。最初のセクター(Start)を確認。この例では、2048>>

Disk /dev/xvda: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders, total 629145600 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 identifier: 0x000c9349

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    16777215     8387584   83  Linux

Command (m for help): d  <<パーティーションを削除。>>
Selected partition 1

Command (m for help): n  <<新しいパーティーションを作成。>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<プライマリを選択。>>
Partition number (1-4): 1  <<最初のパーティーションを選択。>>
First sector (63-629145599, default 63): 2048 <<最初のセクターを入力。この例では、2048>>
Last sector, +sectors or +size{K,M,G} (2048-629145599, default 629145599): <<ディスクの残り部分を指定。エンターを押してデフォルトを選択。>>
Using default value 629145599

Command (m for help): p  <<パーティーションを表示。最初のセクター(Start)と最後のセクター(End)に間違いがないか確認。>>

Disk /dev/xvda: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders, total 629145600 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 identifier: 0x000c9349

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048   629145599   314571776   83  Linux

Command (m for help): a <<パーティションをブート可能にします。>>
Partition number (1-4): 1  <<最初のパーティーションを選択。>>

Command (m for help): w  <<パーティション情報を書き込み、fdiskセッションを終了します。>>
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

# reboot <<サーバをリブート。>>

# resize2fs /dev/xvda1 <<利用可能なディスクの容量を増やす。>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 19
Performing an on-line resize of /dev/xvda1 to 78642944 (4k) blocks.
The filesystem on /dev/xvda1 is now 78642944 blocks long.

# df -hT <<ディスクの容量が増えていることを確認。>>
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/xvda1     ext4   296G  810M  280G   1% /
tmpfs          tmpfs  3.6G     0  3.6G   0% /dev/shm

うまくディスク容量が増加できたでしょうか?


参考)AWS Developer Forums: R3.8XLARGE centos/RHEL - resize2fs not working on root drive
https://forums.aws.amazon.com/thread.jspa?messageID=539484