LVM の長所の 1 つにこれが上げられます。あるディスクでエラーが出はじめたら、 データをぼちぼち移動しなければいけません。LVM を利用すると、とても簡単に 実行できます。 まずはじめに典型的な交換作業の例をあげます。少なくとも、交換したいだけの 容量を持つディスクをシステムに追加してみます。
データを移動するには、ボリューム・グループの物理エクステントを他のディスク、
より正確には物理ボリュームに移動することになります。これを行うには LVM で
行うには pvmove
ユーティリティを使用します。
おかしなディスクを /dev/hda1 として、これを /dev/sdb3 に置き換えることにしま しょう。まず /dev/sdb3 を /dev/hda1 が属しているボリューム・グループを追加 します。
この作業を行う前に、このボリューム・グループに属するファイルシステムのマウント を外してください。フル・バックアップをとればなお安全です。
FIXME: これは必要か?
では pvmove
を実行してみましょう。とても簡単に実行できるので、
外そうとしているディスクに注意を集中してください。実行は下記のように
なります。
# pvmove /dev/hda1
pvmove -- moving physical extents in active volume group "test1"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "test1"
pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved
この警告に注意してください。というのも、カーネルと LVM それぞれいくつかの バージョンでは、このコマンドで問題が生じます。2.3.99pre6-2 でテストして、 うまく動きましたが、警告が出ました。
これで物理エクステントは /dev/hda1 のどこにも存在しなくなったたので、 ボリューム・グループから外すことができます。
# vgreduce test1 /dev/hda1
vgreduce -- doing automatic backup of volume group "test1"
vgreduce -- volume group "test1" successfully reduced by physical volume:
vgreduce -- /dev/hda1
FIXME:いくつかはっきりさせる必要がある。ボリューム・グループはアクティブ にしておくべきか? データが失われるのはどんな場合か?
ディスクか何の警告もなしに壊れて、そのディスクの物理エクステントを他の物理 ボリュームに移行できなかった場合には、壊れてしまった物理ボリュームの論理 ボリュームをミラーしていなければ、データが壊れてしまうでしょう。適切な対応方法 は、壊れた物理ボリュームとまったく同じものと交換するか、最低でも同じ大きさの パーティションに交換するかのどちらかです。
/etc/lvmconf ディレクトリには LVM に関するデータと構成がバックアップされて います。構成とは、ディスクの物理ボリュームへの割り当てと物理ボリュームが 属しているボリューム・グループ、どの論理ボリュームがそのボリューム・グループ に入っているかの一覧から成ります。
壊れたディスクを交換した後、vgcfgrestore
コマンドを使って LVM の
データを新しい物理ボリュームに復活させます。この作業でボリューム・グループ
をはじめ、すべての情報を復活できますが、論理ボリュームのデータは復活しません。
その理由は、LVM のコマンドの大部分が、変更が加わった時点で自動的に LVM 関連の
データをバックアップしているからです。