NTFS

来自 Arch Linux 中文维基

来自维基百科

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

ntfs3 内核驱动提供了读写支持。

注意:
  • 所有 5.15 及更新版本的官方支持的内核都默认使用了 CONFIG_NTFS3_FS=m 参数,因此支持该驱动。在 5.15 版本前,NTFS 读写支持由 NTFS-3G FUSE 文件系统提供。或者也可以通过 ntfs3-dkmsAUR 使用向后移植的 NTFS3。
  • 内核模块的作者 Paragon Software 尚未发布 NTFS3 的用户空间实用程序。你可以通过 ntfsprogs-ntfs3AUR 使用不带 NTFS-3G 驱动的用户空间实用程序。

提示与技巧[编辑 | 编辑源代码]

提高性能[编辑 | 编辑源代码]

你可以启用为 mount(8) 启用 prealloc 选项来为并行写入操作减少碎片(对机械硬盘更有用)。

防止创建 Windows 不支持的命名[编辑 | 编辑源代码]

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

从内核版本 6.2 开始,ntfs3 支持 windows_names mount(8) 选项。使用该选项可严格保证兼容性。

注意: udisks 默认启用该选项。

已知问题[编辑 | 编辑源代码]

挂载时需要明确的文件系统类型[编辑 | 编辑源代码]

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

要挂载文件系统,请将其类型指定为 ntfs3。例如,使用 mount(8)-t/--types 选项:

# mount -t ntfs3 /dev/sdxY /mnt

排障[编辑 | 编辑源代码]

unknown filesystem type 'ntfs'[编辑 | 编辑源代码]

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

mount: /mnt: unknown filesystem type 'ntfs'

请参阅#挂载时需要明确的文件系统类型

如果您想将 ntfs3 作为 ntfs 分区的默认驱动程序,那么 udev 规则可以解决问题:

/etc/udev/rules.d/ntfs3_by_default.rules
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs3"

不过这仅为一种方法而非建议,并且可能弄晕一些第三方工具。

udisks 支持[编辑 | 编辑源代码]

本文内容或本节内容已经过期。

原因: 下面描述的问题已被修复。从内核版本 6.2 开始,ntfs3 支持 windows_names 选项。 (在Talk:NTFS讨论)

udisks 支持 NTFS3,但当前有一些问题。请参阅 udisks ntfs3 PRissue 932

当 NTFS3 驱动因为 NTFS-3G 未被安装时被使用,但是挂载选项未改变时,可能会有以下的错误:

ntfs3: Unknown parameter 'windows_names'

Filesystem type ntfs3,ntfs not configured in kernel

第二种错误会在 Dolphin 遇到。Nautilus 也会在遇到脏的 NTFS 分区时报出同一报错信息(可参考#无法用 ntfs3 挂载被标记为脏的分区)。

作为一种解决办法,添加以下选项到 /etc/udisks2/mount_options.conf[defaults] 部分中:

ntfs_defaults=uid=$UID,gid=$GID,prealloc

见: 无法使用自 Linux 5.15 被引入的新 ntfs3 模块挂载 NTFS。

无法用 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 来清理它。 [1]

参见[编辑 | 编辑源代码]