Windows需要碎片整理,为什么Linux不需要

Windows需要碎片整理,为什么Linux不需要,第1张

如果你是一个Linux用户,你可能会听说Linux的文件系统不需要碎片整理。你也可能会注意到Linux的发行版本也都没有磁盘碎片整理的功能。这是为什么呢?要理解为什么Linux的文件系统不会想Windows的文件系统一样产生碎片,你首先要明白碎片到底是如何产生的,还有这两大 *** 作系统的文件系统的工作方式到底有什么不同。

什么是磁盘碎片?

很多Windows的用户,甚至包括一些没有经验的用户,都相信定时整理文件系统中的碎片会让他们的电脑运行得更快。但他们都不知道这是为什么。

简单来说,一个硬盘驱动器里面包含了很多扇区,每一个扇区都可以存储一小块数据。对于文件,尤其是比较大的文件来说,他们必须要存储在很多不同的扇区内。假设你的文件系统中有很多不同的文件,每一个文件都被存储在连续的扇区群中。然后,你对增加了其中某一个文件的大小。文件系统首先会尝试对该文件新增加的部分存储在紧挨着原来的扇区群的某个扇区中。但是如果当中没有足够的连续扇区,这个文件就必须要被分解成多个小块,这些 *** 作对于你来说都是可见的。当你的硬盘读取这些文件的时候,他的磁头必须在不同的物理位置间跳转以读取连续的扇区群,这会降低它的速度。

碎片整理就是一个通过逐位(位是文件在磁盘中存储的最小单位)移动文件来减少碎片的精密的过程,以此来确保每一个文件在硬盘中都是连续存储的。

当然,对于固态硬盘来说这又有点不一样,固态硬盘不需要移动文件也不需要碎片整理。因为对一个SSD(固态硬盘)做碎片整理会减少它的寿命。而且,在最新版本的Windows系统中,你也不再需要为碎片整理担心,因为Windows会自动帮你完成。

Windows的文件系统如何工作

从前微软使用的FAT文件系统——最后一次作为默认系统被看到是在Windows 98和ME,尽管这个系统还在USB驱动器中使用——并不能够很好地排列文件。当你在FAT文件系统中保存文件时,它会尽可能地将文件排列在磁盘的首部。当你存放下一个文件时,它会将这个文件直接存放在第一个文件的后面,以此类推。所以当文件变大,永远都会有碎片产生,因为文件的旁边已经没有空间来存放增加的部分。

微软在Windows XP和2000中使用的较新的NTFS文件系统就尝试变得更聪明一点。这个文件系统会在文件周围放置更多名为”缓冲区“的自由空间,但是,任何一个Windows用户都会告诉你,NTFS文件系统总有一天也会产生碎片的。

因为文件系统这样的表现,他们需要碎片整理来保持性能。微软只能在最新版的Windows系统中通过在后台自动运行碎片整理程序来减轻这个问题。

Linux的文件系统如何工作

Linux的ext2,ext3,ext4文件系统——ext4是Ubuntu和目前大多发行版所采用的文件系统——会以一种更加智能的方式来放置文件。Linux的文件系统会将文件分散在整个磁盘,在文件之间留有大量的自由空间,而不是像Windows那样将文件一个接一个的放置。当一个文件被编辑了并且变大了,一般都会有足够的自由空间来保存文件。如果碎片真的产生了,文件系统就会尝试在日常使用中将文件移动来减少碎片,所以不需要专门的碎片整理程序。

因为这样的工作方式,你可能会在你的文件系统塞满之后看到碎片。如果文件系统95%(甚至80%)的空间被占用了,你就会开始看到一些碎片。然而,这样的文件系统本来就是设计来在普通使用中减少碎片的。

如果你真的在Linux上出现了碎片的烦恼,你可能就需要一个更大的硬盘了。如果你真的需要对一个文件系统做碎片整理,最简单的可能也是最可靠的方法就是将所有文件拷贝出来,然后清空原来的分区,再将文件拷贝回去。文件系统就会在你拷贝回去的过程中智能地将文件放置好。

你可以使用fsck命令来检测一下一个Linux文件系统的碎片化程度,只需要在输出中查看非连续节点个数(non-contiguous inodes)就可以了。

首先说一下,碎片是文件在磁盘上因为存储时连续空间不足,导致文件被分开放置而导致出现“碎片”,也就是文件碎了,而不是整体。

Linux 的文件系统都是针对服务器,多用户设计的。文件系统会把文件分散的放在整个硬盘上,也就是说每个文件的前后都有空白空间。这样在频繁的写入之后,分区的容量使用保持平均放置的方式。

这样,磁盘上基本上每个文件都不存在碎片的问题。当然,前提是分区容量使用在某一个百分比之下。不过 Linux 分区又有一个功能是保留空闲分区的功能。在低于某个的空闲容量后,系统就会提示硬盘容量不足,来保证系统的稳定。

Windows 需要磁盘整理是因为他的文件存放设计是空间连续存放,这就导致你删除、修改几个文件后,再写入就会发生文件被拆开存放的现象。这会导致文件读取不能连续进行而需要整理“碎片”。

不过 NTFS 已经有防止碎片的设计了。现在一般只有 FAT 类型的分区才需要整理碎片。

NTFS 碎片一般主要考虑 MFT (主文件分配表)的碎片问题,Linux 的文件分配数据存储空间是预先设定好的,不需要后期使用时增加这个空间,但 NTFS 的 MFT 有可能会因为增加容量而导致 MFT 碎片。文件分配表因为记录了文件系统的一切信息,所以他会被频繁读写,他的碎片会导致文件查找时的性能损失。

Linux 如果出现了文件碎片,那么解决的办法只有一种:把整个分区数据以文件为标准进行压缩保存,格式化碎片分区,解压缩回来。

磁盘方式保存因为会记录文件位置,解压缩回来会恢复到原来的位置,所以没有整理的效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8477950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存