我有一个名为 /dev/sdc1 的 HDD 设备,它承载着除根文件系统之外的文件系统。断电后我启动了,但无法挂载它。我想知道文件系统是否可能已损坏且无法修复。我认为在发生故障时它甚至没有被使用过。我可以尝试什么来让它再次挂载?
user@pc ~ $ sudo fdisk -l /dev/sdc
...
Device Start End Sectors Size Type
/dev/sdc1 2048 5860532223 5860530176 2.7T Linux filesystem
/etc/fstab:
/dev/sdc1 /mnt/data_c ext4 defaults 0 0
user@pc ~ $ sudo mount /dev/sdc1
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
user@pc ~ $ dmesg|tail
...
[154150.717274] sdc: sdc1
[154564.927084] EXT4-fs (sdc1): VFS: Can't find ext4 filesystem
然后我尝试使用备用超级块位置进行安装。
mount -t ext4 -o sb=131072,ro /dev/sdc1 /mnt/data_c
我执行了上述操作,将 sb 选项设置为以下所有数字的 4 的倍数:32768、98304、163840、229376、294912、819200、884736、1605632、2654208、4096000(因为有人告诉我超级块备份存储在这些块上,并且必须将它们乘以 4,因为 mount 需要其 sb= 以 1k 块为单位)。我总是得到相同的错误(错误的 fs 类型、错误的选项、错误的超级块... 和 VFS:找不到 ext4 文件系统)。
然后我使用了 testdisk,它可以找到分区,并列出其中的文件(我认为是所有文件)。它还可以逐个复制一些文件,但问题是我需要大约 200-300 个文件,这很耗时,所以我想探索另一种可能修复文件系统的可能性。
Disk /dev/sdc - 3000 GB / 2794 GiB - CHS 364801 255 63
Partition Start End Size in sectors
MS Data 2048 5860532223 5860530176 [data3]
superblock 0, blocksize=4096 [data3]
superblock 32768, blocksize=4096 [data3]
superblock 98304, blocksize=4096 [data3]
superblock 163840, blocksize=4096 [data3]
superblock 229376, blocksize=4096 [data3]
superblock 294912, blocksize=4096 [data3]
superblock 819200, blocksize=4096 [data3]
superblock 884736, blocksize=4096 [data3]
superblock 1605632, blocksize=4096 [data3]
superblock 2654208, blocksize=4096 [data3]
To repair the filesystem using alternate superblock, run
fsck.ext4 -p -b superblock -B blocksize device
我很好奇,这个硬盘使用不到一年,我相当确定在停机时没有写入任何内容(尽管可能正在读取)。所有超级块都可能失效吗?也许它们在其他地方?
答案1
首先,您可以通过软件包测试您的硬盘智能工具
在您的驱动器中激活“智能”:
smartctl -s on /dev/sdc
开始一个长测试(你可以先尝试“短的“ 测试 ) :
smartctl -t long /dev/sdc
等待测试结束并获取结果:
smartctl -l selftest /dev/sdc
如果您的硬盘没有问题,您可以尝试下面的命令来检查文件系统:
e2fsck -n /dev/sdc1
如果不起作用,测试磁盘是解决方案。