AWS EC2 システムディスクパーティション拡張(GPT)

AWSでLinuxインスタンス(Amazon Linux除く)を構築した際にルートパーティションをデフォルトサイズから変更しても反映されない仕様は相変わらずだけどパーティションテーブルが「GPT」だとさらにやっかいなことに。

仕事でRHEL6.9 64bit(HVM)のインスタンスを構築したら

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      5.8G  2.2G  3.4G  39% /
tmpfs           498M     0  498M   0% /dev/shm

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk 
└─xvda1 202:1    0   6G  0 part /

インスタンス作成時に32GBを指定したにのにdfコマンドで確認すると5.8GBしか確保されてない…
lsblkコマンドで確認するとストレージとしては32GB認識されている。いつものパターン。
fdiskコマンドでパーティションをリサイズしようとすると

fdisk /dev/xvda

WARNING: GPT (GUID Partition Table) detected on '/dev/xvda'! The util fdisk doesn't support GPT. Use GNU Parted.


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): p

Disk /dev/xvda: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 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: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1               1        1306    10485759+  ee  GPT <--GPTテーブルになってる

Command (m for help):

パーティションがGPTで切られてるし…
GPTテーブルパーティションはfdiskコマンドで編集できないのでparted(gparted)を使うことになる。fdiskと違ってマウント中のパーティションのリサイズができないので手順は

1. 目的のEC2をシャットダウンしてリサイズするボリュームをデタッチ
2. ボリュームリサイズ用にEC2を1台起動。(Amazon LinuxでOK)
3. リサイズ用EC2を起動してリサイズするボリュームをアタッチ
4. アタッチしたボリュームをpartedコマンドで編集(リサイズ)してデタッチ
5. 元のEC2にリサイズしたボリュームをアタッチして起動

となる。かなーり、めんどくさい作業。で、実際にやってみるとこんな感じ。

1. ボリュームのデタッチ

(注)デタッチする前に元々アタッチされていたデバイス名を控えておくこと。同じデバイス名に戻さないとOSが起動できなくなる。

ルートデバイス: /dev/sda1
ブロックデバイス: /dev/sda1

2. ボリュームリサイズ用のEC2を起動(とりあえずAmazon Linux起動)

ボリュームのアタッチ前

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /

自身のボリューム(8GB)のみを認識

3. ボリュームのアタッチ

ボリュームのアタッチ後

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  32G  0 disk 
└─xvdf1 202:81   0   6G  0 part

xvdfのボリューム(32GB)が認識されているのでこれを編集する。

4. アタッチしたボリュームをリサイズ

parted /dev/xvdf
GNU Parted 2.1
Using /dev/xvdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s                                                           
(parted) print                                                            
Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that
another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and
removing the old backup)?
Fix/Ignore/Cancel? Fix                                                    
Warning: Not all of the space available to /dev/xvdf appears to be used, you can fix the GPT to use
all of the space (an extra 46137344 blocks) or continue with the current setting? 
Fix/Ignore? Fix                                                           
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 67108864s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End        Size       File system  Name  Flags
 1      2048s  12584959s  12582912s  ext4

(parted) rm 1
(parted) mkpart Linux 2048s 100%                                          
(parted) print                                                            
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 67108864s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End        Size       File system  Name   Flags
 1      2048s  67106815s  67104768s  ext4         Linux

(parted) set 1 boot on                                                    
(parted) print                                                            
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 67108864s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End        Size       File system  Name   Flags
 1      2048s  67106815s  67104768s  ext4         Linux  boot

(parted) quit 

確認
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  32G  0 disk 
└─xvdf1 202:81   0  32G  0 part
xvdf1のパーティションサイズが32GBに拡張されていることを確認

デタッチして確認
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /

デタッチされたのでxvdfのボリュームは認識されていない

5. 元のEC2にリサイズしたボリュームをアタッチして起動

*アタッチする際デフォルトのデバイス名と異なるので注意

EC2起動後はパーティションが拡張されていることを確認

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       32G  2.2G   28G   8% /
tmpfs           498M     0  498M   0% /dev/shm

 lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk 
└─xvda1 202:1    0  32G  0 part /

ボリューム編集用に起動したEC2を削除して作業終了。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です