3개의 드라이브(8TB, 4TB, 3TB)가 있습니다. 처음에는 8TB 드라이브에 btrfs 파티션을 만들고 거기에 모든 데이터를 복사했습니다. btrfs 장치 추가를 사용하여 4TB 및 3TB 드라이브를 추가한 후 밸런싱 변환을 실행했습니다.
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
이제 균형 조정이 완료되었지만 여전히 원래 드라이브의 "단일" 및 "DUP" 모드에서 일부 데이터가 표시됩니다. 이것은 다음의 출력입니다 btrfs fi usage /mnt/btrfs
.
Overall:
Device size: 13.37TiB
Device allocated: 4.62TiB
Device unallocated: 8.75TiB
Device missing: 0.00B
Used: 4.60TiB
Free (estimated): 4.98TiB (min: 4.38TiB)
Data ratio: 1.76
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,single: Size:645.00GiB, Used:645.00GiB
/dev/mapper/8TB 645.00GiB
Data,RAID1: Size:1.98TiB, Used:1.98TiB
/dev/mapper/3TB 551.00GiB
/dev/mapper/4TB 1.44TiB
/dev/mapper/8TB 1.98TiB
Metadata,RAID1: Size:8.00GiB, Used:3.84GiB
/dev/mapper/4TB 8.00GiB
/dev/mapper/8TB 8.00GiB
Metadata,DUP: Size:7.00GiB, Used:6.41GiB
/dev/mapper/8TB 14.00GiB
System,DUP: Size:8.00MiB, Used:400.00KiB
/dev/mapper/8TB 16.00MiB
Unallocated:
/dev/mapper/3TB 2.19TiB
/dev/mapper/4TB 2.19TiB
/dev/mapper/Seagate_Archive_8TB-btrfs 4.37TiB
질문:
- 데이터가 있나요?아니요여러 디스크에 저장되나요? 즉, 디스크에 장애가 발생하면 데이터가 손실됩니까? 그렇다면 어떻게 이 느린 "단일" 스토리지 데이터를 RAID1에 강제로 넣을 수 있습니까?
- "단일" 및 "DUP" 데이터 저장소가 불필요하고 이제 모든 것이 RAID로 전환되었다고 가정하면 이를 지울 수 있는 방법이 있습니까?
편집: 다음은 일부 시스템 정보입니다.
uname -a
Linux 4.8.0-0.bpo.2-amd64 #1 SMP Debian 4.8.11-1~bpo8+1 (2016-12-14) x86_64 GNU/Linux
btrfs --version
btrfs-progs v4.9
또한 이 컴퓨터는 균형 조정 중에 재부팅되었고 다시 작동했을 때 btrfs 볼륨을 전혀 마운트할 수 없었습니다(그냥 중단되었습니다). 다양한 마운트 매개변수(skip-param, 복구)를 시도했지만 효과가 있었던 유일한 방법은 읽기 전용으로 마운트하는 것이었습니다( 를 사용하여 -o ro
). 약간의 좌절 끝에 최신 커널과 btrfs 프로그램이 포함된 Antergos 라이브 USB로 부팅했는데 문제 없이 설치되었습니다. 자동으로 시작된 밸런싱 작업을 일시 중지하고 데비안으로 다시 부팅했는데 설치가 잘 되어서 다시 밸런싱을 복원했습니다.
답변1
btrfs irc 사용자의 도움으로 질문 (1)에 답할 수 있었습니다. 재부팅 및 설치 시도 실패와 관련이 없는 것 같습니다(아직도 그것이 무엇인지 확실하지 않음). 대신 "단일"로 저장된 645GB의 데이터는 raid1 변환이 시작된 후 btrfs 볼륨에 추가된 데이터인 것으로 보입니다. 따라서 btrfs fi usage
변환 후 모든 데이터가 raid1로 저장된다고 가정하기 전에 출력을 확인하는 것이 좋습니다. 또한 "소프트" 필터를 사용하면 대상 프로필에 따라 저장되지 않은 데이터의 균형을 재조정할 수 있습니다. 예를 들어 다음을 실행했습니다.
btrfs balance start --bg -mconvert=raid1,soft /mnt/btrfs
btrfs balance start --bg -dconvert=raid1,soft /mnt/btrfs
(btrfs irc 포럼의 사용자가 제안한 대로 먼저 메타데이터에 대한 밸런싱을 수행한 다음 데이터에 대한 밸런싱을 수행합니다.) 이는 나머지 데이터를 raid1로 변환하는 중입니다.
또한 질문 (2)에 대한 대답은 raid1 파일 시스템에 일부 "단일" 블록이 있을 수 있지만 그 사용량은 0이어야 한다는 것입니다. 이런 일이 발생하면 다음을 실행하여 정리할 수 있습니다.
btrfs balance start -dusage=0 -musage=0 /mnt/btrfs
(바라보다btrfs FAQ)