btrfs 및 dd를 사용하여 하드 드라이브를 복제했습니다. 이제 "원본" 드라이브를 마운트하는 동시에 복제된 드라이브를 마운트하고 싶습니다.
mount /dev/sdc /mnt/tmp
mount: /mnt/tmp: mount(2) system call failed: File exists.
A에는 btrfsck /dev/sdc
오류가 표시되지 않습니다. 이 디스크를 어떻게 마운트할 수 있나요?
답변1
btrfs는 다중 장치(지원) 파일 시스템이므로 특정 파일 시스템에 속하는 장치를 추적할 수 있는 방법이 필요합니다. 실제로 여러 장치가 있는 경우 하나만 마운트하면 btrfs가 다른 장치를 자체적으로 찾습니다.
이는 파일 시스템의 UUID를 통해 수행되며, 이는 물론 이제 복사본에서도 동일합니다. btrfs는 해당 UUID를 여러 번 저장합니다. btrfstune -u /dev/sdc
모두 변경해야 합니다(그러나 많은 메타데이터를 다시 작성해야 하기 때문에 시간이 걸릴 수 있습니다). 비교적 새로운 커널(2018년 12월 패치)은 btrfstune -m /dev/sdc
모든 메타데이터를 다시 작성하지 않고도 작동해야 합니다. 일부 사람들은 이러한 옵션이 손상되었다고 보고했지만 귀하는 이미 복사본을 작업 중입니다.
중요한 경고!
읽어주세요btrfs 트랩,특히블록 수준 복사본에 대한 경고. 파일 시스템 블록 장치 중 하나의 복사본이 두 개 있으면 커널이 잘못된 복사본을 사용하게 됩니다(왜냐하면 파일 시스템 UUID가 동일하고 아는 한 동일한 장치이기 때문입니다).파괴하다 둘 다안에.원본을 포함합니다.(장치 A1과 B1이 포함된 이중 장치 파일 시스템이 있는 경우 어떻게 되는지 상상해 보십시오. A1을 A2에 복사합니다. 이제 커널이 파일 시스템을 마운트하면 예상대로 A1과 B1을 사용할 수 있습니다. 또는 A2와 B1을 사용하여 스위치를 켤 수도 있습니다. 마운트할 때마다 파일 시스템의 절반이 마지막 마운트 이후 모든 쓰기를 "잃을" 수 있음을 의미합니다.
다행히도 커널은 복제본을 마운트하려는 시도를 알아차리고 차단합니다.
무엇을 해야할지
어느:
- 이미지를 파일에 복사합니다(그리고 루프백 장치를 설정하지 마세요). 다른 컴퓨터(루프백 장치 포함) 또는 가상 머신에서 복사본 작업을 수행합니다. 파일 시스템 UUID가 변경되었는지 확인하기 전에 하나의 커널에 두 개의 복사본이 표시되지 않도록 하십시오.
- 등을 사용하여
tar
새btrfs-send
파일 시스템에 대한 복사본을 만들고 다른 파일 시스템 UUID를 사용합니다.