Linux LVMでVGを拡張する(PVを拡張するパターン)
久々にLinuxネタ。Linux LVM2でVGを拡張(PV追加ではなく、PV自体を拡張)するときのメモ。
手順としては
- fdiskでPVのパーティション拡張
- pvresizeでPVを拡張
- 終わり
のはずだったんですが、pvresizeでこんなエラーがでました。
/dev/sda3: too many metadata areas for pvresize
VGのmetadataのcopyが多すぎるってことらしいのですが、metadataのcopy数の指定はpvcreate時に行われるらしく、デフォルトは1なので1個しかないはずなんだけどな…vgdisplayするの忘れて値を保存してなかった…
で、調べたところ一応回避策がlinux-lvmのMLにありました。
Re: [linux-lvm] pvresize complains about too many metadata
https://archives.free.net.ph/message/20081130.123440.f5cf9c13.ja.html#linux-lvm
メタデータのバックアップを取って、PVを作り直せとのこと。結局以下のようなフローになりました。
- VG metadataのバックアップ
- fdiskでPVのパーティション拡張
- PVを削除
- PV新しいサイズで再作成(UUIDとVG metadata使用)
- VG metadataのリストア
- pvresizeによるVGの拡張
まず、VGメタデータのバックアップ。今回はrootvgだったので、SystemRescueCDでCDブートして実行しました。
vgcfgbackup -f /data/rootvgcfg.txt rootvg
fdiskは適当に。自分は/dev/sda3の後ろに100GB以上Free Areaを残していたので、これをすべて/dev/sda3として再作成しました。
次にPVを削除。vgremoveするのが怖かったので、強制PV削除にしました。どっちが安全なのかは調べてません。
pvremove -ff /dev/sda3
で、次にPVの再作成をします。このとき元のPVのuuidと、VGのcfg backupのファイルを使用します。PVのuuidはVGのcfgの中に書いてあるので焦らなくていいです。まぁ個別にpvdisplayで確認しておくのが、複数PVを使用していたり、別のサーバーで作業したりするのに便利だと思います。
pvcreate -v --uuid 44583ee5-c4ff-4f2c-84fe-0398d71de14d --restorefile /data/rootvgcfg.txt
次にVGのmetadataをリストアします。
vgcfgrestore -f /data/rootvgcfg.txt rootvg
これで、rootvgがリストアされます。ただし、今のままだと、VGのサイズは以前のままなので、最後にpvresizeでPVが拡張されていることをLVMに教えてあげます。VGの拡張なのにpvresizeってコマンドに違和感を感じますが…ちなみにIBM AIXなら"chvg -g"とかでPV拡張が反映されるのでそっちのほうがしっくりくるのですが。
pvresize /dev/sda3
これでVGも拡張されます。
LVM2の情報はRedHatの資料が詳しいです。
Red Hat Enterprise Linux 5 LVM Administration Guide
https://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Logical_Volume_Manager_Administration/index.html
SystemRescueCDはこちら。
SystemRescueCD
https://www.sysresccd.org/Main_Page