QUICKGUARD ホームページ >

【IDCFクラウド】GPT方式のパーティションテーブルで作成したボリュームを拡張する場合の注意点

2019.11.20

仮想マシンのボリューム拡張について

エンジニアの山田です。

株式会社IDCフロンティアが提供するIDCFクラウドでは、仮想マシンに割り当てたDATADISKタイプのディスクボリュームについては、下記の手順で容量を拡張することができます。
ボリュームの拡張(リサイズ)手順を教えてください。
ボリュームのリサイズをOSに反映させる方法(パーティション有りの領域をリサイズし、既存のパーティションを拡張する場合)
※株式会社IDCフロンティア提供の手順

ただ、上記の手順はテンプレートを用いて構築した仮想マシンが対象で、拡張対象のボリュームにMBR(マスターブートレコード)方式のパーティションテーブルで作成されている場合を想定されたものなので、GPT(GUIDパーティションテーブル)方式で作成したボリュームを拡張する場合には、上記の手順はうまくいかないことになりますので、注意が必要です。


実際にGPT方式で作成したパーティションテーブルに対して、IDCFが提供する手順で実施してみると・・・

fdiskコマンド実行時に以下の警告メッセージが表示されて・・・・

警告: GPT (GUID パーティションテーブル) が '/dev/sdb' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。

fdiskコマンド実行後の再起動で仮想サーバが起動してこなくなります・・・・・


GPT方式のパーティションテーブルを更新するには・・・・

fdiskコマンドではなくgdiskコマンドを使用する必要がありますが、今回はgrowpartコマンドを使用します。

・IDCFコンソールでデータディスクをアタッチ

# echo - - - > /sys/class/scsi_host/host0/scan

・必要ならgrowpartをインストール

# yum install cloud-utils-growpart
# yum install gdisk

・growpartコマンドでパーティション情報を更新

# unset LANG
# growpart /dev/sdb 1
CHANGED: disk=/dev/sdb partition=1: start=2048 old: size=209711103,end=209713151 new: size=314570718,end=314572766

・再起動で反映

# reboot

・状況確認

# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  150G  0 disk
mqsdb1   8:17   0  150G  0 part /data

# df -h /dev/sdb1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        99G   80G   15G  85% /data

→パーティション情報は変わったが、容量は拡張されていない

・ディスクサイズ拡張

# resize2fs /dev/sdb1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/sdb1 is mounted on /data; on-line resizing required
old desc_blocks = 7, new_desc_blocks = 10
Performing an on-line resize of /dev/sdb1 to 39321339 (4k) blocks.
The filesystem on /dev/sdb1 is now 39321339 blocks long.

・状況確認

# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  150G  0 disk
mqsdb1   8:17   0  150G  0 part /data

# df -h /dev/sdb1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       148G   80G   61G  57% /data

→拡張されたことを確認済み

あまり例がないかもしれませんが、意図的にディスクを指定して作成する環境などでは稀にあるかもしれません。


最後に・・・・

growpartはパーティション情報の更新を行う際にパーティション方式(MBR,GPT)を確認した上で、対象にあったコマンド(sfdisk,sgdisk)を使用して実行するツールのため、作業者がパーティションの状態を意識することなく実行できるので非常に有用ですね。