InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

更完善的 NTFS 支持?Linux 用户等了太久

  • 2021 年 9 月 10 日
  • 本文字数:1286 字

    阅读完需:约 4 分钟

更完善的 NTFS 支持?Linux 用户等了太久

在即将到来的 Linux Kernel 5.15 更新中,将添加 Paragon 的 NTFS3 内核驱动,以对微软 NTFS 文件系统提供更好的支持。此前 Paragon 使用 GPL 许可证开源了他们的 NTFSv3 驱动程序,Linux 5.15 目前并入了这个提交。

 

Linux 内核包含 NTFS 支持已经有很长一段时间了,然而到目前为止,在 Linux 上使用 NTFS 文件系统一直让人很头疼。旧的 NTFS 驱动程序已经很久没有维护了,另外的办法是使用来自 Tuxera 的 NTFS-3G,这也是目前主流的解决方案,但在实际使用中也有不少小问题。

NTFS-3G 不能很好的胜任工作


最初 Linux 内核没有对 NTFS 做原生支持,NTFS-3G 是借助 Linux 的用户空间文件系统 FUSE 模块在用户层实现的一个模仿对 NTFS 支持的文件系统,对 NTFS 的访问逻辑代码都是在用户层代码实现的。

 

NTFS-3G 设计之初就包含读写,为什么也出现只读的情况。

 

首先 NTFS 是微软开发的的私有文件系统并不是开源的,也从来没有公开过任何技术细节,并且一直在不断地进行更新。NTFS-3G 没有办法获得微软官方的支持,NTFS-3G 的解决方案是通过种种逆向手段反推 NTFS 文件系统结构,以及如何访问 NTFS 的逻辑。这也就说明 NTFS-3G 对 NTFS 的兼容是没有微软官方保证的。NTFS 本身版本更新、你的系统更新或者 NTFS-3G 本身出问题等等都可能对 Linux 上 NTFS 的读写造成影响,此外,出问题了也需要 NTFS-3G 的工程师继续逆向分析来解决。

 

Linux 上使用 NTFS 主要问题还是缺乏稳定且功能齐全的读/写支持。

NTFS3 内核开源助 Linux NTFS 迎来新生


Paragon 去年在 GNU 通用许可证下发布了 NTFS3 驱动程序,在此之前,NTFS3 是一个用于商业销售的驱动程序。开源的原因可能是由于微软的 exFAT 吸引了大部分的注意力,正在慢慢变得主流,NTFS 不再是行业的宠儿。而 Linux 作为云部署中使用最广泛的操作系统,随着容器的兴起,NTFS 也不会成为文件系统的统治者,将 NTFS 的驱动程序作为专有解决方案的盈利能力越来越不可行。

 

在开源后的一年里,NTFS3 的驱动经过了多轮审查,用来提高代码质量,以保证更好地跟上游编码标准保持一致。由于当前内核驱动已经很久没有维护,NTFS3 已经可以提供比当前内核驱动更多的功能,尤其是写入支持。跟同样基于 FUSE 的开源 NTFS-3G 相比也具有更强的功能和性能。

 

Paragon 将 NTFS3 驱动程序提交到 Linux 内核的动作也获得了一致好评,这一举措甚至被称作“英雄行为”,给那些不得不在 Linux 上处理 NTFS 文件系统的人带来了救命良药。

 

Linux 之父 Linus Torvalds 表示他们可能会将旧的 NTFS 内核代码转移到 staging 上,慢慢废弃直到完全删除它,但目前来看 NTFS3 只是一个新的选择。

 

虽说 NTFS 的使用正在减少,但大多数外部驱动器仍是用 NTFS 文件系统格式化的,新的驱动程序的加入将更好地帮助 Linux 在默认状态下使用 NTFS 格式的驱动器。

 

目前就是等待 Linux 5.15 的正式更新以及各大发行版尽快跟进。

 

参考链接:

 

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7464060f7ab9a2424428008f0ee9f1e267e410f

 

关联阅读:

 

为什么早期的 Windows 需要整理碎片

 

如何实现支持百亿级文件的分布式文件存储

2021 年 9 月 10 日 18:083922

评论

发布
暂无评论
发现更多内容

做一次黑客,入侵一次服务器

叫我阿柒啊

Docker 入侵 docker远程 redis注入

部署混合云环境的5大挑战

浪潮云

云计算

Kubernetes 普及系列:容器基础入门

CODING DevOps

Kubernetes

飞猪基于 Serverless 的云+端实践与思考

阿里巴巴云原生

Serverless 容器 运维 云原生 监控

简单了解 MySQL 中相关的锁

SH的全栈笔记

MySQL 后端

Hive窗口函数与分析函数

大数据技术指南

hive 5月日更

字节跳动Java岗一二三面全经过分享

北游学Java

Java 字节跳动 面试

每个开发人员都应该知道的 10 个 GitHub 仓库

LeanCloud

GitHub web开发

超级详细!全网独家首发的SpringCloud Alibaba 到底有多强?

Java 程序员 架构 面试

Spark知识点简单总结

五分钟学大数据

大数据 spark 5月日更

百度 Serverless 架构揭秘与应用实践

百度开发者中心

百度 开源 Serverless 云原生

双非渣硕也能上岸?痛述阿里Java岗7轮技术面经历,险幸上岸

Java 程序员 架构 面试

为什么5、6月会空缺出大量技术岗?跳槽注意事项+面试官关心什么

Java架构师迁哥

IO

ltc

IO流

iOS面试--拼多多最新iOS开发面试题

一意孤行的程序员

ios swift 面试 ios开发 知识分享

我粉了!阿里大牛从内部带出来的百亿级高并发系统,从基础到实战、面面俱到

Java 程序员 架构 面试

高级软件工程师必备的五大技能

架构精进之路

5月日更

并发王者课 - 青铜 3: 双刃剑-理解多线程带来的安全问题

MetaThoughts

Java 多线程 并发 王者并发课

ETL-KETTLE工具使用

this

Java 数据 数据同步 ETL

参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!

阿里巴巴云原生

开源 开发者 云原生 dubbo 中间件

阿里云原生开源大家族加入中科院软件所开源软件供应链点亮计 - 暑期 2021

阿里巴巴云原生

开源 容器 微服务 开发者 云原生

程序员写好技术文章的几点小技巧

阿里巴巴云原生

程序员 云原生 写作 写作技巧

5分钟速读之Rust权威指南(八)

码生笔谈

rust

首届HarmonyOS开发者创新大赛颁奖典礼于深圳召开

科技汇

玩转直播系列之消息模块演进(3)

vivo互联网技术

Java 服务器 消息系统 直播技术

推荐计划 | 推荐好友用 CODING,获高额返现奖励

CODING DevOps

团队管理 敏捷开发 研发工具 开发团队

☕【JVM 技术之旅】让你完全攻克内存溢出(OOM)这一难题(上)

浩宇天尚

JVM OOM 异常 Exception 5月日更

华为HMS生态和1+8+N的交叉点,点透棋局的华为帐号

脑极体

面向WEB开发人员的Docker(五):部署开发WordPress

devpoint

Docker Wordpress 部署 Docker-compose

仰望天空,脚踏实地 —— CODING OKR 全新上线

CODING DevOps

团队管理 OKR

阿里大牛耗时三年整理出来的4588页Java面试诛仙手册,已全面开源

马小晴

Java 编程 程序员 面试 计算机

更完善的 NTFS 支持?Linux 用户等了太久-InfoQ