누락된 Btrfs RAID-1 장치 교체 - btrfs 교체 및 균형 조정?

누락된 Btrfs RAID-1 장치 교체 - btrfs 교체 및 균형 조정?

최근에 디스크를 교체해야 했기 때문에 두 개의 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

그래서 내 기대는 다음과 같습니다.

  • 하나의 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 파일 시스템의 두 다리를 모두 교체하는 것입니다. 즉, 두 단계로 수행합니다. 먼저 왼쪽 다리, 그 다음 오른쪽 다리입니다.
  • 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

왜 경고가 두 번 반복되는지 모르겠습니다.

두 번째 예

동일한 시스템의 다른 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

설치가 다운그레이드될 때 기록된 모든 데이터는 결국 단일 또는 이중 프로필에 저장될 수 있습니다. 균형 잡힌 실행은 그러한 데이터도 미러링되도록 보장합니다.

관련 정보