当前位置: 首页 > 科技观察

如何使用原生的NTFS驱动替换旧的FUSENTFS驱动

时间:2023-03-22 14:43:56 科技观察

介绍最初Linux内核没有原生支持NTFS,后来对NTFS的支持只提供了只读功能。Tuxera的NTFS-3G是之前的主流方案,但在实际使用中出现了一些问题。NTFS-3G是通过Linux用户空间文件系统(FUSE)模块在用户层实现的支持NTFS的文件系统,其对NTFS的访问逻辑代码在用户层代码中实现。在NTFS3出现之前,在Linux上使用NTFS的主要问题是缺乏稳定和全功能的读/写支持。2020年,ParagonSoftware做出了一个惊人的决定:尝试将以前只提供给商业客户的NTFS3驱动贡献给Linux主线。最后,经过多轮的审核和修改,Linuxkernel5.15加入了Paragon提供的NTFS3内核驱动,性能更高,功能更多。此驱动程序实现了对NTFS文件系统中普通文件、稀疏文件和压缩文件的读/写支持。支持本地日志回放。支持已安装的NTFS卷的NFS导出。支持文件和文件夹权限管理。使用ntfs3驱动替换ntfs-3g挂载windowsNTFS分区如何使用NTFS3驱动挂载NTFS卷使用NTFS3驱动挂载时使用的文件系统类型为ntfs3。以前手动挂载NTFS-3g驱动的方法是:#mount-tntfs-3g/dev/sdxY/mnt现在只需要将ntfs-3g换成ntfs3即可:#mount-tntfs3/dev/sdxY/mnt-t表示文件系统类型,/dev/sdxY是你的NTFS卷(分区)的路径,可以使用lsblk命令查看。/mnt是要挂载的目标文件夹。如果需要指定挂载参数,可以使用-o指定参数,如:#mount-tntfs3-oiocharset=utf8,umask=22,prealloc/dev/sdxY/mntwhereiocharset=utf8,umask=22、preallocMount参数,详见下文解释。启动时自动挂载要启动时自动挂载,编辑/etc/fstab文件,添加如下一行:UUID=****/datantfs3iocharset=utf8,umask=0,prealloc00其中UUID=****是指定卷(分区)的UUID。使用UUID的优点是它们独立于磁盘安装顺序。如果你在BIOS中更改了存储设备的顺序,或者重新插拔了存储设备,或者某些BIOS可能会随机更改存储设备的顺序,那么使用UUID来表示指定的卷(分区)会更有效的。可以使用blkid命令查看UUID。/data是挂载位置。这个例子的位置是/data,你需要提前创建这个文件夹。下面的选项都是挂载参数,见后面的介绍。最后两个00,表示是否备份,是否校验。00表示不备份,不校验。挂载参数说明<如果显示不完整,请左右滑动>参数说明iocharset=name该选项告诉驱动程序如何解释路径字符串并将其转换为Unicode或返回。如果未设置此选项,将使用默认代码页。示例:iocharset=utf8uid=挂载用户IDgid=挂载组IDumask=控制挂载NTFS卷后创建的文件/目录的默认权限。dmask=fmask只适用于文件,dmask只适用于目录,而不是指定一个同时适用于文件和目录的umask。fmask=seeabovenoacsrules“无访问规则”挂载选项将文件/文件夹的访问权限设置为777,所有者/组为root。此挂载选项吸收所有其他权限。文件/文件夹的权限更改将报告为成功,但仍为777。所有者/组更改将报告为成功,但他们将保留为root。nohiddenLinux不会显示具有Windows特定隐藏(FILE_ATTRIBUTE_HIDDEN)属性的文件。sys_immutable具有Windows特定系统(FILE_ATTRIBUTE_SYSTEM)属性的文件将被标记为系统不可变。discard支持TRIM命令以提高删除操作的性能,推荐用于固态硬盘(SSD)。force强制驱动程序挂载分区,即使该卷被标记为脏。不推荐使用。稀疏创建一个稀疏的新文件。showmeta使用该参数显示一个挂载的NTFS分区上的所有元文件(系统文件)。默认情况下隐藏所有图元文件。prealloc当文件大小在写入时增加时,为文件过度预分配空间。在对不同文件执行并行写入操作时减少碎片。acl支持POSIXACL(访问控制列表)。如果内核支持则有效。不要与NTFSACL混淆。指定为acl的选项支持POSIXacl。NTFS3的优点NTFS3是内核模式驱动,ntfs3在速度和负载上都比ntfs-3g好很多。很多网友做过测试:ntfs-3g和Linux5.15+ntfs3驱动的简单性能测试Linux5.15内核NTFS3性能评测除了更好的性能,NTFS3还支持挂载用户和文件权限管理等功能。具体使用方法可以自行学习gid、uid和umask的用法。此外,NTFS3还支持NTFS的prealloc特性,可以大大减少文件碎片的产生。关于NTFS3驱动无人维护问题Paragon在2020年发布了GNU通用许可下的NTFS3驱动,在开源后的一年里,NTFS3驱动经历了多轮review和修改,以提高代码质量。直到2021年合并到内核主线。但自从该驱动最终于2021年在Linux5.15中主线化以来,到目前为止,近一年时间还没有将重大错误修复推送到该驱动中。一些人推测,司机的维修人员康斯坦丁·科马罗夫(KonstantinKomarov)在俄罗斯,受到俄乌战争的影响。随后,包括LinusTorvalds在内的众多程序员对此事表示关注,并愿意参与贡献。现在,我们看到ParagonSoftware的KonstantinKomarov在离开休息和其他承诺后重新活跃在内核邮件列表中。Komarov在2022年6月3日提交了一批针对Linux5.19合并窗口的NTFS3修复,相信未来ntfs3会越来越好。而且目前ntfs3已经是Linux中最好的NTFS驱动了,我想你不妨试试看。