다른 컴퓨터의 mdadm raid 1의 일부인 디스크에 데이터를 마운트/복원하는 방법은 무엇입니까?

다른 컴퓨터의 mdadm raid 1의 일부인 디스크에 데이터를 마운트/복원하는 방법은 무엇입니까?

일부 배경

  • 디스크 자체는 친구에 의해 "처리"되었으며 여전히 온전하고 손상되지 않았으며 여전히 마운트/복구 가능하다고 합니다.
  • 이 디스크는 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/sdcunit s명령을 사용하여 섹터 단위로 작업 할 수 있습니다 . print테이블에서 시작 및 끝 섹터를 확인한 다음 rm파티션을 기록한 다음 다시 만들고 mkpart동일한 끝 섹터를 사용하되 시작 섹터에 오프셋을 추가합니다.

2048이 작동하지 않으면 1985를 시도해 볼 수도 있습니다.

관련 정보