为什么 Linux 和 macOS 不需要碎片整理

news2024/2/23 3:48:53

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。

相信今天很多的软件工程师使用的都是 Linux 或者 macOS 系统,与 Windows 不同,我们很难看到磁盘碎片整理这一概念,从个人的经验来看,作者在过去七八年没有在 macOS 中整理过磁盘的碎片,你在今天的磁盘工具中也找不到相关的操作,只能通过 diskutil 命令设置某一块磁盘是否开启或者关闭碎片整理。

图 1 - macOS 磁盘工具

我们在 前一篇文章 中曾经分析过为什么早期 Windows 操作系统每隔一段时间可能需要整理磁盘上的碎片[^1],该问题背后有两个原因,其一是 Windows 使用的 FAT 是很简单的文件系统,该文件系统的设计决定了同一份文件可能会散落在磁盘的不同位置,其二是固态硬盘在上古时代没有普及,机械硬盘的随机读写性能很差。

Linux 和 macOS 系统不需要碎片整理的原因与 Windows 需要碎片整理的原因正好相反:

  • Linux 和 macOS 使用的文件系统或者降低了碎片发生的概率或者实现自动整理碎片的特性;

  • 固态硬盘与机械硬盘具有不同的特性,碎片整理可能不仅对提高读写性能没有显著的帮助,还不利于硬件的使用寿命;

文件系统

Linux 一般都使用 Ext2、Ext3 和 Ext4 文件系统,今天的大多数 Linux 发行版都选择了 Ext4。与 Windows 将多个文件连续存储的方式不同,Linux 会把文件散落到磁盘的不同地方存储,同时在文件之间留下一些空间,保证文件在修改或者更新时不会造成碎片。

图 2 - Linux 文件系统[^2]

今天的 macOS 多数都使用 APFS 文件系统[^3],它是苹果专门为固态硬盘等设备优化的文件系统。更早的 HFS 和 HFS+ 都是用了基于区块(Extent)的设计,每个区块都包含序号和一段连续的存储空间,这种分配方式会在文件系统中查找几个连续的区块来提供所需的空间。

图 3 - macOS 文件系统

无论是 Linux 还是 macOS,它们的文件系统都是基于区块设计的,而磁盘的空间分配也相对比较合理,所以不会出现 Windows 系统上碎片化的磁盘。

除了文件系统在设计就避免了碎片的出现之外,Linux 和 macOS 也都是引入了延迟分配空间的策略,它们会通过缓冲区尽可能延迟磁盘写入的时间,这样不仅能够降低刷盘的概率,还能增加文件写入相邻区块的概率,然而这种机制并不是没有副作用,在系统断电或者崩溃时可能会丢失更多的数据。

如果磁盘上确实出现了碎片,那么 Linux 和 macOS 的文件系统也会尝试移动出现碎片的文件,不需要额外的碎片整理工具,这种设计带来的用户体验会比手动触发耗时较长的碎片整理好很多。macOS 上的 HFS+ 系统还支持实时的去碎片化,当满足以下条件时会触发碎片整理[^4]:

  • 文件小于 20 MB;

  • 文件存储在 8 个以上的区块上;

  • 文件在过去一分钟没有被更新;

  • 系统已经启动了三分钟;

在多数情况下,这些操作系统中的磁盘碎片比例都非常低,只有在磁盘空间不足时才会开始出现碎片,所以在这时我们其实需要的是一个更大的磁盘或者更新的电脑,而不是整理磁盘上的碎片。

固态硬盘

固态硬盘其实已经是有着三十年历史的存储介质了,但是由于固态硬盘的价格在过去一直都十分昂贵,所以没有在数据中心和个人电脑中普及开来。哪怕是在今天,机械磁盘的价格与固态硬盘相比也有比较明显的优势。

图 4 - 固态硬盘和机械硬盘价格对比

新型的存储介质带来了全新的特性和性能,我们在前一篇文章中曾经介绍过,因为机械硬盘的机械结构,所以它的随机 I/O 与顺序的 I/O 性能可能相差几百倍,碎片整理可以将散落在磁盘上的数据合并到一处,随机 I/O 的次数减少自然也会提高读写文件的性能。

固态硬盘的顺序 I/O 和随机 I/O 在性能上虽然也有差异,但是差距可能在十几倍到几十倍之间,而固态硬盘的随机 I/O 延迟也比机械磁盘好几十倍甚至上千倍,到现在来看整理固态硬盘上的碎片虽然有收益,但是也比较有限。

图 5 - NAND 闪存的演进

作为电子元件的固态硬盘虽然有着较好的性能表现,但是固态硬盘都有循环擦写的次数限制,也被称作 P/E。它的寿命与机械硬盘相比却比较有限。如果一个 512 GB 的固态硬盘的擦写数目是 1000 次,每次写满数据都会消耗一次寿命,等擦写次数达到 1000 次之后硬盘就会报废,碎片整理其实就是主动移动硬盘上的数据,自然会影响硬件的寿命。

总结

在软件工程中有一个非常有趣的现象,做硬件和基础架构的工程师都在拼命优化系统的性能,然而应用层的工程师很多时候并不在乎性能上的微小差异,而这也是工作职责上的差异带来的结果,不同的位置决定了不同的关注点。

硬件的演进和革新深深地影响着上层软件的设计,想要设计出通用的系统是异常困难的,在设计文件系统时如果不考虑底层硬件的特性,也就无法充分利用硬件提供的性能并得到期望的结果。这里简单总结一下 Linux 和 macOS 不需要碎片整理的两个原因:

  • 文件系统基于区块分配的设计使得磁盘上出现碎片的概率很低,延迟分配和自动的整理策略解放了操作系统的使用者,在多数情况下不需要考虑磁盘的碎片化;

  • 固态硬盘的随机读写性能远远好于机械硬盘,随机读写和顺序读写虽然也有性能差异,但是没有机械硬盘的差异巨大,而频繁的碎片整理也会影响固态硬盘的使用寿命;

到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题,与前面的问题不同,作者会在后面的文章中解答这两个问题:

  • 为什么固态硬盘的擦写次数有上限?

  • 机械硬盘在哪些情况下更容易损坏?

如果对文章中的内容有疑问或者想要了解更多软件工程上一些设计决策背后的原因,可以在博客下面留言,作者会及时回复本文相关的疑问并选择其中合适的主题作为后续的内容。

推荐阅读

参考资料

[^1]: 为什么早期的 Windows 需要整理碎片 https://draveness.me/whys-the-design-windows-defragmentation/

[^2]: Is there a tool to visualize a filesystem allocation map on Linux? https://unix.stackexchange.com/questions/30743/is-there-a-tool-to-visualize-a-filesystem-allocation-map-on-linux

[^3]: Wikipedia: Apple File System https://en.wikipedia.org/wiki/Apple_File_System

[^4]: HFS+ and File System Fragmentation https://developercoach.com/file-system-fragmentation/

————

推荐图书

跟阿铭学Linux(第4版)

作者:李世明 

| 图书特色

  • 学习 Linux 的第一本书,让小白轻松学会的 Linux 入门书

  • 基于 CentOS 8 全面修订,新增 Docker 技术

  • 内容由浅入深,案例丰富,通俗易懂

本书是一本入门级的 Linux 学习教材,内容由浅入深,案例丰富,通俗易懂!书中分两部分:前面为基础知识,涉及安装、登录、文件和目录管理、磁盘管理、Vim、压缩和解压缩等;后面为进阶知识,包括 LAMP、LNMP、NFS、FTP、Linux 集群和 Zabbix 监控等。

与上一版相比,这版不仅将虚拟机软件由 VMware 10 改为 VMware 14,基于 CentOS 8 进行了全面修订,删掉了 LAMP 环境搭建与配置,还增加了 Docker 等内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://nwjs.net/news/141833.html

如若内容造成侵权/违法违规/事实不符,请联系七分地网进行投诉反馈,一经查实,立即删除!

相关文章

GPT「高仿」问世:GPT-Neo,最大可达GPT-3大小,已开源 | AI日报

GPT“高仿”问世:GPT-Neo,最大可达GPT-3大小,已开源近日,有个名叫 EleutherAI的团队(创始成员为:Connor Leahy,Leo Gao和Sid Black),宣布推出GPT-Neo开源项目&#xff0c…

Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images

下面内容来自智源研究院CVPR2021预讲华为诺亚专场 1、深度学习的图像去噪方法面临的挑战 当前方法主要包括三类: 基于监督学习的方法:使用 noisy-clean 图像对进行训练(DnCNN, FFDNet, CBDNet, SGNet)。这类方法的难点在于&…

《Pro/ENGINEER野火版5.0从入门到精通》——1.3 体验Pro/E野火版5.0

本节书摘来自异步社区《Pro/ENGINEER野火版5.0从入门到精通》一书中的第1章,第1.3节,作者 暴风创新科技,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 体验Pro/E野火版5.0 Pro/E野火版5.0与其他软件类似,操作程序时…

CVPR 2021评审出炉,评审员奇葩意见遭热议 | AI日报

CVPR 2021评审出炉,评审员奇葩意见遭热议1月18日,CVPR 2021的评审结果出炉。根据CVPR 2021 程序主席、FAIR研究科学家Georgia Gkioxari近日在推特上的发文数据:今年共有7015篇有效提交论文,每篇论文都至少有3个评审结果&#xff0…

书评 | 9 年码龄工程师读 Android 经典

作为一个码龄 9 年的 Android 开发工程师,因业界大前端趋势,从18 年开始更多的时间专注在 React Native 上,Android 相关新技术日渐生疏了。Kotlin 和 Jetpack 等新技术一直缺乏上手了解的机会,是时候通过一本书体系化地了解一下相…

stylegan2 示例命令fused_bias_act.cu环境配置异常(无法打开包括文件: “tensorflow/core/framework/op.h”

在python运行stylegan2示例时,运行过程中,触发fused_bias_act.cu中的异常,可以看到fused_bias_act.cu中实际上是用c/c写的实现代码. 仔细看异常信息会发现这句话 无法打开包括文件: “tensorflow/core/framework/op.h”: 解决策略 1.首先确保你安装了c/c工具集,版本号可以有些…

中科院计算所沈华伟:GNN发展简史,诟病才是成长动力

文:周寅张皓图神经网络(Graph Neural Network)的应用在近年来蓬勃发展,但同时对其质疑也从未消失。诸如对与大规模图数据的存储问题,表达能力问题,以及数据集的规范问题引发了许多讨论。中科院计算所沈华伟…

赠书活动 | 数据挖掘经典入门

赠书活动在 AINLP 公众号。这本书相当受欢迎(前两个版本累计销量超过 5 万册),尤其是受学校青睐——在此也说声抱歉,出于出版时间的原因,很多学校依然采用了旧版作为教材;同时也请知悉,新版已上…

《C语言编程初学者指南》一2.9 理解运算符优先级

本节书摘来自异步社区《C语言编程初学者指南》一书中的第2章,第2.9节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.9 …

产品开发的 11 宗罪

题图 | created by freepik最近图灵君在翻看一本比较小众的书:《硬件产品设计与开发:从原型到交付》,没成想翻开前言和第 1 章都很惊艳,尤其是第 1 章总结的《产品开发的 11 宗罪》,真的让我受益匪浅。因为这篇文章总结…

盘点:2020 年机器学习 10 大进展

转载自:机器之心2020 年因为新冠疫情,很多人不得不在家工作和学习,大量人工智能学术会议也转为线上。不过在去年我们仍然看到了很多 AI 技术领域的进展。DeepMind 研究科学家 Sebastian Ruder 近日帮我们对去年的机器学习社区进行了一番总结。…

《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

本节书摘来自异步社区《精通自动化测试框架设计》一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 五天太久,还能压缩吗两…

终于!有本书把我从“看完就忘、死记硬背”的学习困境中拯救出来了!

设想一下,你面前有一堵由5000个魔方组成的魔方墙,从中间分割成两块,左右各2500个,并且它们的图案完全一致!这时,有人从右边的墙上随机挑选一个魔方,让九个方格中的一个变换颜色,你能…

一秒看遍10万神经元的「绚丽烟花」,AI究竟向大脑学什么?|北大陈良怡专访...

作者:梦佳大脑是人类进化的高级产物,重量约1.5公斤,占体重2%,功耗约20瓦,占全身功耗20%,当前人类对大脑的认识还不足5%,尚无完整的脑谱图可供参考。毫无疑问&…

一本真正讲“大数据”处理思路的书

这是我读到的第一本真正讲“大数据”处理思路的书,我想分享一下我读了这本书的感悟。一般情况下,在面对海量数据的时候,我们的软件架构也会跟着发生变化。当你的数据量在内存里放不下的时候,你就得考虑硬盘;当你的硬盘…

这些代码改变了科学界:从Fortran、arXiv到AlexNet

转自:机器之心2019 年,「事件视界望远镜」团队拍下了第一张黑洞照片。这张照片并非传统意义上的照片,而是计算得来的——将美国、墨西哥、智利、西班牙和南极多台射电望远镜捕捉到的数据进行数学转换。该团队公开了所用代码,使科学…

不存在完美的入门书,但是有些书在某些方面很惊艳

题图 | Technology vector created by stories - www.freepik.com前段时间收到了明发哥翻译的《Android 编程权威指南(第4版)》,许久没有打开纸质书,但翻阅时的纸墨味儿依旧,仿佛回到了几年前初学 XML 布局的时候。我从…

两院院士评选2020年中国、世界十大科技进展揭晓,「机器学习模拟上亿原子」等入选 | AI日报...

两院院士评选2020年中国、世界十大科技进展揭晓,「机器学习模拟上亿原子」等入选由中国科学院、中国工程院主办,中国科学院学部工作局、中国工程院办公厅、中国科学报社承办,腾讯集团发展研究办公室协办的中国科学院院士和中国工程院院士投票…

一本书带你入门商业数据科学

老马(Matt Taddy)是 Central Economics Team 的 VP,亚马逊北美首席经济学家。相当于大型智囊团里的二当家的。在来亚马逊之前,老马是芝加哥大学布斯商学院的明星教授,他是学数理统计出身的,一开始教授的是统…

面对500篇GNN论文,心态差点儿崩了,幸好我有这本小书

题图 | Computer vector created by stories - www.freepik.com说起来,大学时代的图灵君也算得上是零挂科修完全部计算机课程的人才。怀着对前沿技术的满腔热忱,年(yī)纪(tu)轻(xi)…