最全面、最前沿、最专业的游戏研发实战

提供最全面的游戏研发技能分享,让您在最短时间变成高级游戏工程师

查看:0|回复:1

【行业】Linux 文件系统与 Windows 文件系统的差异是什么?

 attach_img

3

帖子

4

回复

7

积分
最后登录:
2025-03-23 07:16
注册时间:
2023-11-10 17:16
楼主
  发表于:2025-03-23 08:33:14|查看用户信息
Linux 文件系统与 Windows 文件系统的差异:在规范方面的差异,以及权限上的差异如何?Linux下的文件命名要求比 Windows 弱么?例如 Linux 下文件命名可以使用“:”等符号。

4

帖子

4

回复

6

积分
最后登录:
2025-03-23 07:40
注册时间:
2023-05-19 10:16
1 楼
  发表于:2025-03-23 08:41:44|查看用户信息

题主能不能先把错字改改?

说正题,Linux和Windows文件系统基本没有什么是一样的,所以差异就是所有的东西都不一样,而且这样比较没有太大意义,两者的设计目的都不一样。

下面这个链接有比较所有文件系统的,包括文件名长度、名字空间、路径长度、文件最大尺寸、分区最大尺寸、元数据属性(比如支持多少种时间戳)、支持的功能(比如支持各种软硬链接、CopyOnWrite等)、块分配策略(是否支持稀疏文件、extents)等各种信息的比较:


首先,说规范方面,因为就是两种不同的东西,所以规范毫无相同点可言。但需要明确的一点是,Windows文件系统实际上也只有一个根,虽然用户层面上看到的是C盘、D盘这些东西,这只是为了兼容的需要,在内核里,分区的组织结构如下图:

1.jpg

定义盘符的Windows API叫DefineDosDevice,可见盘符其实是为了兼容性而保留的东西。

路径的起点和布局并不属于文件系统的规范的一部分,它属于分区管理(或者Linux里的挂载点管理),同时NTFS和ext都支持动态的卷(挂载点)管理。

NTFS的可用字符集其实比ext还多,但是NTFS可用字符集是所有字符,实际使用中,它有一个名字空间的标识,所以能不能用“:”其实是上层决定的,文件系统驱动层是允许用一切符号的,应用层不允许用那么多符号完全是因为兼容性的问题,如果你喜欢用内核API,完全可以建立一个文件名为“*”的文件。


顺便说一句:NTFS如果使用POSIX名字空间,那么它的字符限制就跟ext完全相同。

关于权限设置,Linux里一般使用drwxrwxrwx+UID+GID这种模式来定义,但NTFS权限定义要复杂的多,NTFS的安全描述符(SECURITY_DESCRIPTOR)一个变长的,可以定义多组的属性,如果比较扩展性来说,我个人认为NTFS的安全描述符扩展性更好一些。


现在说一些具体的两个文件系统的区别:

1、文件名长度方面,NTFS和ext4相同,最大都是255个字符,但路径长度ext4没有限制,NTFS内核限制是路径长度不宜超过65536个Unicode字符,但受到应用API限制,最长是255(可以绕过这个限制)

2、NTFS最大文件是16EB,最大分区是16EB,ext4最大文件是16TB,最大分区是1EB。

3、二者支持的时间戳都一样,都支持记录创建时间、访问时间、修改时间。ext4部分支持ECC,而NTFS不支持,另外两者记录时间的精度不同,ext4的精度是1纳秒,NTFS精度是100纳秒。

4、ext4支持块级的日志,但默认关闭,NTFS不支持,但考虑到NTFS其实是把所有内容(包括元数据)都认为是文件(ext4则区分文件和元数据),所以NTFS没有必要做块级的日志。

5、ext4不支持文件文件快照,NTFS支持,另外NTFS支持文件修改日志。

6、NTFS原生支持数据加密,ext4需要在格式化时指定是否支持数据加密,格式化以后无法修改。

7、ext4似乎不支持Copy On Write,但从ext4的逻辑上看,不支持Copy On Write也可以理解,因为有日志。NTFS支持。

8、NTFS在Windows Server版本上支持消除重复数据的功能(类似于网盘的秒传)

9、ext4和NTFS都支持稀疏文件,其中NTFS还支持块的再分配(把未完全使用的一个块拆成多个块再分配),ext4支持异步分配(Allocate on flush,这个该怎么翻译最合适?),可以减少碎片。


共 1/1 页

0

帖子

0

回复

0

积分
最后登录:
1970-01-01 08:00
注册时间:
1970-01-01 08:00
会员必须登录才能发布帖子! 点击登录