2009年11月19日木曜日

Linux LVMでVGを拡張する(PVを拡張するパターン)

久々にLinuxネタ。Linux LVM2でVGを拡張(PV追加ではなく、PV自体を拡張)するときのメモ。

手順としては

  1. fdiskでPVのパーティション拡張

  2. pvresizeでPVを拡張

  3. 終わり


のはずだったんですが、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
http://archives.free.net.ph/message/20081130.123440.f5cf9c13.ja.html#linux-lvm

メタデータのバックアップを取って、PVを作り直せとのこと。結局以下のようなフローになりました。

  1. VG metadataのバックアップ

  2. fdiskでPVのパーティション拡張

  3. PVを削除

  4. PV新しいサイズで再作成(UUIDとVG metadata使用)

  5. VG metadataのリストア

  6. 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
http://www.sysresccd.org/Main_Page

0 件のコメント:

コメントを投稿