物理ボリュームのエクステントを古い SAN から新しい SAN に移動するには、pvmove を使用する必要があります。この種の移行は、手動でミラーを作成して操作することによって行う必要があるというのはよくある誤解です。これは正しくなく、リスクにさらされます。 pvmove は、この機能を容易にするように設計されており、ミラーを手動で使用するよりもはるかに安全です。問題が発生した場合、pvmove は安全に中止できます。対照的に、ミラーの操作に起因する問題は、ダウンタイムにつながり、LVM スタックの診断と修復が必要になる場合があります。
一般的な手順は次のとおりです。
- 新しい LUN をシステムに接続します。
- 新しい LUN に新しい物理ボリュームを作成し、vgextend を使用して既存のボリューム グループに追加します。
- pvmove を使用して、移動元 PV を移動先 PV に移動します。 pvmove オプション「–atomic」[1] が存在する場合、プロセス全体で追加の安全性が確保されます。
- pvmove が完了したら、vgreduce を使用して古い PV を削除します。現在は空になっているはずです。
- サーバーから古い LUN を廃止する
pvmove コマンドの例
1. 割り当てられた PE を 1 つ以上の他の物理ボリュームに移動するには:
# pvmove
2. 進行中の pvmove を中止するには:
# pvmove --abort
3. pvmove をバックグラウンドで実行するには:
# pvmove -b # pvmove --background
lvs -a -o +devices の出力 Copy% 列にバックグラウンド pvmove の進行状況が表示されます。
また、いつでも pvmove -iX を実行できます。ここで、X は進行状況を報告する間隔 (秒単位) です。たとえば、pvmove -i5 は 5 秒ごとに進行状況を報告します。この進捗レポートはキャンセルして、いつでも再開できます。
4. 進捗状況を報告するには:
# pvmove -i 1 # pvmove --interval 1
5. 特定の PV から LV に属するエクステントのみを移動するには:
# pvmove -n LV00 # pvmove -n LV00
6. PV を自動バックアップするには:
# pvmove -A y # pvmove --autobackup y
7. pvmove ヘルプを表示するには:
# pvmove --help
8. pvmove をテストするには:
# pvmove -t # pvmove --test
9. 詳細モードに設定するには:
# pvmove --verbose
注意
pvmove がなんらかの理由 (マシンのクラッシュなど) で中断された場合は、PhysicalVolume 引数を指定せずに pvmove を再度実行して、最後のチェックポイントから進行中だった移動を再開します。 pvmove の man ページにも同じ情報が記載されています。
pvmove が以下のエラーで失敗した場合:
lvm pvmove /dev/mapper/mpathm Skipping locked LV testlv All data on source PV skipped. It contains locked, hidden or non-top level LVs only. No data to move for testvg(volume group)
他の pvmove コマンドが同時に実行されていないか確認してください。 lv で実行できる pvmove 操作は 1 つだけです。複数の pvmove を同時に形成することはできません。以下のコマンドを使用して、pvmove コマンドのステータスを確認してください:
# pvmove -i1 /dev/mapper/mpathd: Moved: 5.16% /dev/mapper/mpathd: Moved: 10.91% /dev/mapper/mpathd: Moved: 16.07% /dev/mapper/mpathd: Moved: 21.03% /dev/mapper/mpathd: Moved: 26.98%Linux での pvremove コマンドの例