Linux raid에서 파티션 테이블을 복구하는 방법

Linux raid에서 파티션 테이블을 복구하는 방법

하나의 드라이브만 포함하고 btrfs 파티션이 있는 Linux raid(해당 md 장치)가 있습니다.

실수로 다음을 수행했습니다.

fdisk /dev/md126

경고가 표시되지 않습니다.

The old btrfs signature will be removed by a write command.

Device does not contain a recognized partition table. Created a new
DOS disklabel with disk identifier 0x3cf67d6f

종료하려면 w를 입력하세요.

이제 파티션 테이블이 사라졌습니다.

사용해 보았는데 testdisk /dev/md126파티션이 선택되었지만

Disk /dev/md126 - 1993 GB / 1856 GiB - CHS 486640640 2 4                                                                                                                                                                                       

The harddisk (1993 GB / 1856 GiB) seems too small! (< 1993 GB / 1856 GiB)                                                                                                                                                                      
Check the harddisk size: HD jumpers settings, BIOS detection...                                                                                                                                                                                

The following partition can't be recovered:                                                                                                                                                                                                    
     Partition               Start        End    Size in sectors                                                                                                                                                                               
>  Linux                16368   0  1 486657007   1  4 3893125120 [2018.10.18-11:37:13 v15254]                                                                                                                                                  










[ Continue ]                                                                                                                                                                                                                                   
btrfs blocksize=4096, 1993 GB / 1856 GiB

파티션을 보존하는 것을 허용하지 않는 것 같습니다.

또한 이별 구조에서는 파티션이 전혀 표시되지 않습니다.

다음에 무엇을 해야 합니까?


이것은 파티션 테이블을 삭제하기 전의 fdisk -l 출력입니다.

Disk /dev/sdb: 1.8 TiB, 2000365380096 bytes, 3906963633 sectors
Disk model: EARX-00PASB0    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcca96a8e

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdb1          2048    4982527    4980480  2.4G fd Linux raid autodetect
/dev/sdb2       4982528    9176831    4194304    2G fd Linux raid autodetect
/dev/sdb3       9437184 3902564351 3893127168  1.8T fd Linux raid autodetect

Disk /dev/md126: 1.8 TiB, 19933000280061440 bytes, 3893125120 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 /dev/sdb: 1.8 TiB, 2000365380096 bytes, 3906963633 sectors
Disk model: EARX-00PASB0    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcca96a8e

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdb1          2048    4982527    4980480  2.4G fd Linux raid autodetect
/dev/sdb2       4982528    9176831    4194304    2G fd Linux raid autodetect
/dev/sdb3       9437184 3902564351 3893127168  1.8T fd Linux raid autodetect


Disk /dev/md126: 1.8 TiB, 1993280061440 bytes, 3893125120 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
Disklabel type: dos
Disk identifier: 0x3cf67d6f

다음은 현재 상황에 대한 별도의 인쇄물입니다.

Model: Linux Software RAID Array (md)
Disk /dev/md126: 1993GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End  Size  Type  File system  Flags

비슷한 구성을 가진 다른 드라이브의 출력은 다음과 같습니다.

Model: Linux Software RAID Array (md)
Disk /dev/md123: 1995GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags: 

Number  Start  End     Size    File system  Flags
 1      0.00B  1995GB  1995GB  btrfs

답변1

이 장치에는 파티션 테이블이 없습니다. 따라서 파티션이 없는 경우 파티션을 복구하려는 시도는 실패할 수밖에 없습니다. 파일 시스템을 보유하는 장치에 파티션 테이블을 쓰면 파일 시스템이 손상될 수 있습니다.

상황을 재현해 보세요.

# file -s /dev/md100
/dev/md100: BTRFS Filesystem sectorsize 4096, nodesize 16384, leafsize 16384, UUID=fbae0a54-9d6b-4d20-9981-a1a385a0a91f, 120848384/205520896 bytes used, 1 devices
# fdisk /dev/md100
# file -s /dev/md100
/dev/md100: DOS/MBR boot sector

다음 단계는 회복에 도움이 되었습니다.

wipefs작성한 msdos 파티션 헤더를 제거 하려면 :

# wipefs --all --types dos /dev/md100
/dev/md100: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/md100: calling ioctl to re-read partition table: Success
# file -s /dev/md100
/dev/md100: data

btrfs-select-super백업 슈퍼블록을 복원 하려면 다음을 수행하세요.

노트:나는 어떤 이유로 문제를 해결할 수 없거나 해결할 의지가 없기 btrfs-select-super때문에 이것을 사용하게 되었습니다 . btrfs check계속하기 전에 매뉴얼 페이지를 읽어 보십시오.

# btrfs-select-super -s 1 /dev/md100
using SB copy 1, bytenr 67108864
# file -s /dev/md100
/dev/md100: BTRFS Filesystem sectorsize 4096, nodesize 16384, leafsize 16384, UUID=fbae0a54-9d6b-4d20-9981-a1a385a0a91f, 120848384/205520896 bytes used, 1 devices

그런 다음 파일 시스템을 완전한 파일로 마운트할 수 있습니다.

하지만 동일한 방법이 귀하에게 효과가 있다고 보장할 수는 없습니다. 가능하다면 이 실험을 드라이브에서 직접 실행하지 말고 대신기록 중 복사 덮어쓰기.

관련 정보