외장 HDD를 복구하는 동안 전체 디스크를 LVM LV에 백업하고 fsck 및 resize2fs를 실행하여 새 드라이브에 맞췄습니다(둘 다 외장 USB HDD이지만 최신 드라이브는 몇 MB 더 작습니다). ddrescue를 사용하여 데이터를 LV에 복사했습니다. 이제 dd를 사용하여 LV에서 물리적 드라이브로 데이터를 복사하면 파티션 테이블이 손상됩니다. 파티션 테이블(LV와 동일)을 복구하면 fsck에서 오류가 발생합니다.
dd bs=100M if=/dev/mapper/backup--vg-backup--lv of=/dev/sdh
LV에서 물리적 드라이브로 데이터를 가져오기 위해 달려갔습니다 .
LV와 물리적 드라이브는 모두 동일한 논리적/물리적 섹터 크기를 사용합니다.
제 질문은 LV(전체 디스크 포함)의 데이터를 물리적 디스크로 다시 복사하는 방법입니다.
답변1
방출된 후에도 fdisk
캐시된 데이터처럼 보이고 사용됩니다. 이로 인해 fdisk는 잘못된 파티션 테이블을 사용하고 fsck는 잘못된 슈퍼블록을 사용하게 됩니다.fsck
partprobe
나는 노력했다재시작fdisk 및 fsck뿐만 아니라 머신도 모두 예상된 결과를 보고하며 결과는 물리적 디스크와 LV에 대해 동일합니다.
FS가 일부 오류를 보고할 수 있다고 생각했지만(4TB 중 2MB를 제외하고 모두 원시 디스크에서 LV로 복원됨) 물리적 드라이브에 파티션을 마운트했는데 파일이 괜찮아 보였습니다.
답변2
대상 HDD/SDD에 새 파티션 테이블을 수동으로 생성하고, 파일 시스템을 다시 생성하고, LVM 드라이브에서 데이터를 복사하는 것이 더 쉬울 수 있습니다.
이것이 제가 개인적으로 rsync -avxHAX (source) (target)
사용하는 것입니다.