使用原生 NTFS 驱动替代旧版 FUSE NTFS 驱动 和挂载说明
NTFS 是 Windows NT 系列操作系统支持的磁盘文件系统格式,它是一个特别为网络和磁盘配额、文件加密等管理安全特性设计的文件系统。 而 Linux 内核中新进入主线支持的 NTFS3 驱动是一个功能齐全的 NTFS 驱动程序,该驱动程序适用于最高的 NTFS 3.1 版本。
最初,Linux 内核没有 NTFS 的原生支持,后来对 NTFS 的支持也仅提供了只读功能。来自 Tuxera 的 NTFS-3G 是之前主流的解决方案,但在实际使用中也存在一些问题。 NTFS-3G 是借助 Linux 的用户空间文件系统(FUSE)模块在用户层实现的一个对 NTFS 支持的文件系统,其对 NTFS 的访问逻辑代码都是在用户层代码实现的。 在 NTFS3 出现之前,Linux 上使用 NTFS 主要问题还是缺乏稳定且功能齐全的读/写支持。2020 年,Paragon 软件公司做出了一个惊人的决定: 尝试将之前只提供给商业客户的 NTFS3 驱动程序贡献到 Linux 主线。最终,在经过多轮审核和修改之后,Linux 内核 5.15 合并了 Paragon 提供的 NTFS3 内核驱动, 它拥有更高的性能和更多的特性:
- 该驱动程序实现了对 NTFS 文件系统中的正常、稀疏和压缩文件的读/写支持。
- 支持本地日志回放。
- 支持已挂载的 NTFS 卷的 NFS 导出。
- 支持文件和文件夹的权限管理。
使用 NTFS3 驱动挂载 NTFS 卷:使用 NTFS3 驱动挂载时使用的文件系统类型是 ntfs3。
以前使用 NTFS-3g 驱动的挂载方式是:
mount -t ntfs-3g /dev/sdxY /mnt
现在只需要将 ntfs-3g 替换为 ntfs3 即可:
mount -t ntfs3 /dev/sdxY /mnt
-t 指出文件系统类型,/dev/sdxY 是你的 NTFS 卷(分区)的路径,可以使用 lsblk 命令查看。/mnt 是挂载的目标文件夹。
如果需要指定挂载参数,可使用 -o 指定参数,如:
mount -t ntfs3 -o iocharset=utf8,umask=22,prealloc /dev/sdxY /mnt
这里的 iocharset=utf8,umask=22,prealloc 挂载参数,详见后文解释。
开机自动挂载
如需在开机时自动挂载,可编辑 /etc/fstab 文件,添加如下行:
UUID=**** /data ntfs3 iocharset=utf8,umask=0,prealloc 0 0
其中 UUID=**** 是指定卷(分区)的 UUID。使用 UUID 的好处在于它们与磁盘挂载顺序无关。
如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 来表示指定卷(分区)会更有效。
可以使用 blkid 命令查看 UUID 。
/data 是挂载位置。本示例的位置是 /data,你需要提前创建这个文件夹。后面的选项都是挂载参数,参见后文介绍。最后两个 0 0 ,表示是否备份和是否检查。0 0 表示不备份、不检查。
挂载参数说明
参数 | 描述解释 |
---|---|
iocharset=name | 此选项告知驱动程序如何解释路径字符串,并将其转换为 Unicode 或返回。如果未设置此选项,将使用默认代码页。示例:iocharset=utf8 |
uid= | 挂载用户 ID |
gid= | 挂载组 ID |
umask= | 控制装载 NTFS 卷后创建的文件/目录的默认权限 |
dmask= | fmask 只适用于文件,dmask 只适用于目录,而不是指定同时适用于文件和目录的 umask |
fmask= | 见上一行 |
noacsrules | “无访问规则”装载选项将文件/文件夹的访问权限设置为 777,所有者/组设置为 root。此装载选项吸收所有其他权限。文件/文件夹的权限更改将报告为成功,但仍将保持 777。所有者/组更改将报告为成功,但他们将保留为 root 用户 |
nohidden | Linux 下不会显示具有 Windows 特定隐藏(FILE_ATTRIBUTE_HIDDEN)属性的文件 |
sys_immutable | 具有 Windows 特定系统(FILE_ATTRIBUTE_SYSTEM)属性的文件将标记为系统不可变文件 |
discard | 支持 TRIM 命令以提高删除操作的性能,建议将其用于固态驱动器(SSD) |
force | 即使卷被标记为脏,也强制驱动程序装载分区。不建议使用 |
sparse | 创建稀疏的新文件 |
showmeta | 使用此参数可显示已装入 NTFS 分区上的所有元文件(系统文件)。默认情况下,所有元文件都是隐藏的 |
prealloc | 当写入时文件大小增加时,为文件过度预分配空间。减少对不同文件执行并行写入操作时的碎片 |
acl | 支持 POSIX ACL(访问控制列表)。如果内核支持,则有效。不要与 NTFS ACL 混淆。指定为 acl 的选项支持 POSIX acl |
NTFS3 是内核态的驱动,ntfs3 比 ntfs-3g 无论是速度还是负载都要好上不少。
文章来源:https://mp.weixin.qq.com/s/xqvXG8NSgPEbsU-cKeYakg