2つのディスク上のbtrfs raid1を2つのluks暗号化ディスク上のbtrfs raid1に変換します。

2つのディスク上のbtrfs raid1を2つのluks暗号化ディスク上のbtrfs raid1に変換します。

同じサイズの2つの大容量ハードドライブで構成されるbtrfs raid1があります。さて、同じハードドライブ上の2つの暗号化Luksデバイスで構成されているbtrfs raid1にデータを移行したいと思います。バックアップ用に別のボックスに別々のデータコピーがあります。私の計画はraid1から1つのデバイスを削除し、削除されたデバイスにluksボリュームを作成し、luksデバイスにbtrfsファイルシステムを作成し、データを新しいデバイスにコピーし、2番目のデバイスにluksボリュームを作成し、2番目のデバイスを追加することです。暗号化されたbtrfsシステム。

これは合理的に聞こえますか?これについてアドバイスがある人はいますか?それとも、マイグレーションのために3番目のハードドライブを購入する方が良いでしょうか?

ベストアンサー1

私の質問に答えるために、スペアハードドライブで次の実験を行いました。有効で回復可能なバックアップがあることを確認してください。たとえば、誤ったデバイスに適用すると、これらのコマンドは貴重なデータを回復できないほど破壊する可能性があります。

テストシステムの作成

まず、使用する2つのパーティションが必要です。 fdiskを使用してパーティションを作成して、次のようにします。

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1           2048 20973567 20971520  10G 83 Linux
/dev/sda2       20973568 41945087 20971520  10G 83 Linux

次に、暗号化されていないbtrfs raid1を作成しました(パーティションを使用している場合は、-fを強制的に実行する必要がありますが、実行中の操作が何であるかを確認する必要があります)。

> mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sda2

...

Devices:
   ID        SIZE  PATH
    1    10.00GiB  /dev/sda1
    2    10.00GiB  /dev/sda2

その後、利用可能なライブシステムを持つためにファイルシステムをマウントし、テストファイルを作成しました。

> mount /dev/sda1 /mnt/tmp
> echo "Hello World" > /mnt/tmp/hello.txt

移行する

後でデバイスをより小さな暗号化バージョンに置き換えることができるように、ファイルシステムのサイズを変更することから始めます。

> btrfs fi resize 1:9G /mnt/tmp
> btrfs fi resize 2:9G /mnt/tmp

その後、システムから重複エントリを削除します(データ損失のリスクが増加するため、強制実行が必要です)。大容量ファイルシステムでは、すべてのデータを書き換えるため、時間がかかります。で進行状況を確認できますbtrfs balance status /mnt/tmp

> btrfs balance start -mconvert=single -dconvert=single /mnt/tmp --force
Done, had to relocate 3 out of 3 chunks

その後、いずれかのデバイスを削除できます。時間がかかる場合はチェックステータスを使用できますbtrfs device usage /mnt/tmp

> btrfs device remove 1 /mnt/tmp
> btrfs device usage /mnt/tmp
/dev/sda2, ID: 2
   Device size:            10.00GiB
   Device slack:            1.00GiB
   Data,single:             1.00GiB
   Metadata,single:       256.00MiB
   System,single:          32.00MiB
   Unallocated:             7.72GiB

次にLUKSデバイスに変換します。

> cryptsetup luksFormat /dev/sda1
> cryptsetup luksOpen /dev/sda1 crypt_1

暗号化されたデバイスをファイルシステムに追加し、他のデバイスを削除します。

> btrfs device add /dev/mapper/crypt_1 /mnt/tmp
> btrfs device remove /dev/sda2 /mnt/tmp

データ量の多いファイルシステムでは、すべてのデータを移動する必要があるため、時間がかかります。

その後、他のデバイスをLUKSに変換してファイルシステムに再度追加し、Raid1に再調整します。

> cryptsetup luksFormat /dev/sda2
> cryptsetup luksOpen /dev/sda2 crypt_2
> btrfs device add /dev/mapper/crypt_2 /mnt/tmp
> btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/tmp
Done, had to relocate 3 out of 3 chunks

もちろん、データが多いと、最後のコマンドにも時間がかかります。結果を確認しましょう。

> btrfs filesystem show /mnt/tmp
Label: none  uuid: e894df1a-b62f-49cb-bcdc-8e6eb25945a4
        Total devices 2 FS bytes used 448.00KiB
        devid    3 size 9.98GiB used 1.28GiB path /dev/mapper/crypt_1
        devid    4 size 9.98GiB used 1.28GiB path /dev/mapper/crypt_2
> btrfs filesystem df /mnt/tmp
Data, RAID1: total=1.00GiB, used=320.00KiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B

見て、私たちはまだデータを含む2つの暗号化されたデバイスにRAID 1を持っています!

> cat /mnt/tmp/hello.txt 
Hello World

おすすめ記事