LVMボリュームグループのマージ

LVMボリュームグループのマージ

状態:

私のサーバーには、次のようにLVMに4つの1TBドライブがあります。サーバーは、12個以上のopenvzコンテナを持つopenvzハードウェアノードです。現在、コンテナごとに1つのディスクのみが使用されます。これは、当時のほとんどのディスクIO負荷を制御し、分離したままにするように設計されています。

# pvdisplay -s
  Device "/dev/sdd1" has a capacity of 227.51 GiB
  Device "/dev/sdc1" has a capacity of 427.51 GiB
  Device "/dev/sdb1" has a capacity of 427.51 GiB
  Device "/dev/sda2" has a capacity of 407.02 GiB

ATM 各 PV は独自の個別の VG に設定されます。

# vgdisplay -s
  "vg04" 931.51 GiB [704.00 GiB used / 227.51 GiB free]
  "vg03" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg02" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg01" 931.02 GiB [524.00 GiB used / 407.02 GiB free]

これらのVGの上には多くのLVがあります。

# lvdisplay | grep Name
  LV Name                /dev/vg04/swap
  VG Name                vg04
  LV Name                /dev/vg04/vz
  VG Name                vg04
  LV Name                /dev/vg03/swap
  VG Name                vg03
  LV Name                /dev/vg03/vz
  VG Name                vg03
  LV Name                /dev/vg02/swap
  VG Name                vg02
  LV Name                /dev/vg02/vz
  VG Name                vg02
  LV Name                /dev/vg01/swap
  VG Name                vg01
  LV Name                /dev/vg01/root
  VG Name                vg01
  LV Name                /dev/vg01/vz
  VG Name                vg01

質問:

1つのコンテナが負荷を処理するために2つのディスクに分割する必要があるほど大きくなりました。

基本的に、2つのLV(/dev/vg03/vzと/dev/vg04/vz)を2つのディスクに分散した1つのLVにマージしたいと思います。

どうすればこれを最良に達成できますか? vgmergeはこれを行うことができますか? vgmergeのマンページはやや簡単で、その使用の詳細な説明が見つかりません。

最終的には物を移動して目標を達成することができますが、稼働中のデータが多く、実稼働サーバーなので、可能であればこれを避けようとします。

答え1

あなたの質問を正しく読んだら、実際にやりたいことは、2つのLVを別々のVGにマージすることです。これを行うには、あるLVから別のLVにデータを移動する必要があり、LVを直接マージする方法はありません。

だからあなたは一種のダウンタイムを見ています。

以下を実行してこれを制限できます。 LVA - すぐに大きくなる論理ボリューム LVB - すぐに削除される論理ボリューム

  1. LVBをLVAの位置にrsync(最も時間がかかります)
  2. **ダウンタイム開始** - リモートアクセスを無効にする
  3. 最後のrsyncを実行して、LVAのすべてのデータが最新であることを確認してください。
  4. リアルタイム放送の削除
  5. LVBがインストールされているかのように、LVAの同期データをその場所に移動します(これはLVAにある必要があるため、mvは単にinode操作であるため、非常に短いです)。
  6. **ダウンタイム終了** - リモートアクセスが再び有効になりました
  7. レジャー時にはライブ放送を中止し、VGB VGMergeをVGAに変更してください。
  8. その後、LVAを拡張できます(ファイルシステムをオンラインで拡張することもできます)。

答え2

2つのVGをマージできますが、最初に削除して再作成しないと、LVをlinearLVに変換することはできません。striped

いずれにせよ、ループデバイスを使用してディスク容量をほとんど占有しないスパースファイルを簡単にテストできます。

truncate -s500G a
truncate -s500G b
sudo losetup /dev/loop0 a
sudo losetup /dev/loop1 b
sudo pvcreate /dev/loop0
sudo pvcreate /dev/loop1
sudo vgcreate A /dev/loop0
sudo vgcreate B /dev/loop1
sudo lvcreate ...

答え3

論理ボリュームをすべて破壊せずにスペースを再構成した後、新しいLVを作成せずに/dev/vg03/vzこれを行う方法がわかりません。/dev/vg04/vz

次の戦略は、(テストされていない)他のボリュームのダウンタイムなしで必要な構成を取得できる必要があります。削除する最大LVサイズまで、スクラッチディスクに一時スペースを残す必要があります。

  1. 削除する 2 つの LV のすべてのデータをバックアップします。
  2. LV(lvchange -an)を無効にします。
  3. スクラッチスペース()に物理ボリュームを作成しますpvcreate
  4. vg03()にスクラッチスペースを追加しますvgextend。端の範囲をvg03スクラッチスペースに移動します(適切なパーティション指定子と正しい範囲番号に置き換えますpvmove /dev/sdXX:MMM-NNN)。新しいストライプLVで使用できるように変換する範囲を移動します。sdXXMMMNNN
  5. pvresize最後に解放したばかりのボリュームグループの物理ボリュームを縮小するために呼び出されます。
  6. 縮小した物理ボリュームを含むパーティションを縮小するには、fdiskまたはを使用します。partedこれにより、残りのスペース用の新しいパーティションが作成されます。
  7. 再度呼び出すと、pvmoveステージング空間のすべてのデータが元の(現在縮小された)PVに戻ります。
  8. 前の手順4を繰り返しますvg04。その後、もはやスクラッチスペースは必要ありません。
  9. 今何もない2つの新しいパーティションがありました。これを物理ボリューム(pvcreate)に変換し、両方のPVのボリュームグループ()を作成しますvgcreate
  10. 新しいVGにストライプLVを作成します。

関連情報