하나의 드라이브만 포함하고 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
그런 다음 파일 시스템을 완전한 파일로 마운트할 수 있습니다.
하지만 동일한 방법이 귀하에게 효과가 있다고 보장할 수는 없습니다. 가능하다면 이 실험을 드라이브에서 직접 실행하지 말고 대신기록 중 복사 덮어쓰기.