我有一个外部硬盘,它分为两个分区:一个 700GB 的 exFAT 和一个 300GB 的 LUKS 分区。我正在从计算机复制到 luks 分区,但速度变慢并且卡住,所以我决定删除 USB 连接。现在 LUKS 分区未挂载,并且其中充满了重要文件:( 我该如何解决此问题?以下是两个输出:
$ sudo parted -l
Model: ********** (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Sinalizador
1 1049kB 300GB 300GB primary
2 300GB 1000GB 700GB primary
$ sudo fsck /dev/sdb
fsck from util-linux 2.28.2
e2fsck 1.43.3 (04-Sep-2016)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/sdb
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
Found a dos partition table in /dev/sdb
请帮忙!
编辑
我跟着这教程并尝试恢复到超级块备份。使用它我找到了所有备份:
$ sudo mke2fs -n /dev/sdb
mke2fs 1.43.3 (04-Sep-2016)
Found a dos partition table in /dev/sdb
Proceed anyway? (y,n) y
Creating filesystem with 244189952 4k blocks and 61054976 inodes
Filesystem UUID: ***************************
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
我尝试恢复列出的每一个块号,但它总是提示我相同的错误,例如:
$ sudo e2fsck -b 32768 /dev/sdb
e2fsck 1.43.3 (04-Sep-2016)
e2fsck: Bad magic number in super-block while trying to open /dev/sdb
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
Found a dos partition table in /dev/sdb
答案1
您将fsck
命令指向了错误的设备节点。
由于您/dev/sdb
是分区磁盘,因此您永远不应该在整个磁盘设备上运行文件系统修复工具/dev/sdb
- 只能在实际分区上运行。
但由于您的/dev/sdb2
分区是 LUKS 加密分区,因此运行fsck
完全sdb2
是徒劳的 - 由于分区是加密的,sdb2
除了 LUKS 标头之外,其内容看起来与随机噪声基本上无法区分。这就是加密的作用。
相反,您必须首先使用以下方法解锁加密:
cryptsetup luksOpen /dev/sdb2 sdb2_crypt
它应该提示输入加密密码。如果命令成功,它将创建另一个设备节点:/dev/mapper/sdb2_crypt
。使用该设备,并且仅有的在此设备上,您将能够通过 LUKS 加密/解密“过滤器”访问加密分区的内容,使其看起来像普通的未加密设备。当您关闭系统或使用cryptsetup luksClose
锁定加密时,该设备将消失,直到再次解锁加密。
这包括运行文件系统检查:
fsck /dev/mapper/sdb2_crypt
同样,在安装加密分区时,您必须使用该/dev/mapper/sdb2_crypt
设备,而不是原始的加密分区/dev/sdb2
。
答案2
好吧,检查你的 LUKS 标头是否完好:
cryptsetup luksDump /dev/sdb2
如果您遇到错误,我很抱歉,但除非您有 LUKS 标头的备份,否则您的重要文件将无法恢复。
如果您碰巧有 LUKS 标头的备份,您可以恢复它:
cryptsetup luksHeaderRestore /dev/sdb2 --header-backup-file somefile
答案3
我建议从硬件层开始。 /var/log/messages 是否显示任何与磁盘相关的错误?例如,电缆或磁盘本身可能是这些问题的根本原因。问题是,如果这是硬件问题,那么即使导致的灾难得到恢复,它也很可能再次发生。