LVM:マルチディスク暗号化論理ボリュームを複製する方法は?

LVM:マルチディスク暗号化論理ボリュームを複製する方法は?

私はアーチLinuxを使用しています。単一のボリュームグループに2つのディスクで暗号化された論理ボリューム(LVMのLUKS)を複製したいと思います。小さな問題があります。一部のドライブを交換したいです。

私は持っています:

  • VG1:LV:PV(既存ドライブ1)+ PV(既存ドライブ2)
sda (OldDrive1)
    -vg1-luks_encrypted_lv
sdb (OldDrive2)
    -vg1-luks_encrypted_lv

2つの異なるドライブ(NewDrive1とNewDrive2)があります。 VG1のレプリカであるVG2を作成したいです。しかし、いくつかのドライブを交換したいと思います。だから私は以下が欲しい:

  • VG1:LV:PV(既存ドライブ1)+ PV(新しいドライブ1)
  • VG2:LV:PV(既存ドライブ2)+ PV(新しいドライブ2)
sda (OldDrive1)
    -vg1-luks_encrypted_lv
sdb (OldDrive2)
    -vg2-cloned_luks_encrypted_lv
sdc (NewDrive1)
    -vg1-luks_encrypted_lv
sdd (NewDrive2)
    -vg2-cloned_luks_encrypted_lv

現在の計画は各ドライブを複製することです。以前はddの使用を検討していましたが、少し読んだ後にpvmoveを使用する必要がありますか? :

  • 古いドライブ1 - >新しいドライブ1
  • 既存のドライブ2 - >新しいドライブ2

その後、ドライブはビット単位で複製されるため、LVMで物理ドライブを交換できますか?私が何かを逃しているのではないか心配です。ニュースドライブをLVにマージする方法は?データを失いたくないのでアドバイスを求めたいです。ありがとうございます。


編集する:

@telcoMの答えは非常に有効です。とても感謝しています。私はオンライン方式を使用しています。似たようなことをしたい人がいるなら、注目すべきいくつかのことがあります。

ステップ7で:

デフォルトはlvconvert -mlvm 独自のミラーシステムではなく raid1 です。詳細を読んでくださいman lvconvert。ミラーをすぐに分割したいので、lvmのレガシーミラーを使用してミラーログをメモリに保存する方がはるかに簡単です。

lvconvert --type mirror -m +1 --mirrorlog core vg1/luks_encrypted_lv OldDrive2 NewDrive2

--mirrorlog coreこれにより、ミラーログがメモリに保存されることに注意してください。したがって、実行する前にコンピュータをシャットダウンしないでください。lvconvert --splitmirrorsそうしないと、ミラーログファイルが失われます。

ステップ9で:

これを行う前に、次のものがvgsplit必要です。ファイルシステムをアンマウントし、論理ボリュームを無効にします。

ステップ11で:

$uuidほとんどの人はおそらくこれを知っているでしょう。ただし、実行する前にUUIDを割り当てる必要がありますcryptsetup luksUUID --uuid $(uuid) /dev/mapper/VG2-LVx。次のことを実行して起動しますuuid=$(uuidgen)

答え1

「必要」は強い言葉です。欲しいものを達成する方法はいくつかあります。

を使用すると、pvmove暗号化されたLVを使用しながらオンラインで作業できます。

1.)pvcreate新しいドライバ 1

2.)vgextend VG1 NewDrive1

3.)pvmove OldDrive2(実質的に意味:「可能であれば、OldDrive2が完全に割り当て解除されるように、LVM割り当て範囲をOldDrive2からVG1の他のドライブに移動します。」と時間がかかります。erboseオプションを使用してセッションをscreen追加できます。) 。tmux-v

4.) OldDrive2 を使用するか、pvs完全pvdisplay OldDrive2に割り当てられていないことを確認してください。

5.)pvcreate NewDrive2

6.)vgextend VG1 NewDrive2

7.)VG1の各LVについて:(lvconvert -m +1 VG1/LVx OldDrive2 NewDrive2「VG1 / LVxでミラーを作成し、OldDrive2とNewDrive2にミラースペースを割り当てます」)。ディスクにミラーログ用のスペースがない場合は、--mirrorlog coreここでオプションを使用する必要があります。

8.) ミラーが同期したら、VG1 の各 LV に対して次の操作を行います。lvconvert --splitmirrors 1 --name LVcopyx VG1/LVx OldDrive2 NewDrive2("OldDrive2および/またはNewDrive2のLVxミラーを分割し、名前の競合を避けるために、名前を"LVcopyx"と指定します。)

9.) vgsplit VG1 VG2 OldDrive2 NewDrive2("VG1 から OldDrive2 と NewDrive2 を切り離し、対応する LV を削除した後、新しい VG の名前を VG2 とします。")

10.)VG2の各LVについて:lvrename VG2 LVcopyx LVx元のLV名を復元します。これでコピーが独自のVGに分割され、競合がなくなりました。ステップ8でLVミラーが分割されたときに存在したので、VG1のLVコピーを含む新しいVG2が作成されました。 )。

11.)実際にVG2を使用する前に、VG1とは異なるユニークなUUIDを割り当てる必要がありvgchange -ay VG2cryptsetup luksUUID --uuid $(uuid) /dev/mapper/VG2-LVx暗号化のロックを解除した後は、その中のファイルシステムにも新しいUUIDを割り当てる必要があります。 BtrFSの場合、これは非常に重要です(btrfstune -u /dev/mapper/VG2-LVx-crypt)。他のファイルシステムの場合、これは基本的にUUIDベースのインストールが機能できるようにするための便利なものです。


VGをオフラインにしてディスクを取り外して再接続できる場合は、次のこともできます。

1.)cryptsetup luksCloseVG(vgchange -an VG1)を削除して無効にします。起動やホットプラグ時に不要な自動アクティベーションを防ぐために、エクスポートされたものとしてマーク(vgexport VG1)してください。

2.) 計画に従ってドライブを複製します。

3.)システムがOldDrive2とNewDrive2のみを表示できるように、ドライブを取り外します。ハードウェアでホットスワップを許可する場合は、echo 1 > /sys/block/<device name>/device/deleteエレガントなホットスワッピングを使用してください。

4.) システムを起動するか、vgscan通常のホットプラグ後に実行します。次に、VGをインポートして名前を変更し、を使用してvgimport VG1新しいVG2に古いVG1とは異なる新しいIDを提供し、をvgrename VG1 VG2使用してPVレベルで同じ操作を実行します。インポートして名前を変更したら、VGをインストールするか、他の作業を実行する前にVGを有効にする必要があることに注意してください。vgchange --uuid VG2pvchange --uuid OldDrive2pvchange --uuid NewDrive2vgchange -ay VG2

5.)VGを有効にした後、cryptsetup luksUUID --uuid=$(uuid) /dev/mapper/VG2-LVxdoを使用してLUKSコンテナに一意の新しいIDを付与し、暗号化のロックを解除した後、ファイルシステム固有のツールを使用してファイルシステムレベルで同じ操作を実行します。 (これはBtrFSにとって特に重要です。 btrfstune -u /dev/mapper/VG2-LVx-crypt)

vgscan6.)これで、OldDrive1とNewDrive1(ホットプラグされた場合に使用されます)を再接続し、を使用してvgimport VG1「再び」を有効にすることができますvgchange -ay VG1。これで、必要に応じて使用できる2つの完全に独立したVGが作成されました。

答え2

dd clone プロセス中に LUKS コンテナーを終了できる場合、ステップは次のようになります。

  • VG1にNewDrive1を追加
  • 「pvmove OldDrive2 NewDrive1」を使用してください。
  • VG1からOldDrive2を削除する
  • OldDrive2 + NewDrive2を使用してVG2を作成する
  • VG2で目的のLVを作成
  • dd VG1/LV -> VG2/LVを使う

同じマシンで2つのコピーを使用する場合は、LUKSコンテナと含まれているファイルシステムのUUIDも変更する必要があります。この点を指摘してくれた@telcoMに感謝します!

関連情報