返回顶部
首页 > 资讯 > 操作系统 >Linux和MacOS不需要碎片整理的原因
  • 741
分享到

Linux和MacOS不需要碎片整理的原因

2023-06-15 13:06:57 741人浏览 独家记忆
摘要

这篇文章主要讲解了“linux和MacOS不需要碎片整理的原因”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux和MacOS不需要碎片整理的原因”吧!相信今天很多的软件工程师使用的都是

这篇文章主要讲解了“linuxMacOS不需要碎片整理的原因”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux和MacOS不需要碎片整理的原因”吧!

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

Linux和MacOS不需要碎片整理的原因

图 1 - macOS 磁盘工具

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

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

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

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

文件系统

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

Linux和MacOS不需要碎片整理的原因

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

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

Linux和MacOS不需要碎片整理的原因

图 3 - macOS 文件系统

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

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

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

  • 文件小于 20 MB;

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

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

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

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

固态硬盘

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

Linux和MacOS不需要碎片整理的原因

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

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

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

Linux和MacOS不需要碎片整理的原因

图 5 - NAND 闪存的演进

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

总结

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

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

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

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

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

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

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

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

感谢各位的阅读,以上就是“Linux和MacOS不需要碎片整理的原因”的内容了,经过本文的学习后,相信大家对Linux和MacOS不需要碎片整理的原因这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux和MacOS不需要碎片整理的原因

本文链接: https://lsjlt.com/news/280323.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux和MacOS不需要碎片整理的原因
    这篇文章主要讲解了“Linux和MacOS不需要碎片整理的原因”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux和MacOS不需要碎片整理的原因”吧!相信今天很多的软件工程师使用的都是...
    99+
    2023-06-15
  • 为什么Linux不需要碎片整理
    本篇内容主要讲解“为什么Linux不需要碎片整理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“为什么Linux不需要碎片整理”吧!什么是碎片许多Windows用户,即使没有太多经验,我相信他们也...
    99+
    2023-06-16
  • Windows需要碎片整理,为什么Linux不需要
    如果你是一个linux用户,你可能会听说Linux的文件系统不需要碎片整理。你也可能会注意到Linux的发行版本也都没有磁盘碎片整理的功能。这是为什么呢?要理解为什么L 什么是磁盘碎片? 很多Windows的用户,甚至...
    99+
    2023-06-03
    Windows碎片整理 Windows 碎片
  • 为什么Linux不需要磁盘碎片整理
    如果你是个Linux用户,你可能听说过不需要去对你的linux文件系统进行磁盘碎片整理。也许你注意到了,在Liunx安装发布包里没有磁盘碎片整理的工具。为什么会这样? 为了理解为什么Linux文件系统不需要磁盘碎片...
    99+
    2022-06-03
    ext4 FAT Linux NTFS Ubuntu Windows 原理 固态硬盘 性能 文件系统 磁盘 磁盘碎片
  • 为什么linux中不需要磁盘碎片整理呢
    这篇文章将为大家详细讲解有关为什么linux中不需要磁盘碎片整理呢,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。绝大多数的电脑用户都是在使用windows系统,我们都知道当电脑用起来很慢的时候,其中的一个...
    99+
    2023-06-13
  • Linux为什么不用进行碎片整理
    本篇内容主要讲解“Linux为什么不用进行碎片整理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux为什么不用进行碎片整理”吧!什么是磁盘碎片?  很多 Windows 的用户,甚至包括一...
    99+
    2023-06-28
  • MySQL数据碎片的整理和分析
    MySQL数据碎片的整理和分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 MySQL具有相当多不同种类的...
    99+
    2024-04-02
  • MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)
    网络上有很多MySQL表碎片整理的问题,大多数是通过demo一个表然后参考data free来进行碎片整理,这种方式对myisam引擎或者其他引擎可能有效(本人没有做详细的测试).对Innodb引擎是不是准确的,或者data fr...
    99+
    2021-08-24
    MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)
  • linux需要分区的原因有哪些
    这篇文章主要为大家展示了“linux需要分区的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux需要分区的原因有哪些”这篇文章吧。linux分区的原因:1、分区可以防止数据丢失,...
    99+
    2023-06-29
  • MySQL表的碎片整理和空间回收的方法
    目录MySQL表碎片化(Table Fragmentation)的原因行碎片(Row fragmentation)行间碎片(Intra-row fragmentaion)剩余空间碎片...
    99+
    2024-04-02
  • 什么是SQLServer中的索引碎片整理和重建
    在SQL Server中,索引碎片指的是索引中存储的数据在磁盘上不是按照逻辑顺序存储的情况。索引碎片会降低查询性能,因为数据库引擎需...
    99+
    2024-04-02
  • Linux需要虚拟内存的原因有哪些
    小编给大家分享一下Linux需要虚拟内存的原因有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在回答虚拟内存存在的必要性之前,我们需要理解操作系统中的虚拟内存...
    99+
    2023-06-16
  • Linux页框分配器的内存碎片化整理是什么
    本篇内容主要讲解“Linux页框分配器的内存碎片化整理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux页框分配器的内存碎片化整理是什么”吧!页框分配器在慢速分配中包括内存碎片化整理...
    99+
    2023-06-15
  • python爬虫需要代理IP的原因是什么
    小编给大家分享一下python爬虫需要代理IP的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;...
    99+
    2023-06-14
  • 不需要备案的服务器租用价格不同的原因有哪些
    不需要备案的服务器租用价格可能会受到以下因素的影响: 服务器的性能和配置:高性能的服务器通常价格更高,而低性能的服务器价格相对较低...
    99+
    2024-05-21
    服务器
  • 背景图片不显示的原因和解决方法
    在前端开发中,经常会使用CSS来设置背景图片来美化页面。但有时候我们会遇到这样的情况——设置了背景图片,但是页面上却无法显示出来。这时候我们就需要找出问题所在,并尝试解决它。下面,我将从以下几个方面来讲述背景图片不显示的原因和解决方法:路径...
    99+
    2023-05-14
  • Linux中服务器软件需要编译安装的原因是什么
    Linux中服务器软件需要编译安装的原因是:1、软件在编译期间需要配置,如nginx,需要在编译时指定包含哪些module;2、软件需要统一安装路径,编译安装能方便指定路径;3、对于geek来说需要最新的版本,所以需要编译安装。具体内容如下...
    99+
    2024-04-02
  • 讨论CSS中找不到图片的原因和解决方法
    CSS是网页样式表语言,用于设置文本和元素的样式,但是,有时候在样式表中引入的图片会找不到,这让人很困惑。在这篇文章中,我们将讨论CSS中找不到图片的原因,并提供解决方法。图片出现问题是CSS样式表中最常见的问题之一。 这可能是由于几种不同...
    99+
    2023-05-14
  • php获取html中图片不显示的原因和解决方法
    在网页开发中,经常会在HTML页面中使用图片来丰富用户体验。然而,有时候我们可能会遇到PHP在HTML中嵌入图片,但是图片无法正常显示的问题。这是一个常见的问题,本篇文章将会探讨这个问题的原因和解决方法。一、问题的原因当我们在HTML页面中...
    99+
    2023-05-14
    php html
  • Linux图片或文件无法上传的原因和解决方法
    这篇文章主要介绍“Linux图片或文件无法上传的原因和解决方法”,在日常操作中,相信很多人在Linux图片或文件无法上传的原因和解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux图片或文件无法上...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作