データを失うことなく暗号化されたLUKS LVMでディスクを交換する

データを失うことなく暗号化されたLUKS LVMでディスクを交換する

これは私のオフサイトrsyncバックアップサーバーの設定です。

Ubuntu 20.10、9つのハードドライブが含まれています。

ディスク /dev/sd[ah] はバックアップボリュームグループに属します。

システムは/dev/sdiにあります。

サーバーは次のとおりです。

  • ネットワーク制御スイッチを介して電源を入れます(そうしないと、グリッドから切断されます)。
  • Wake on LAN 設定済み
  • Dropbearが設定され、ネットワーク経由でcryptfsのロックを解除し、システムを起動するために使用できます。

初期LVM LUKS設定:

cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sda
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdb
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdc
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdd
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sde
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdf
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdg
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdh

cryptsetup luksOpen /dev/sda luks_sda
cryptsetup luksOpen /dev/sdb luks_sdb
cryptsetup luksOpen /dev/sdc luks_sdc
cryptsetup luksOpen /dev/sdd luks_sdd
cryptsetup luksOpen /dev/sde luks_sde
cryptsetup luksOpen /dev/sdf luks_sdf
cryptsetup luksOpen /dev/sdg luks_sdg
cryptsetup luksOpen /dev/sdh luks_sdh
pvcreate /dev/mapper/luks_sda
pvcreate /dev/mapper/luks_sdb
pvcreate /dev/mapper/luks_sdc
pvcreate /dev/mapper/luks_sdd
pvcreate /dev/mapper/luks_sde
pvcreate /dev/mapper/luks_sdf
pvcreate /dev/mapper/luks_sdg
pvcreate /dev/mapper/luks_sdh
vgcreate tiburon_backup_vg /dev/mapper/luks_sda

vgを生成するために追加の/dev/mapper/luks_sd*デバイスを追加しました。マウントポイントを使用してlvを作成しました。

各luks_sd *の/etc/crypttabを更新しました。

luks_sd[a-h] /dev/sd[a-h] /etc/luks-keys/luks_sd[a-h] luks

その後、initramfsを更新しました。

update-initramfs -uv
reboot

7年間、すべてが大丈夫でした。これまでは、不良セクタがますます多くなってきたので、/dev/sdfを置き換える必要がありました。

5TBのデータをコピーし、データを失うことなく進む方法がわかりません。

データの損失を防ぐために、これまで私が見つけたものは次のとおりです。

cryptsetup status

cryptswap1
luks_sde
Tiburon2--vg-root
luks_sda
luks_sdf                 #problematic luks disk
Tiburon2--vg-swap_1
luks_sdb
luks_sdg
tiburon_backup_vg-tiburon_backup          #problematic vg-lv
luks_sdc
luks_sdh
luks_sdd
sdb5_crypt

cryptsetup status luks_sdf

/dev/mapper/luks_sdf is active and is in use.
  type:    LUKS1
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: dm-crypt
  device:  /dev/sdf
  sector size:  512
  offset:  4096 sectors
  size:    3907025072 sectors
  mode:    read/write



umount /tiburon_backup

vgchange -a n tiburon_backup_vg

  0 logical volume(s) in volume group "tiburon_backup_vg" now active


pvmove /dev/mapper/luks_sdf

  Insufficient free space: 476931 extents needed, but only 1 available
  Unable to allocate mirror extents for tiburon_backup_vg/pvmove0.
  Failed to convert pvmove LV to mirrored.


#Therefore:
e2fsck -f /dev/mapper/tiburon_backup_vg-tiburon_backup


#FS/VG has 8TB, and 4TB is in use, therefore shrinking it to 5TB:

resize2fs -p /dev/mapper/tiburon_backup_vg-tiburon_backup  5T

Początkowy przebieg 2 (maksymalny = 262145)
Relokowanie bloków           XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Początkowy przebieg 3 (maksymalny = 40960)
Przeszukiwanie tablicy i-węzłówXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


lvreduce -L 5T /dev/mapper/tiburon_backup_vg-tiburon_backup

  WARNING: Reducing active logical volume to 5,00 TiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce tiburon_backup_vg/tiburon_backup? [y/n]: y
  Size of logical volume tiburon_backup_vg/tiburon_backup changed from <7,80 TiB (2043653 extents) to 5,00 TiB.
  Logical volume tiburon_backup_vg/tiburon_backup successfully resized.



e2fsck -f /dev/mapper/tiburon_backup_vg-tiburon_backup

e2fsck 1.45.6 (20-Mar-2020)
Przebieg 1: Sprawdzanie i-węzłów, bloków i rozmiarów
Przebieg 2: Sprawdzanie struktury katalogów
Przebieg 3: Sprawdzanie łączności katalogów
Przebieg 4: Sprawdzanie liczników odwołań
Przebieg 5: Sprawdzanie sumarycznych informacji o grupach
/dev/mapper/tiburon_backup_vg-tiburon_backup: 11/176128 plików (0.0% nieciągłych), 281453/1408000 bloków



ここで、pvscanは/dev/mapper/luks_sdfが空であることを示しています。

PV /dev/mapper/luks_sdf VG tiburon_backup_vg lvm2 [<1,82TiB / 1,82TiB使用可能]

今実行すると、次のようになります。

pvmove /dev/mapper/luks_sdf

そのPVの残りのブロックをvg内の他の利用可能なスペースにミラーリングする必要があります。そうですか? (それとも?)

その後、次のことを行う予定です。

vgchange -a n tiburon_backup_vg

cryptsetup close luks_sdf

vgreduce tiburon_backup_vg /dev/mapper/luks_sdf

pvremove /dev/sdf


#remove luks_sdf from /etc/crypttab

これはうまくいくでしょうか?それともLUKSのVMから欠陥のあるディスクを削除するより良い方法はありますか?

どんなアイデアでもありがとうございました。

ベストアンサー1

作業順序を少し変更する必要があります。

はい、pvmove割り当てられたブロックが残っている場合はこれが行われます。実際にLVMデータがまったくなくても/dev/mapper/luks_sdf問題はありません。

成功するとpvdisplay /dev/mapper/luks_sdf、フィールドに正確に同じ値が表示され、ゼロでなければなりません。Total PEFree PEAllocated PE

この時点では、以下を行う必要はありません。 VGから削除vgchange -a n tiburon_backup_vgするだけですvgreduce tiburon_backup_vg /dev/mapper/luks_sdf(LVMデータがないのでオンラインで実行できます)。

LVMはLUKSの上に配置されているため、これを行うことが重要です。今後 cryptsetup close luks_sdfなぜなら、システムは/dev/sdf次の暗号化されたコンテンツだけを見るからです。しようとすると、pvremove /dev/sdf削除するLVMヘッダーがないというメッセージが表示されます(無意味な暗号化されたデータのみが表示されるため)。

この場合、pvremove実行する必要はありません。ディスクがVGから削除されている限り、LVMはディスクが存在する必要はなく、ホットプラグでも問題ありません。 (ハードウェアが実際にホットプラグをサポートしていない場合は、ホットプラグを実行しないでください。)

終了する前に initramfs を削除、コメントアウト、更新することを/dev/sdf忘れ/etc/crypttabないでください。それ以外の場合、システムは起動時にLUKSを有効にしようとし、/dev/sdfディスクが見つからない(または新しいディスクが見つからないため)パニックモードになります。場所に既存のLUKSヘッダーがないディスク)。

おすすめ記事