XFS on LVM on KVMのファイルシステム拡張手順

事前にディスク容量の見積もりとか全くしていないので、KVMで飼っているVMがちょくちょく*1容量不足になる。
そしてCentOS7のVMはスナップショットを使う事もあるかもと無駄に全てLVM構成になっている。
PVは LVM構成になってなければVMイメージをリサイズすればいいだけなのだけど、 再セットアップするのも面倒なのでそのたび四苦八苦*2する。自業自得。
なのでブログにまとめておこうと思った。

手順

概要的には KVMイメージの拡張 -> PVの拡張 -> LVの拡張 -> XFSファイルシステムの拡張*3 な感じ。

  1. VM停止
  2. KVMイメージの拡張
    • sudo qemu-img resize vmdisk.img +10G を実行
    • 上記は10GB拡張する例
  3. VM起動
  4. LVMのPVをfdiskで拡張 (下記の手順1を参照)
  5. sudo partprobe を実行
    • partprobeコマンドを実行するか再起動しないと、kernelによって新しい領域が認識されない
  6. PVの拡張 ※空き容量がないと失敗するので注意
    • sudo pvresize <PVのデバイス> を実行
    • PVのデバイスの例:/dev/vdax (xは数字)
  7. LVの拡張
    • sudo lvextend -l 100%VG <LVのパス> を実行
    • LVのパスの例として、CentOS7のインストーラでLVMを設定すると /dev/mapper/centos_<hostname>-<lvname> のようになっていた
  8. XFSファイルシステムの拡張
    • sudo xfs_growfs <マウント先のパス> を実行
    • マウント先のパスの例:/ とか /boot

手順1:LVMのPVをfdiskで拡張

PVのデバイスを仮に/dev/vda2とする場合(各自の環境に合わせること!!)。

$ fdisk /dev/vda
d
2
n (ひたすらリターン)
w

手順1の作業例

[tyru@hogepiyo ~]$ sudo fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1,2, default 2): 2  ※各自の環境に合わせること!!
Partition 2 is deleted

Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (1026048-62914559, default 1026048):
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-62914559, default 62914559):
Using default value 62914559
Partition 2 of type Linux and of size 29.5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

ここで太字の出力が出た場合、手順5のpartprobeコマンドの実行か再起動が必要になる。

*1:今回2度目

*2:RedmineWikiに手順をまとめておいたのだけど、手順が抜けてたり注意事項として書くべき事がなかったり…

*3:XFSファイルシステムって馬から落馬してるけど、XFSそのものを指すのではなくXFSで作られたファイルシステムを指すために書いてる。クラスとインスタンス