最近ディスクを交換する必要があるため、2つのBtrfs RAID-1ファイルシステムでデバイスを交換しました。
これが私がする方法です:
mount -o noatime,degraded /dev/sda3 /mnt/tmp
btrfs fi show /dev/sda3
btrfs replace start -B 1 /dev/nvme0n1p3 /mnt/tmp
btrfs replace status /mnt/tmp
btrfs fi show /dev/sda3
btrfs fi show /mnt/tmp
btrfs scrub start -B /mnt/tmp
mount -o noatime /dev/sda3 /mnt/tmp
ls /mnt/tmp
btrfs fi show /mnt/tmp
umount /mnt/tmp
これは次のことを意味します。
btrfs replace
すでにマウントされているファイルシステムのデバイス交換のみがサポートされているようで、デバイスをマウントしました。btrfs fi show
どのデバイスIDが欠落しているかを確認しました(1
この場合)。- それで、失われたデバイスを新しいディスク上のデバイス
1
と交換しました。nvme0n1p3
- 最終ショーはよさそうだし、Scrubsでも不満はなかった。
- プログラムが正常に実行された後のアンインストールとインストール(ダウングレードなし)
- このコマンドまたはカーネルログにエラーが報告されていません。
ただし、前の脚(例:/ dev / sda3)を削除した後は、ファイルシステムをマウントできなくなります。
mount -o noatime,degraded /dev/nvme0n1p3 /mnt/tmp
mount: /mnt/tmp: wrong fs type, bad option, bad superblock on /dev/nvme0n1p3, missing codepage or helper program, or other error.
失敗:
Dec 22 09:41:34 BTRFS info (device nvme0n1p3): allowing degraded mounts
Dec 22 09:41:34 BTRFS info (device nvme0n1p3): disk space caching is enabled
Dec 22 09:41:34 BTRFS info (device nvme0n1p3): has skinny extents
Dec 22 09:41:34 BTRFS warning (device nvme0n1p3): devid 2 uuid f9c9c081-0fdc-4b61-8329-c1addb51e3fe is missing
Dec 22 09:41:34 BTRFS error (device nvme0n1p3): failed to read chunk root
Dec 22 09:41:34 BTRFS error (device nvme0n1p3): open_ctree failed
だから私の期待は次のとおりです。
- 1つの
btrfs replace
コマンドで、RAID-1 btrfsファイルシステムから欠落しているデバイスを交換できます。 - 特に、
btrfs replace
残りのデータ/メタデータは新しく追加されたデバイスにコピーされます。
btrfs replace
これがうまくいかないため、aが常に十分かどうかはもうわかりません。
btrfs replace
後で明確なバランスが必要でしょうか?
たとえば、このような方法ですか?
btrfs balance start -dconvert=raid1,soft -mconvert=raid1,soft /mnt/tmp
追加情報:
- したがって、全体的な目標は、RAID-1 btrfsファイルシステムの両方の脚を交換することです。つまり、2つのステップで行います。まず左脚、次に右脚です。
- Fedora 33(カーネル5.8.18-300.fc33.x86_64およびbtrfs-progs-5.7-5.fc33.x86_64)で交換が完了しました。
- BtrfsファイルシステムはUbuntu 20.04で作成されました。
btrfs rescue chunk-recover
役に立たない
現在のbtrfs fi show
レポートは次のとおりです。
btrfs fi show /dev/nvme0n1p3
warning, device 2 is missing
warning, device 2 is missing
bad tree block 934674432, bytenr mismatch, want=934674432, have=0
ERROR: cannot read chunk root
Label: none uuid: 1c1a03db-38c2-4b08-a2ec-47d200f98b0a
Total devices 2 FS bytes used 196.62MiB
devid 1 size 1.00GiB used 758.38MiB path /dev/nvme0n1p3
*** Some devices missing
なぜ警告が2回繰り返されるのかわかりません。
2番目の例
同じシステム上の他のBtrfs RAID-1ファイルシステムから欠落しているディスクを交換すると、同様の方法で失敗します。
交換手順:
mount -o noatime,degraded /dev/mapper/new-root-1 /mnt/tmp
btrfs fi show /mnt/tmp
btrfs replace start -B 1 /dev/mapper/new-root-0 /mnt/tmp
journalctl -fk
btrfs fi show /mnt/tmp
btrfs scrub start -B /mnt/tmp
umount /mnt/tmp
もう一方の脚を取り外した後、インストールは失敗します。
mount -o noatime,degraded /dev/mapper/new-root-0 /mnt/tmp
mount: /mnt/tmp: wrong fs type, bad option, bad superblock on /dev/mapper/new-root-0, missing codepage or helper program, or other error.
インストール中に記録されたエラー:
Dec 22 09:57:12 BTRFS info (device dm-1): allowing degraded mounts
Dec 22 09:57:12 sos.lru.li kernel: BTRFS info (device dm-1): disk space caching is enabled
Dec 22 09:57:12 BTRFS info (device dm-1): has skinny extents
Dec 22 09:57:12 BTRFS warning (device dm-1): devid 2 uuid 3093e508-17e0-4f5c-af13-642954e6fd9b is missing
Dec 22 09:57:12 BTRFS warning (device dm-1): devid 2 uuid 3093e508-17e0-4f5c-af13-642954e6fd9b is missing
Dec 22 09:57:12 BTRFS info (device dm-1): bdev (efault) errs: wr 0, rd 8, flush 0, corrupt 0, gen 0
Dec 22 09:57:12 BTRFS warning (device dm-1): chunk 69823627264 missing 1 devices, max tolerance is 0 for writable mount
Dec 22 09:57:12 BTRFS warning (device dm-1): writable mount is not allowed due to too many missing devices
Dec 22 09:57:12 BTRFS error (device dm-1): open_ctree failed
デバイスの紛失警告はここで4回繰り返されます。
btrfs fi show /dev/mapper/new-root-0
warning, device 2 is missing
warning, device 2 is missing
warning, device 2 is missing
warning, device 2 is missing
Label: none uuid: 3e861d70-9a98-402d-8bbc-ddec6f869433
Total devices 2 FS bytes used 62.81GiB
devid 1 size 231.67GiB used 65.01GiB path /dev/mapper/new-root-0
*** Some devices missing
答え1
インストールがダウングレードされたときに記録されたすべてのデータは、最終的にシングルプロファイルまたはデュアルプロファイルに保存できます。バランスの取れた実行は、そのようなデータもミラーリングされることを保証します。