我有一台电脑,里面有两个硬盘。其中一个携带操作系统和一大堆其他东西;另一个安装在 /media 内作为额外 TB 存储空间的转储空间。最近,我将系统从 Ubuntu Maverick 升级到 Debian Jessie,这涉及到删除一堆不兼容的软件包并安装更多软件包,并且可能会损坏一些东西;也有可能硬盘快要死了,当我重新启动时,它决定放弃。
该驱动器上没有什么完全重要的东西,但我想检索它而不是重建它 - 而且,我更喜欢知道出了什么问题,而不是仅仅掩盖问题并继续前进。因此,我要求的是有关如何调试不再识别硬盘驱动器文件系统的奇怪硬盘驱动器故障的建议。如果这个问题在这里不合适,我深表歉意,并将我重定向到更好的地方!
升级之前,主驱动器是(我相信)/dev/sda,辅助驱动器是/dev/sdb。现在,它们显示为:
$ sudo parted -l
Model: ATA WDC WD1002FAEX-0 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 32.3kB 1000GB 1000GB primary
Model: ATA ST31000333AS (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 997GB 997GB primary ext4 boot
2 997GB 1000GB 3143MB extended
5 997GB 1000GB 3143MB logical linux-swap(v1)
请注意,/dev/sdb 上的文件系统正确显示(大部分 TB 为 ext4、可启动分区和 3GB 交换分区),并且 /dev/sda 上的分区很可能是正确的(尽管我没有预先设置)升级分区表转储),但未列出任何文件系统。
尝试 fsck /dev/sda1 会产生以下错误:
$ sudo fsck /dev/sda1
fsck from util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
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/sda1
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>
可能的超级块选项列表没有产生任何有用的结果,但我想知道是否可能存在分区表偏移量。有没有办法搜索有效的超级块?
另外,我不能 100% 确定这是一个 ext3/ext4 文件系统。我可能使用了不同的文件系统,但我不知道是什么。有什么方法可以探索分区并弄清楚它将使用什么,以便我可以安装额外的文件系统驱动程序?
任何指示都会有所帮助。谢谢!
编辑:doktor5000 建议我抓住 testdisk 并看看它说了什么。
Disk /dev/sda - 1000 GB / 931 GiB - CHS 121601 255 63
Current partition structure:
Partition Start End Size in sectors
No ext2, JFS, Reiser, cramfs or XFS marker
1 P Linux 0 1 1 121600 254 63 1953520002
1 P Linux 0 1 1 121600 254 63 1953520002
No partition is bootable
选择“快速搜索”会产生以下结果:
Disk /dev/sda - 1000 GB / 931 GiB - CHS 121601 255 63
Partition Start End Size in sectors
>* Linux 0 32 33 118619 237 18 1905627136
P Linux Swap 118620 14 51 121601 57 56 47892480
我之前忘记引用 fdisk 所说的话,所以这里是:
$ sudo fdisk /dev/sda -l
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 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
Disklabel type: dos
Disk identifier: 0x000a56a5
Device Boot Start End Sectors Size Id Type
/dev/sda1 63 1953520064 1953520002 931.5G 83 Linux
所以,我看到的差异是: fdisk 认为分区从 63 开始,但 testdisk 说是 32(我认为); testdisk 说那里有一个交换分区,这对我来说没有意义(它是辅助驱动器,我不知道为什么我要分配任何交换空间)。但是,酷极了,我可以深入文件系统并复制文件!与我上次尝试磁盘恢复时所遇到的情况相比,这真是太棒了 - 但那是在 1990 年代使用 OS/2 的时候,所以这并不奇怪:)
我有足够的信心让testdisk写出新的分区表。是的!所有数据都在那里并且可读,驱动器似乎工作得很好。非常感谢,doktor5000!那么,后续问题...知道分区表是如何损坏的吗?
答案1
最明显的是通过以下方式深度搜索分区测试盘。
看看他们的有关如何运行它的一般指南和/或分步文档
然后将 testdisk 找到的分区表与您当前看到的进行比较,无需更改任何内容,也许可以将其发布在这里。
另一种选择,至少对于 ext2/3/4 来说是使用调试命令但这要复杂得多,并且不像 testdisk 那么简单。
无论如何,如果您想恢复该磁盘上的内容,最好从该磁盘创建一个映像,并且只处理该映像,这样您就不会面临丢失更多数据的风险。看从故障驱动器保存数据有关如何做到这一点的一些建议。