Linux 挂 NTFS:ntfs3 和 ntfs-3g 怎么选,dirty/休眠/unknown filesystem type 怎么排
Linux 上挂 NTFS 现在主要有两条路:内核态的 ntfs3 和用户态 FUSE 的 ntfs-3g。两者挂载类型名不同,参数和报错也不一样。下面按驱动、挂载方式、参数、报错对照和选型整理。
三代驱动
- 2001 年起 Linux 内核有原生 NTFS 支持,但只读、写入极有限、无日志。
- Tuxera 的 NTFS-3G 长期是事实标准:基于 FUSE 用户空间文件系统,读写完整,支持创建、删除、重命名、硬链接、数据流、稀疏文件、透明压缩、符号链接、设备文件、FIFO、POSIX ACL。代价是 FUSE 层有性能损耗。
- 2020 年 Paragon 把商业 NTFS3 驱动贡献给主线,Linux 内核 5.15 合并,挂载类型名为
ntfs3。它是内核态实现,支持读写、压缩、稀疏文件、日志重放、NFS 导出、文件权限,性能与资源占用优于 FUSE 版。 - Paragon 另有商业版 NTFS for Linux(UGM 等),开源
ntfs3为 GPL。 - 注意:
ntfs3内核驱动没有配套用户态工具;格式化、维护用ntfs-3g包里的ntfsprogs,或者用 Windows。
挂载方式
ntfs3:
mount -t ntfs3 /dev/sdxY /mnt
带参数:
mount -t ntfs3 -o iocharset=utf8,umask=22,prealloc /dev/sdxY /mnt
fstab:
UUID=**** /data ntfs3 iocharset=utf8,umask=0,prealloc 0 0
ntfs-3g:
mount -t ntfs-3g /dev/sda1 /mnt/windows
ntfs-3g /dev/sda1 /mnt/windows
ntfs-3g 有变体:ntfs-3g 与 lowntfs-3g。lowntfs-3g 支持 ignore_case,不支持 streams_interface=windows。
设备路径用 lsblk 查。
ntfs3 挂载参数
iocharset=name:默认代码页,常用utf8。uid=/gid=:指定属主、属组。umask=:同时管文件和目录。fmask:只管文件。dmask:只管目录。noacsrules:把权限设成 777、属主 root,吸收其它权限。此时chmod/chown会报成功但实际不变。discard:支持 TRIM,SSD 建议开。force:卷标脏也强制挂载,不建议。showmeta:显示所有元文件,默认隐藏。prealloc:写入增大时预分配,减少碎片。acl:支持 POSIX ACL,注意与 NTFS ACL 不同。windows_names:严格保持 Windows 兼容。
常见报错对照
1. unknown filesystem type 'ntfs'
mount: /mnt: unknown filesystem type 'ntfs'
内核启用了 CONFIG_NTFS_FS 兼容选项。用 ntfs 类型挂载会走旧驱动,只读。改用 -t ntfs3。
可以写 udev 规则把 ID_FS_TYPE 由 ntfs 改成 ntfs3,但不推荐,可能干扰第三方工具。
2. 文件系统以只读方式挂载
同样是因为用了 ntfs 类型。换成 ntfs3 类型即可读写。
3. 分区 dirty,无法用 ntfs3 挂载
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
dmesg:
sdb1: volume is dirty and "force" flag is not set!
ntfs3 默认不挂载被标记 dirty 的卷。用 ntfsfix --clear-dirty 清理,或者 force,但不建议。
4. Windows 休眠 / 快速启动导致拒绝挂载
Windows 用休眠代替真正关机。hiberfil.sys 存在时,NTFS 分区无法挂载。
处理方式:
- 恢复 Windows 正常关机。
- 或者
ntfs-3g -o remove_hiberfile。这会删除休眠文件,保存的 Windows 会话全部丢失。 - 或者
ntfsfix删除休眠元数据。
5. 挂载失败排查
fstab 里改用 UUID,而不是 /dev/sdX。BIOS 改存储顺序或者重新拔插,设备名会变。
即使 ntfs3 已加载,不带 -t ntfs3 也可能失败,因为 ntfs3 未列在 /etc/filesystems。
6. ntfs-3g 权限
默认行为像设了 silent、allow_other、nonempty。no_def_opts 取消这些默认。
挂块设备需要 root。即便 fstab 有 user 选项,ntfs-3g 对 setuid 有硬编码限制。卸载可用 fusermount -u 免 root。
streams_interface=none|windows|xattr 控制命名数据流 ADS 访问,默认 xattr。
7. NTFS 有错时
ntfs-3g 只读挂载。修复优先用 Windows chkdsk,ntfsfix 只能修部分错误。
选型
- 内核 ≥5.15,且要性能、权限管理:选
ntfs3。 - 老内核,或者需要
ntfsprogs工具链、更保守的成熟度:选ntfs-3g。 - 常读写同一分区,尤其双系统:注意 Windows 快速启动 / 休眠,务必干净关机。