一场雷雨过后,我的硬盘损坏了。它以前是 1 个 2.5TB 的分区,但现在显示 2 个分区。这很奇怪,因为损坏前它的可用空间大约是 300GB,但它是第一个分区的一部分。
我试过
$ sudo resize2fs -f /dev/sdb1
Resizing the filesystem on /dev/sdb1 to 536870911 (4k) blocks.
resize2fs: Can't read an block bitmap while trying to resize /dev/sdb1
Please run 'e2fsck -fy /dev/sdb1' to fix the filesystem
after the aborted resize operation.
sudo e2fsck -f /dev/sdb1
e2fsck 1.42 (29-Nov-2011)
The filesystem size (according to the superblock) is 610471680 blocks
The physical size of the device is 536870911 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort? n
....
Error reading block 537395215 (Invalid argument) while reading inode and block bitmaps. Ignore error<y>? yes
Force rewrite<y>? yes
Error writing block 537395215 (Invalid argument) while reading inode and block bitmaps. Ignore error<y>? yes
... A lot of these.
我无法使用 e2fsck -y,因为如果我输入“y”,第一个问题就会中止。如果我在“y”键上加重,它会失败,因为没有一个错误真正得到修复。
我之前问过这个问题并尝试使用 gparted 但 gparted 失败,因为它做的第一件事是:
e2fsck -f -y -v /dev/sdb1
给出相同的错误。磁盘状态显示健康。没有坏块。这非常令人沮丧,因为我可以在 testdisk 中看到数据,看起来一切都在那里。我已经买了另一个 2.5tb 驱动器并使用 dd 进行了克隆。如果我无法修复此问题,下一步就是擦除该驱动器并使用 testdisk 移动数据,但似乎某些文件夹会无限复制,直到驱动器因符号链接或错误而满,所以这也是一个困难的选择。
sudo fdisk -l
Disk /dev/sdb: 2500.5 GB, 2500495958016 bytes
255 heads, 63 sectors/track, 304001 cylinders, total 4883781168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0005da5e
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 4294969342 2147483647+ 83 Linux
sudo badblocks -b 4096 -n -o badfile /dev/sdb 610471680 536870911
badfile 为空
我也尝试使用“fsck -b”更改超级块,但它们都是一样的。
答案1
您的分区表似乎出了问题。由于您的磁盘大于 2TB,因此您需要使用 GPT,但 fdisk 认为该磁盘使用的是 dos 分区表。您需要创建一个新的 gpt 磁盘标签并使用完整空间重新创建分区,最后对其进行 fsck。