跳转到内容

NTFS

来自 Arch Linux 中文维基

来自维基百科

NTFS (New Technology File System) 是一个由微软开发的专有日志文件系统。从 Windows NT 3.1 开始是 Windows NT 系列的默认文件系统。

Linux有两个内核驱动提供了对NTFS读写支持。

  • ntfs3—最初被 Paragon 提交到Linux内核中。ntfs3 内核驱动并没有配套的用户空间工具。安装 来自 NTFS-3Gntfsprogs 或使用 Windows 设备以格式化分区和执行维护。
  • ntfs— 从 Linux 7.1 其可用,基于在 Linux 6.9 被移除的老旧只读驱动,用户空间工具在 ntfsprogs-plusAUR 中可用。

目前来看,没有哪个驱动系统明显更好,两者各有优缺点,操作上也存在一些细微差别。值得注意的是:

  • ntfs 的整体性能应该略好一些。
  • ntfs 不支持 Windows 原生符号链接(计划 7.2 支持 [1]
  • TRIM 实现上的差异

提示与技巧

防止创建 Windows 不支持的命名

NTFS 本身对字符和名称没有限制,但 Windows 对此有限制

内核驱动支持 windows_names mount(8) 选项。使用该选项可严格保证兼容性。

在 GUI 文件管理器中使用 ntfs 驱动

大多 GUI 文件管理器使用 udisks 挂载,它默认偏向使用 ntfs3 驱动。参见Udisks#默认挂载选项以使用 ntfs 驱动替代。

已知问题

挂载时需要明确的文件系统类型

在7.1版本之前的内核上,NTFS 分区默认可能以只读方式挂载或完全无法挂载。

这种情况下,需要明确指定ntfs3为文件系统类型。例如,使用 mount(8)-t/--types 选项:

# mount -t ntfs3 /dev/sdxY /mnt

或者使用 fstab

/etc/fstab
/dev/sdxY /mnt ntfs3 defaults 0 0

排障

文件系统挂载为只读

如果使用版本旧于 7.1 的内核,使用ntfs3挂载文件系统以读写。详见#挂载时需要明确的文件系统类型

unknown filesystem type 'ntfs'

挂载 NTFS 时,可能会遇到如下错误:

mount: /mnt: unknown filesystem type 'ntfs'

请检查是否已安装 ntfs-3g:

$ pacman -Qi ntfs-3g

如果尚未安装,可安装之。也可以使用 -t ntfs3 参数来指定使用内核的 ntfs3 驱动。

无法用 ntfs3 挂载被标记为脏的分区

尝试挂载一个正常的 NTFS 分区时(成功地使用 NTFS-3G 挂载,执行 ntfsfix --no-action 不汇报任何错误时),你可能会获得下面的错误:

mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.

当分区被标记为“脏的”时,ntfs3 将不会挂载它。dmesg 会帮助你判断这个情况,会说:

sdb1: volume is dirty and "force" flag is not set!

你可以尝试用 --clear-dirty 参数来使用 {ntfsfix(8) 来清理它。 [2]

参见