CentOS 6 の kvm でゲストのシステムディスクを拡張
〜 あれっ、足りない。いいや、増やしちゃえ 〜

2015-02-05 作成 福島
2025-11-18 更新 福島
TOP > tips > kvm-disk_expand
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob | Shell ]

1. 拡張前のディスク状況を確認 (ゲストの中から確認)

1-1. Windows7 の場合


2. ドメインを停止させる (ホストの CentOS 6 の GUI から操作。virsh でも可能)





3. イメージ形式を変換・圧縮する (ホストの CentOS 6 のコンソールから操作)

$ su
# cd /var/lib/libvirt/images/

3-a. イメージフォーマットが RAW (非圧縮) だった場合はこちら。(RAW → QCOW2)
# mv Win7Pro64.img Win7Pro64.old
# qemu-img convert -f raw -O qcow2 Win7Pro64.old Win7Pro64.qcow2

※ゲストが問題なく動作したら、Win7Pro64.old は削除する。
3-b. イメージフォーマットが既に QCOW2 だった場合はこちら。(QCOW2 → QCOW2)
ストレージを使い込んでいる場合、再変換することによりイメージファイルが小さくなる可能性がある。
# mv Win7Pro64.img Win7Pro64.old
# qemu-img convert -c -O qcow2 Win7Pro64.old Win7Pro64.qcow2

※ゲストが問題なく動作したら、Win7Pro64.old は削除する。
3-c. イメージフォーマットが既に QCOW2 で、圧縮もバックアップも必要ない場合はこちら。
# mv Win7Pro64.img Win7Pro64.qcow2


4. イメージを拡張して再度マウント

4-1. ディスクイメージを拡張する。
# qemu-img resize Win7Pro64.qcow2 +76G
(増加ではなく大きさを指定する場合は 76G を指定する)
4-2. イメージファイルのフォーマットを QCOW2 へ変更 (ホストの CentOS 6 の GUI から操作)
Storage format を qcow2 にして ボタンをクリックする。

Storage format:
  ↓


5. ドメインを開始する (ホストの CentOS 6 の GUI から操作)





7. ゲストの中でパーティションを調節する

7-1. Windows7 の場合 (Vista 以降で可能)
7-1-1.
「未割り当て」のパーティションが増えていることが分かる。


7-1-2.
拡張したいパーティション (ここでは C:) を選択し、
メニューから [操作(A)]-[すべてのタスク]-[ボリュームの拡張(X)] を選択する。


7-1-3.


7-1-4.
分かりにくい日本語だが、
ボリュームを拡張できます
と書いてある。


7-1-5.


7-1-6. システムボリューム拡張完了


8. ゲスト OS が Linux (xfs) の例:

ゲストの仮想ディスク 40GB → 100GB

# virsh shutdown guest # ゲスト OS 停止
# qemu-img resize r9-exp.qcow2 100G # ゲストの仮想ディスクを 100GB へ拡張
# virsh start guest # ゲスト OS 開始


     …ゲスト OS へログイン…

guest# fdisk /dev/vda
fdisk (util-linux 2.37.4) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。 
書き込みコマンドを使用する際は、注意して実行してください。

This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.

コマンド (m でヘルプ): p 

ディスク /dev/vda: 100 GiB, 107374182400 バイト, 209715200 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x33554bb6

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/vda1  *        2048  2099199  2097152     1G 83 Linux
/dev/vda2        2099200 83886079 81786880    39G 8e Linux LVM  ← これを拡張

コマンド (m でヘルプ): d 
パーティション番号 (1,2, 既定値 2): 2 

パーティション 2 を削除しました。

コマンド (m でヘルプ): n 

パーティションタイプ
 p 基本パーティション (1 プライマリ, 0 拡張, 3 空き)
 e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p 
パーティション番号 (2-4, 既定値 2): 2 
最初のセクタ (2099200-209715199, 既定値 2099200): 
最終セクタ, +/-セクタ番号 または +/-サイズ{K,M,G,T,P}
(2099200-209715199, 既定値 209715199): 

新しいパーティション 2 をタイプ Linux、サイズ 99 GiB で作成しました。
パーティション #2 には LVM2_member 署名が書き込まれています。

署名を削除しますか? [Y]es/[N]o: n  ← 署名は削除しない

コマンド (m でヘルプ): w 

パーティション情報が変更されました。
ディスクを同期しています。
guest# reboot # ゲスト OS を再起動

     …再起動…
guest# pvresize /dev/vda2 # ボリュームサイズを変更
Physical volume "/dev/vda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized   
guest# lvextend -l +100%FREE /dev/rl/root # 論理ボリュームサイズを変更
Size of logical volume rl/root changed from <37.00 GiB (9471 extents) to <97.00
 GiB (24831 extents).
  Logical volume rl/root successfully resized.
guest# xfs_growfs / # ファイルシステムを拡張
meta-data=/dev/mapper/rl-root    isize=512    agcount=9, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0 
data     =                       bsize=4096   blocks=9698304, 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 9698304 to 25426944