BTRFS raid1 구성에 동일한 크기의 드라이브가 4개 있습니다. 다른 시스템에서 사용할 수 있도록 두 개의 드라이브를 확보하고 싶습니다.
나는 BTRFS가 이 작업을 수행할 수 있다고 확신하지만, 이를 올바르게 수행하는 방법을 잘 모르겠습니다.
FWIW 다른 곳에 모든 데이터를 백업했습니다.
답변1
저는 4개의 작은 LVM 논리 볼륨으로 구성된 임시 파일 시스템에서 이 프로세스를 빠르게 테스트했습니다. 첫 번째 질문은 미러링을 계속하시겠습니까(용량을 줄이시겠습니까)?
아래의 모든 내용 «PATH»
은 btrfs 파일 시스템의 마운트 지점입니다. 이는 모두 온라인 작업입니다.
데이터 미러링을 원하지 않는 경우(예: 축소된 용량에 맞지 않기 때문에):
미러를 제거하고 파일 시스템을 미러가 없는 상태로 변환합니다. 기본적으로 이는 중복 메타데이터이자 데이터의 단일 복사본입니다. 그러나 여전히 두 개의 디스크가 있으므로 raid1 메타데이터가 더 적합합니다. 재조정을 통해 이를 수행할 수 있습니다. 여기서 "소프트"는 필요한 청크 그룹만 변환됨을 의미합니다. 예를 들어 이미 raid1인 메타데이터는 건드리지 않습니다. (이미 "단일"인 데이터와 동일합니다. 이 작업을 중간에 취소하고 나중에 다시 시작하면 이런 일이 발생할 수 있습니다.)
btrfs balance start -mconvert=raid1,soft -dconvert=single,soft «PATH»
Balance는 (기본적으로) 포그라운드에서 실행됩니다. --background
터미널을 복원할 수 있습니다(그리고 Check Status를 사용할 수 있습니다 btrfs balance status «PATH»
). 상태 메시지는 dmesg(커널 로그 및/또는 systemd 로그 포함)에도 인쇄됩니다. btrfs는 데이터 이동을 좋아합니다 ☹.
다음으로 btrfs에게 디스크 사용을 중지하라고 지시합니다.. 거울로 보관하든 안 하든 상관없이 이 작업을 수행할 수 있습니다.
이제 btrfs 파일 시스템에서 다른 두 개의 디스크를 제거할 수 있습니다. 또한 많은 양의 데이터가 이동되므로 시간이 다소 걸립니다. 두 디스크를 동시에 삭제할 수 있으며 삭제해야 합니다. 그렇지 않으면 다음에 삭제하는 디스크로 데이터가 이동될 수 있습니다.
btrfs device remove /dev/disk1 /dev/disk2 «PATH»
디스크/파티션 장치는 마운트 지점 앞에 있습니다. 이것은 다시 온라인 작업입니다. 커널 로그에서 상태를 볼 수 있습니다.
완료되면 시스템에서 디스크를 제거할 수 있습니다.