KVMのディスクイメージを拡張します。今回はLVMを使用したマシンでディスク拡張を行います。10GB に +10GB して 20GB に拡張します。
1. 事前の確認
仮想マシンのディスクはこんな感じ。
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 8.5G 6.5G 2.1G 76% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 7.1M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vdb 2.6T 1.6T 1016G 62% /storage
/dev/vda1 497M 217M 280M 44% /boot
tmpfs 100M 0 100M 0% /run/user/1000
2. ディスクイメージの拡張
まずは、仮想ホスト上のディスクイメージファイルを拡張する。
イメージのバックアップを取る。
# cp -a /var/lib/libvirt/images/water1.img{,.bak}
現状イメージの確認
# qemu-img info water01.img
image: water01.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 10G
10GBのイメージに10GBを追加
# qemu-img resize water01.img +10G
Image resized.
3. ディスクイメージの拡張
ここでマシンを起動し、以降仮想マシン上で操作する。
fdiskでディスクを編集
# fdisk /dev/vda
コマンド (m でヘルプ): p #確認(セクタ単位であることも同時に確認)
ディスク /dev/vda: 128.8 GB, 128849018880 バイト
ヘッド 16, セクタ 63, シリンダ 249660, 合計 251658240 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000d2e86
デバイス ブート 始点 終点 ブロック Id システム
/dev/vda1 * 2048 1026047 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/vda2 1026048 62914559 30944256 8e Linux LVM
パーティション 2 は、シリンダ境界で終わっていません。
コマンド (m でヘルプ): d #/dev/vda2を一旦削除する
パーティション番号 (1-4): 2
コマンド (m でヘルプ): p #/dev/vda2が削除されたことを確認
ディスク /dev/vda: 128.8 GB, 128849018880 バイト
ヘッド 16, セクタ 63, シリンダ 249660, 合計 251658240 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000d2e86
デバイス ブート 始点 終点 ブロック Id システム
/dev/vda1 * 2048 1026047 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
コマンド (m でヘルプ): n #拡張されたサイズで再び/dev/vda2を作成していく
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 2
最初 セクタ (63-251658239, 初期値 63): 1026048
Last セクタ, +セクタ数 or +size{K,M,G} (1026048-251658239, 初期値 251658239):
初期値 251658239 を使います
コマンド (m でヘルプ): p #作成されたことを確認
ディスク /dev/vda: 128.8 GB, 128849018880 バイト
ヘッド 16, セクタ 63, シリンダ 249660, 合計 251658240 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000d2e86
デバイス ブート 始点 終点 ブロック Id システム
/dev/vda1 * 2048 1026047 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/vda2 1026048 251658239 125316096 83 Linux
コマンド (m でヘルプ): t #フォーマットを「Linux LVM」に変更
パーティション番号 (1-4): 2
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 2 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): p #フォーマットが「Linux LVM」になったことを確認。
ディスク /dev/vda: 128.8 GB, 128849018880 バイト
ヘッド 16, セクタ 63, シリンダ 249660, 合計 251658240 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000d2e86
デバイス ブート 始点 終点 ブロック Id システム
/dev/vda1 * 2048 1026047 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/vda2 1026048 251658239 125316096 8e Linux LVM
コマンド (m でヘルプ): w #ディスクの変更を保存
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。
マシンを再起動し、PVを拡張
# pvresize /dev/vda2
Physical volume "/dev/vda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
PVが拡張されたことを確認
# pvscan
PV /dev/vda2 VG centos lvm2 [<19.51 GiB / 10.00 GiB free]
Total: 1 [<19.51 GiB] / in use: 1 [<19.51 GiB] / in no VG: 0 [0 ]
拡張されたPV分、LVを拡張
# lvresize -L +10G /dev/centos/root
Size of logical volume centos/root changed from <8.51 GiB (2178 extents) to <18.51 GiB (4738 extents).
Logical volume centos/root successfully resized.
拡張されたLV分、ファイルシステムを拡張
# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=557568 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=2230272, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal 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 2230272 to 4851712
確認。拡張されたことが確認できる。
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 19G 6.5G 13G 35% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 7.1M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vdb 2.6T 1.6T 1016G 62% /storage
/dev/vda1 497M 217M 280M 44% /boot
tmpfs 100M 0 100M 0% /run/user/1000