XenServer上のUbuntuのディスク容量を拡張する

作業メモ。XenServer上で動かしてるUbuntuのディスク容量を増やしたい。
LVMを使っている状態で、オンラインで(再起動とか不要で)できた。
XenServer6.2、Ubuntu12.04。ファイルシステムEXT4

現状の確認

tokibito@ubuntu-base:~$ sudo su -
root@ubuntu:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root  6.5G  927M  5.3G  15% /
udev                         473M  4.0K  473M   1% /dev
tmpfs                        199M  172K  198M   1% /run
none                         5.0M     0  5.0M   0% /run/lock
none                         496M     0  496M   0% /run/shm
/dev/xvda1                   228M   28M  189M  13% /boot

ディスク容量は8GBで、Ubuntuのインストール時にLVMでGuidedで設定した状態。ubuntu--vg-rootは6.5GBとなっている。これを拡張する。
以降、rootユーザーで作業。

ディスクを追加する

XenCenterで、インスタンスのStorageタブからディスクを追加する。今回は5GB。

追加したところ、Ubuntu側ではすぐに/dev/xvdbとして検出された。

root@ubuntu:~# ls -l /dev/xvd*
brw-rw---- 1 root disk 202,  0 Nov 18 02:12 /dev/xvda
brw-rw---- 1 root disk 202,  1 Nov 18 02:12 /dev/xvda1
brw-rw---- 1 root disk 202,  2 Nov 18 02:12 /dev/xvda2
brw-rw---- 1 root disk 202,  5 Nov 18 02:12 /dev/xvda5
brw-rw---- 1 root disk 202, 16 Nov 18 02:19 /dev/xvdb  ←追加したディスク

lvmのコマンドでボリュームを拡張する

今回は追加したxvdbをすべてubuntu--vg-rootに割り当てる。
直接コマンド実行してもいいが、LVMのコマンドだけ使うならlvmプロンプトの状態で作業するのでもよさそう。

root@ubuntu:~# lvm
lvm>

PVにxvdbを追加する。pvsでPVの確認、pvcreateでPVを追加できる。

lvm> pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/xvda5 ubuntu-vg lvm2 a-   7.76g 32.00m
lvm> pvcreate /dev/xvdb
  Physical volume "/dev/xvdb" successfully created
lvm> pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/xvda5 ubuntu-vg lvm2 a-   7.76g 32.00m
  /dev/xvdb            lvm2 a-   5.00g  5.00g

既存のVGにPVを追加する。vgs、vgdisplayでVGの確認、vgextendで既存のVGを拡張できる。

lvm> vgs
  VG        #PV #LV #SN Attr   VSize VFree
  ubuntu-vg   1   2   0 wz--n- 7.76g 32.00m
lvm> vgextend ubuntu-vg /dev/xvdb
  Volume group "ubuntu-vg" successfully extended
lvm> vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  ubuntu-vg   2   2   0 wz--n- 12.75g 5.03g
lvm> vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               12.75 GiB
  PE Size               4.00 MiB
  Total PE              3265
  Alloc PE / Size       1978 / 7.73 GiB
  Free  PE / Size       1287 / 5.03 GiB
  VG UUID               ePgddc-OQIU-DBUs-HI5h-v5vb-G2T5-gNRuzy

LVを拡張する。lvs、lvdisplayでLVを確認、lvextendで拡張できる。

lvm> lvs
  LV     VG        Attr   LSize    Origin Snap%  Move Log Copy%  Convert
  root   ubuntu-vg -wi-ao    6.73g
  swap_1 ubuntu-vg -wi-ao 1020.00m
lvm> lvdisplay
  --- Logical volume ---
  LV Name                /dev/ubuntu-vg/root
  VG Name                ubuntu-vg
  LV UUID                pxjeIf-d7XF-OJUE-334e-rHrK-RmJN-YZAJx1
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                6.73 GiB
  Current LE             1723
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Name                /dev/ubuntu-vg/swap_1
  VG Name                ubuntu-vg
  LV UUID                hLE41Q-01lV-QwjV-uaki-dnUc-4JO0-z1pdft
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                1020.00 MiB
  Current LE             255
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
lvm> lvextend -L +5G /dev/ubuntu-vg/root  # 5GB追加
  Extending logical volume root to 11.73 GiB
  Logical volume root successfully resized
lvm> lvs
  LV     VG        Attr   LSize    Origin Snap%  Move Log Copy%  Convert
  root   ubuntu-vg -wi-ao   11.73g
  swap_1 ubuntu-vg -wi-ao 1020.00m

lvmでの操作はこれで終わり。

ファイルシステムをリサイズする

resize2fsコマンドでファイルシステムをリサイズする。

root@ubuntu:~# resize2fs /dev/mapper/ubuntu--vg-root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/mapper/ubuntu--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/ubuntu--vg-root is now 3075072 blocks long.

root@ubuntu:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root   12G  929M   10G   9% /
udev                         473M  4.0K  473M   1% /dev
tmpfs                        199M  176K  198M   1% /run
none                         5.0M     0  5.0M   0% /run/lock
none                         496M     0  496M   0% /run/shm
/dev/xvda1                   228M   28M  189M  13% /boot

以上でディスク容量拡張の作業は終わり。LVM便利ですね。

2015/02/12追記

CentOS7でファイルシステムがXFSの場合は、resize2fsの代わりにxfs_growfsコマンドを使用する。