原来 Mac 和 iPhone 的文件系统 HFS+这么烂

2017-06-02 16:32:22 +08:00
 porrat

[HFS+的元数据有全局锁,同一时间只有一个进程可以访问更新文件系统。在单核处理器连手机平板都较少见到的当今,这种设计显得很幼稚。]

[HFS+亦没有稀疏文件的支持]

[此外,HFS+不具备元数据校验功能、快照功能、写入时复制功能、就地执行功能、逻辑卷管理功能等很多现代磁盘系统所具备的功能,也不能动态调整文件块大小。这些功能的加入并不容易。]

[其中最要命的是,HFS+不像一些先进的文件系统,支持写入时复制事务模型,也没有快照和克隆。这使得用户数据时时处于风险之中。例如由于因为断电、内核崩溃等原因,文件系统上写到一半的数据,小则导致个别文件损坏,大则导致整个文件系统崩溃。]

全文见 https://www.evernote.com/shard/s102/sh/f87ec062-7202-4159-923f-bb85ade713b4/3bdb40cdd132beb6

Apple 知道 HFS+这么不稳定,所以很早就搞出了 Time Machine ?

13576 次点击
所在节点    程序员
51 条回复
sfz97308
2017-06-02 16:37:08 +08:00
所以有了 APFS
QAPTEAWH
2017-06-02 16:44:49 +08:00
很多功能 ext4、ntfs 也没有嘛。只有真正比较新(unstable)的 fs 才有。

[文件系统上写到一半的数据,小则导致个别文件损坏,大则导致整个文件系统崩溃。] 一般日志型文件系统,断电会丢文件,整个挂掉没听说过。
Weny
2017-06-02 16:46:02 +08:00
APFS 这不马上都换上了嘛
ivmm
2017-06-02 16:47:07 +08:00
作为商业公司的苹果出 APFS,效率比开源社区的 FS 高
likuku
2017-06-02 16:54:20 +08:00
[此外,HFS+不具备元数据校验功能、快照功能、写入时复制功能、就地执行功能、逻辑卷管理功能等很多现代磁盘系统所具备的功能,也不能动态调整文件块大小。这些功能的加入并不容易。]

... 这些也只有 ZFS,btrfs 才具有好吗...
Totato5749
2017-06-02 16:55:55 +08:00
macOS 上 APFS 遥遥无期
Oamin
2017-06-02 17:01:15 +08:00
iOS 已经换 APFS 了,就等 macOS 了。
WheatField
2017-06-02 17:02:29 +08:00
乔布斯曾说,计算机根本不需要文件系统
goodryb
2017-06-02 17:04:02 +08:00
https://zh.wikipedia.org/wiki/HFS%2B HFS+ 1998 年发布的
https://zh.wikipedia.org/wiki/Windows_XP Windows_XP 2001 年发布的

批判之前,先好好了解历史
Kilerd
2017-06-02 17:09:24 +08:00
@likuku btrfs 这个大坑。
Felldeadbird
2017-06-02 17:09:33 +08:00
用了 3 年多 MAC OS,没遇到过系统崩溃。也就试过一次为了解决环境问题,重新安装系统。
we000
2017-06-02 17:10:49 +08:00
@QAPTEAWH 哪个 NTFS 没有?

HFS+太落后于时代了, 全局锁和不支持稀疏文件简直渣渣.

@goodryb 但是别家都知道升级 FS 是不, HFS+落后不是大问题, 落后到 2017 年就是大问题.

HFS+和 XCode 之于 Apple, 国足之于中国, 都是脑残粉也不得不吐槽的点...
porrat
2017-06-02 17:11:38 +08:00
还有 Mac 和 iOS 至今不支持增量更新,坑爹
milugt
2017-06-02 17:12:20 +08:00
所以你承认自己是脑残了?周末了刷一波存在感是吧
UnknownR
2017-06-02 17:12:29 +08:00
楼主你猜一下带这些功能的 ReFS 格式是几几年发布的,HFS+又是几几年发布的
honeycomb
2017-06-02 17:14:09 +08:00
@likuku
古老的 NTFS 至少有元数据校验
honeycomb
2017-06-02 17:14:54 +08:00
@we000 而且 apfs 会在短期内替代 hfs+
we000
2017-06-02 17:18:42 +08:00
@honeycomb 日也盼夜也盼
shoaly
2017-06-02 17:22:52 +08:00
减少对 apple 的期待之后, 回归正常. 就发现这事很正常了
goodryb
2017-06-02 17:24:43 +08:00
@we000 #12

为什么落后到 2017 年就是大问题,用 Mac 也有两三年了,没遇到过文件系统相关的问题。作为一个 98 年发布的文件系统,难道要预测 20 年后的需求? APFS 也应在 iOS 上使用了,MacOS 也许过不了多久就能用上,

另外,你所说的“别家都知道升级 FS ”,请看下面的

https://zh.wikipedia.org/wiki/NTFS#.E7.89.88.E6.9C.AC
微软正式发布的 NTFS 版本有五个:
v1.0,随 Windows NT 3.1 在 1993 年中旬发布[4]。v1.0 和 v1.1 和之后的所有版本不兼容。也即使用 NT 3.5x 写入的卷无法被 NT 3.1 读取。该问题的一个解决方案是使用 NT 3.5x 光盘更新 NT 3.1,并添加对 FAT 系统的长文件名支持。[6]
v1.1,随 Windows NT 3.5 于 1994 年秋季发布。
v1.2,随 Windows NT 3.51 于 1995 年中旬发布。支持压缩文件、命名流、基于 ACL (访问控制列表)的安全性等功能。[1]
v3.0,随 Windows 2000 发布。支持磁盘限额、加密、稀疏文件、重解析点[来源请求],更新序列数( USN )日志、$Extend 文件夹(及其中的文件),并改进安全描述符设计方案,允许使用同样的安全设置的多个文件共享一个安全描述符。[1]
v3.1 随 Windows XP 于 2001 年秋季发布,而后也用于 Windows Vista 和 Windows 7。在 MFT 中提供冗余 MFT 记录数扩展项,可用于恢复受损的 MFT 文件。
不应将 NTFS.sys 文件版本(如 Windows 2000 中的 v5.0 )和 NTFS 磁盘格式版本(如 Windows XP 开始的 v3.1 )相混淆。[7]
后续的 Windows 的版本更新增加了许多文件系统相关的功能,但并没有改变 NTFS 本身。例如 Windows Vista 增加了 NTFS 符号链接、事务 NTFS、磁盘收缩和自我修复,但除了符号链接外其他功能其实都由操作系统实现。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/365499

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX