Linux 挂载 NTFS 硬盘分区出错

错误信息

Linux 系统突然断电重启后,再次挂载 NTFS 格式的硬盘分区时,出现以下错误信息:

1
# mount -t ntfs-3g /dev/sdb1 /mnt/share
1
2
3
4
5
6
7
8
9
$MFTMirr does not match $MFT (record 0).
Failed to mount '/dev/sdb1': Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.

错误分析

在删除、拷贝或者移动硬盘文件时,如果硬盘突然断电或者掉落(断掉、接口松动),那么再次挂载硬盘时,可能会提示硬盘分区的 $MFT 文件出现了问题。

解决方案

在 Linux 系统下使用 ntfsfix 命令进行修复,而在 Windows 系统下可以使用 chkdsk 命令进行修复。

  • 安装 ntfsprogs 工具
1
# yum install ntfsprogs
  • 使用 ntfsfix 命令进行修复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ntfsfix /dev/sdb1

Mounting volume... $MFTMirr does not match $MFT (record 0).
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 0...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb1 was processed successfully.

重新挂载 NTFS 硬盘分区

1
# mount -t ntfs-3g /dev/sdb1 /mnt/share

特别注意

笔者的硬盘分区路径是 /dev/sdb1,您需要根据实际情况指定自己的硬盘分区路径。值得一提的是,可以使用 fdisk -l 命令来查看硬盘分区的详细信息。