Linux 서버(RHEL7)에서 iSCSI 디스크를 실행하고 있습니다. 디스크에는 Windows NTFS 파일 시스템이 있는 가상 디스크에 매핑되는 disk01.img라는 루프 장치가 포함된 일반 ext4 파티션이 있습니다. Windows와 Linux 시스템 간의 이더넷 연결이 끊어지기 전까지는 모든 것이 괜찮았습니다. Windows는 NTFS 볼륨을 확인해야 한다고 결정하고 궁극적으로 다시 포맷할 것을 권장합니다. 수락하기 전에 Linux 서버의 /savedir에 disk01.img 파일을 저장했습니다. 이제 disk01.img를 복원하려고 하는데 문제가 발생했습니다.
[root@server ~]# losetup -P /dev/loop1 /savedir/disk01.img
[root@server ~]# mount -t ntfs /dev/loop1 /mount/point
Failed to read bootsector (size=0)
Failed to sync device /dev/loop1: Input/output error
Failed to mount '/dev/loop1': Ongeldig argument
The device '/dev/loop1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
NTFS 볼륨이 손상되었을 수 있다고 생각합니다. 빈 NTFS 파티션이 있는 USB 디스크에 disk01.img 파일을 추가한 다음 USB 디스크를 Windows로 포팅하고 chkdsk를 실행한 후 실패하면 다른 방법을 사용하여 파일을 복구해 보세요. 사진기록도 마찬가지다. 아니면 잘못된 코드를 사용하고 있는 걸까요?
편집: fdisk의 결과(네덜란드어)
[root@server ~]# fdisk -l /savedir/disk01.img
Schijf /savedir/disk01.img: 750.2 GB, 750155323392 bytes, 1465147116 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes
Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
[root@server ~]#
편집 2: NTFS 볼륨이 손상되었으므로 losstup -P가 작동하지만 빈 파티션이 생성됩니다. iSCSI 섹터 오프셋을 사용하여 /savedir/disk01.img를 마운트해야 할 수도 있습니다.
mount -o loop,offset=512 /savedir/disk01.img /mount/point
하지만 올바른 오프셋을 찾는 데 문제가 있습니다(NTFS 서명 찾기, *.img 파일의 16진수 덤프와 새로 생성된 가상 디스크의 16진수 덤프 비교). 참고: 파일 구문 분석을 위해 disk01.img의 dd 복사본을 Windows로 다시 포팅했습니다. 이 지루한 작업을 계속 진행 중입니다. disk01.img에서 NTFS 파일 시스템의 시작 부분을 찾는 것이 더 나은 선택인 것 같습니다.
편집 3. TestDisk를 4번 실행한 후 해결할 수 없는 기하학 문제가 있는 것 같습니다. 산출:
losetup -P /dev/loop1 /savedir/disk01.img
testdisk /dev/loop1
Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors
... ... ...
Linux filesys. data 0 1465147111 1465147112
Linux filesys. data 0 1465147111 1465147112
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
MS Data 100452352 1526511615 1426059264
Linux filesys. data 0 1465147111 1465147112
... ... ...
Linux filesys. data 730080712 2195227823 1465147112
Linux filesys. data 730090720 2195237831 1465147112
... ... ...
Linux filesys. data 730093536 2195240647 1465147112
Linux filesys. data 0 1465147111 1465147112
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
MS Data 1346517247 2772576510 1426059264
------------------------------------------------------
-- After Reboot --
Linux 0 1465147111 1465147112
Linux 0 1465147111 1465147112
check_FAT: can't read FAT boot sector
Invalid FAT boot sector
0 D FAT16 LBA 3179978961 3795078107 615099147
FAT16 LBA 3179978961 3795078107 615099147
Linux 0 1465147111 1465147112
Invalid FAT boot sector
0 D FAT12 202831329 1489073369 1286242041
FAT12 202831329 1489073369 1286242041
Linux 0 1465147111 1465147112
Invalid NTFS or exFAT boot
0 D HPFS - NTFS 2833862451 3582746086 748883636
HPFS - NTFS 2833862451 3582746086 748883636
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
HPFS - NTFS 100452352 1526511615 1426059264
Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors
The harddisk (750 GB / 698 GiB) seems too small! (< 1943 GB / 1809 GiB)
Check the harddisk size: HD jumper settings, BIOS detection...
The following partitions can't be recovered:
Partition Start End Size in sectors
> HPFS - NTFS 100452352 1526511615 1426059264
FAT12 202831329 1489073369 1286242041
Linux 730069008 2195218167 1465149160
Linux 730071112 2195218223 1465147112
Linux 730079744 2195226855 1465147112
Linux 730080712 2195227823 1465147112
Linux 730090720 2195237831 1465147112
Linux 730093536 2195240647 1465147112
HPFS - NTFS 1346517247 2772576510 1426059264
HPFS - NTFS 1465145007 2930290014 1465145008
NTFS, blocksize=4096, 730 GB / 679 GiB
--------------------------------------
-- After adding TestDisk MBR, Reboot
Linux 0 1465147111 1465147112
Linux 0 1465147111 1465147112
Linux 0 1465147111 1465147112
Linux 0 1465147111 1465147112
check_FAT: can't read FAT boot sector
Invalid FAT boot sector
0 D FAT16 LBA 3179978961 3795078107 615099147
FAT16 LBA 3179978961 3795078107 615099147
Linux 0 1465147111 1465147112
Linux 0 1465147111 1465147112
Invalid FAT boot sector
0 D FAT12 202831329 1489073369 1286242041
FAT12 202831329 1489073369 1286242041
Linux 0 1465147111 1465147112
Invalid NTFS or exFAT boot
0 D HPFS - NTFS 2833862451 3582746086 748883636
HPFS - NTFS 2833862451 3582746086 748883636
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
HPFS - NTFS 100452352 1526511615 1426059264
-------------------------------------
-- After Reboot, running Deeper Analysis ---
Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors
No partition 36028797018963967 1465147115 1465147117
Enter the ending sector
--------------------------------------
답변1
마운트 실패는 /dev/loop1
이미지 파일이 유효한 파티션 이미지가 아님을 나타냅니다. iSCSI 디스크로 사용되는 이미지의 복사본이므로 파티션 테이블을 포함한 전체 디스크 이미지이기를 원합니다.
그러나 fdisk -l /savedir/disk01.img
인식된 파티션 테이블이 존재하지 않음을 나타냅니다. iSCSI 디스크가 Microsoft Storage Spaces 설정의 일부로 사용되더라도 최소한하나파티션이 존재합니다.
MBR 파티션 테이블만 인식하는 이전 버전이 있고 fdisk
이미지가 GPT 파티션 테이블을 사용하는 경우에도 최소한 GPT를 감지해야 합니다.보호 MBR그리고 0xee 유형의 가상 파티션 항목입니다.
이는 파티션 테이블이 손상되었거나 덮어썼을 수 있음을 나타냅니다. 전체 디스크 루프 장치를 사용해 보고 testdisk
파일 시스템의 시작과 끝을 찾아 파티션 테이블을 다시 빌드할 수 있는지 확인할 수 있습니다.
testdisk /dev/loop1
또는 최신 버전의 Windows에서는 일반적으로 디스크 시작 부분에서 정확히 1MiB 떨어진 곳에 디스크의 첫 번째 파티션 시작 부분을 배치합니다. 따라서 다음을 시도해 볼 수 있습니다.
mount -o loop,offset=1M /savedir/disk01.img /mount/point