일부 배경
- 디스크 자체는 친구에 의해 "처리"되었으며 여전히 온전하고 손상되지 않았으며 여전히 마운트/복구 가능하다고 합니다.
- 이 디스크는 Ubuntu 12.04의 소프트웨어 RAID 1의 일부입니다.
- 원본 RAID 1의 또 다른 디스크가 포맷되어 다른 목적으로 사용되어 현재 디스크(문제의 디스크)가 기술적으로 여전히 더 이상 존재하지 않는 RAID의 일부가 되었습니다.
난 이미 시도했어
기본 설치
- 디스크를 ext3/ext4로 표시하는 항목을 fstab에 추가하고 마운트하려고 했습니다.
설치 후 아래와 같은 오류가 발생합니다.
wrong fs type, bad option, bad superblock on
그리고정보
EXT4-fs (sdc1): VFS: Can't find ext4 filesystem
디스크의 파일 시스템 유형을 찾으려고 노력했고
$sudo file -s /dev/sdc
/dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8
도움이 필요해요/질문이 있어요
- 데이터를 손상시키지 않고 디스크를 ext4로 변환하는 방법이 있습니까?
- Linux 83 파일 형식 디스크를 마운트하고 데이터를 복구하는 쉬운 방법이 있습니까?
- 어떻게든 RAID를 재구축할 수 있는 경우를 대비해 현재 또 다른 여유 디스크가 있습니다.
- 나의 주요 목표는 디스크에서 데이터를 복구하는 것입니다. 나는 모든 옵션에 열려 있습니다.
고쳐 쓰다
일부 명령의 출력
fdisk -l /dev/sdc
$fdisk -l /dev/sdc
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005ed9c
Device Boot Start End Blocks Id System
/dev/sdc1 63 1953520064 976760001 83 Linux
파일 -s /dev/sdc1
$file -s /dev/sdc1
/dev/sdc1: data
hexdump -C -n 32256 /dev/sdc(이것이 도움이 되는지 확실하지 않음)
$hexdump -C -n 32256 /dev/sdc` 00000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..| 00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 9c ed 05 00 00 00 00 fe |................| 000001c0 ff ff 83 fe ff ff 3f 00 00 00 82 59 70 74 00 00 |......?....Ypt..| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00007e00
답변1
이것은 Ubuntu 14.04에서 완벽하게 작동합니다.
sudo -i
mdadm --assemble --scan
당신은 얻을 것이다:
mdadm: /dev/md/1 has been started with 1 drive (out of 2)
그런 다음 파일을 설치하고 확인합니다.
cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
답변2
리눅스 mdraid는여러 메타데이터 형식. 형식 0.9와 1.0은 포함된 장치의 끝에 메타데이터를 넣고 페이로드(파일 시스템)는 장치의 시작 부분에서 시작하여 raid 계층을 거치지 않고 직접 액세스할 수 있습니다. 형식 1.1과 1.2는 메타데이터를 각각 포함하는 장치의 중간과 시작 부분에 배치하므로 페이로드가 오프셋에 있습니다.
Ubuntu 설치 프로그램은 1.2 메타데이터 형식을 사용하여 볼륨을 생성하므로 데이터는 장치 시작 부분이 아닌 메타데이터 뒤에서 시작됩니다.
이 데이터에 접근하는 가장 쉬운 방법은 습격 장치를 조립하는 것입니다. RAID-1 볼륨에서는 단일 장치로 충분합니다.
madadm -A /dev/sdc1
(고통을 좋아하지 않는다면 여기서 멈추십시오.)
오프셋을 통해 데이터에 액세스할 수도 있습니다. 이 작업을 수행할 때 내가 볼 수 있는 유일한 요점은 1.x mdraid 형식을 지원하지 않는 아주 오래된 커널에서 작업해야 하는 경우입니다. 먼저 오프셋을 결정합니다 mdadm -E /dev/sdc1
. 직선을 찾습니다 Data Offset : SSS sectors
. mdadm 섹터는 512바이트입니다.
sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1
결과적으로 1.x 형식에서는 데이터 오프셋이 리틀 엔디안인 메타데이터의 바이트 128-135에 저장됩니다. 1.2 메타데이터는 장치 시작 후 4096바이트입니다.
파티션 테이블을 변경하여 추가 부팅이 가능하도록 만들 수도 있습니다. 산수를 할 때는 매우 조심하십시오. 이는 RAID 장치에 액세스할 수 없는 이전 시스템에서 디스크를 장기간 사용하려는 경우에만 필요합니다.
아니면 플랫폼 바이트 순서인가요 ? 나는 모른다.
답변3
놀랍게도 간단히 다음을 사용하여 데이터를 복구할 수 있었습니다.가장 중요한.
여기서 얻는 도움은 매우 귀중합니다. 다양한 제안 조합과 내 믹스를 시도한 결과 이상적인 접근 방식(일반적인 마운트 및 디스크 사용)은 더 이상 선택 사항이 아닌 것 같습니다. 이 경우 데이터 복구에 의지하는 것이 나의 해결책입니다.
답변4
mdadm 수퍼블록을 제거한 것 같습니다. 존재했던 적이 있고 1.1 또는 1.2 형식이었다면 파일 시스템은 섹터 오프셋 2048에 있을 가능성이 높습니다. e2fsck /dev/sdc1?offset=2048
강제로 해당 오프셋에서 파일 시스템을 살펴보기 시작하도록 실행할 수 있습니다 . 찾으면 파일 시스템이 실제로 시작되는 위치를 가리키도록 파티션 테이블을 수정할 수 있습니다. parted /dev/sdc
및 unit s
명령을 사용하여 섹터 단위로 작업 할 수 있습니다 . print
테이블에서 시작 및 끝 섹터를 확인한 다음 rm
파티션을 기록한 다음 다시 만들고 mkpart
동일한 끝 섹터를 사용하되 시작 섹터에 오프셋을 추가합니다.
2048이 작동하지 않으면 1985를 시도해 볼 수도 있습니다.