다른 컴퓨터에서 mdadm raid 1의 일부인 디스크에 데이터를 마운트 / 복구하는 방법은 무엇입니까? 기술적 인 부분으로 남겨두고 다른

일부 배경

  • 디스크 자체는 친구에 의해 “작업”되었으며 여전히 손상되지 않았으며 여전히 마운트 가능 / 복구 가능하다고합니다.
  • 디스크는 Ubuntu 12.04의 소프트웨어 공격대 1의 일부였습니다
  • 원래 RAID 1의 다른 디스크는 현재 디스크 (문제의 디스크)가 더 이상 존재하지 않는 RAID의 기술적 인 부분으로 남겨두고 다른 목적으로 포맷 및 사용되었습니다.

내가 이미 시도한 것

  • 기본 장착

    • fstab에 항목을 추가하고 디스크를 ext3 / ext4로 표시하고 마운트를 시도했습니다.
    • 장착하면 다음 오류가 나타납니다

      wrong fs type, bad option, bad superblock on

    • 그리고 dmesg에서

      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 파일 유형 디스크를 마운트하고 데이터를 복구하는 간단한 방법이 있습니까?
  • 어쨌든 공격대를 재건 할 가능성이있는 경우를 대비하여 현재 사용 가능한 다른 디스크가 있습니다.
  • 나의 주요 목표는 디스크에서 데이터를 복구하는 것입니다. 모든 옵션에 개방되어 있습니다.

최신 정보

일부 명령의 출력

  • 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
    


답변

이것은 우분투 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

답변

Linux mdraid에는 몇 가지 메타 데이터 형식이 있습니다 . 형식 0.9와 1.0은 메타 데이터를 포함하는 장치의 끝에 놓고, 페이로드 (파일 시스템)는 장치의 시작 부분에서 시작하며 RAID 계층을 거치지 않고 직접 액세스 할 수 있습니다. 형식 1.1과 1.2는 메타 데이터를 포함 장치의 중간과 시작 부분에 각각 배치하므로 페이로드는 오프셋입니다.

Ubuntu 설치 프로그램은 1.2 메타 데이터 형식으로 볼륨을 생성하므로 장치 시작 부분이 아닌 메타 데이터 뒤에서 데이터가 시작됩니다.

해당 데이터에 액세스하는 가장 간단한 방법은 RAID 장치를 조립하는 것입니다. 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 형식의 데이터 오프셋은 little-endian¹ 메타 데이터의 128-135 바이트로 저장됩니다. 1.2 메타 데이터는 장치 시작 후 4096 바이트입니다.

파티션 테이블을 변경하여 추가로 시작할 수도 있습니다. 산술에 매우주의하십시오. RAID 시스템에 액세스 할 수없는 오래된 시스템에서 장기간 디스크를 계속 사용하려는 경우에만 수행하십시오.

¹ 아니면 플랫폼 엔디안? 잘 모르겠습니다.


답변

놀랍게도, 나는 가장 먼저 를 사용하여 데이터를 복구 할 수있었습니다 .

여기서받은 도움은 매우 귀중했습니다. 나만의 믹스 인뿐만 아니라 다양한 제안 된 조합을 시도한 후 이상적인 방법 (디스크를 정상적으로 장착하고 사용하는)은 더 이상 옵션처럼 보이지 않았습니다. 이 경우 데이터 복구에 의지하는 것이 나의 해결책입니다.


답변

이미 mdadm 수퍼 블록을 압축 한 것으로 보입니다. 그것이 존재하고 포맷 1.1 또는 1.2라면, 파일 시스템은 오프셋 2048 섹터에있을 가능성이 높습니다. e2fsck /dev/sdc1?offset=2048해당 오프셋에서 시작하는 파일 시스템을 찾도록 강제 실행할 수 있습니다 . 찾은 경우 파일 시스템이 실제로 시작되는 위치를 가리 키도록 파티션 테이블을 수정할 수 있습니다. parted /dev/sdcunit s명령을 사용하여 섹터 단위를 사용할 수 있습니다 . print테이블에서 시작 및 끝 섹터 rm를 확인한 다음 파티션을 기록한 다음 mkpart동일한 끝 섹터를 사용하여 다시 작성 하고 사용하지만 시작 섹터에 오프셋을 추가하십시오.

2048이 작동하지 않으면 1985을 시도 할 수도 있습니다.