使用Windows操作系统的人都有定期整理磁盘碎片的习惯,维护系统嘛。好像Windows也有自动整理的功能,通常表现为开机硬盘灯长亮,叽叽喳喳一直响,很可能就是Windows在进行磁盘碎片整理了。而使用Linux和Mac等*Unix类系统的用户并没有这样的“嗜好”,因为他们的磁盘通常是不需要整理碎片的,因为碎片少,影响非常小。
先说明一下碎片的概念,碎片就是硬盘上不能被利用的存储空间,而不是所谓的硬件损坏。
碎片产生的原因,简单说就是文件写入,文件内容发生变化等操作造成的,磁盘碎片的产生和文件系统以及操作系统都有非常大的关系,又简单说吧,根据Windows的文件操作方式看(不间隔写入),磁盘碎片会越来越多,越来越大。而Linux的文件系统的文件操作,磁盘碎片会越来越少,因为Linux使用的是分布性存储概念,预留空间(可认为是“虚拟碎片”)防止碎片产生。当硬盘剩余空间小于5%的时候才会被认为是碎片。通常可用空间小于8%时会发出警告。
比较细致地说,就是Windows下的文件系统,如FAT和NTFS,由于文件簇大小问题和Windows操作系统的文件操作方式导致了磁盘碎片的大量产生,如Windows操作系统频繁使用虚拟内存(页面文件)对硬盘进行频繁的写入和删除动作,另一方面也是没有充分利用物理内存,造成浪费。可以说,磁盘碎片都是被Windows“占位”给“挤”出来的,Windows的有序(从分区开始的地方开始)连续写入方式最终导致碎片无处不在。
再具体的划分,磁盘碎片还有内部碎片和外部碎片,产生的原因也比较复杂。有兴趣的可以自行研究去。
*Unix文件系统都非常优秀,文件系统存储空间的分步形态和Linux操作系统对磁盘的写入方式使得磁盘碎片很少产生,因为文件系统预留了空间,操作系统对空间进行统筹规划,通常都使用足够的连续存储空间进行写入,而不去“挤”其他文件间的小空隙,挪动其他文件的位置。只要剩余空间足够大(大于5%),Linux的文件系统就不会有碎片问题,以为Linux操作系统不野蛮“占位”,也就没有“挤”出磁盘碎片的问题。
另外*Unix系统的分区概念,如果Linux和Mac的分区,都是合理划分的,容易产生碎片的/var是建议挂载到单独分区的。而物理内存所用的页面文件,也会在安装时强制(多数都这样)挂载到单独的/swap中。而Linux的内存分配方式和大缓存机制也减少了虚拟内存swap分区(或者页面文件)的写入操作,极大限度上减少了碎片的产生。
磁盘碎片导致操作系统读写文件缓慢,影响效率和性能,也造成了空间的浪费。磁盘碎片可导致数据丢失,系统崩溃。
正是因为*Unix(如Linux)系统稳定,文件系统优秀才会被投入大型工作站中广泛使用。像银行系统,全年24小时的数据操作,硬盘容量更是无比巨大,如果碎片多那还能用么(谁还敢用啊!)?如果有,整理个磁盘碎片要多长时间?
Linux下的磁盘碎片不是一个问题,定期删除不需要的文件,保证硬盘有足够的可用空间就可以了。
Windows下通常需要每周或者没月进行磁盘碎片整理,因此Windows自带了磁盘整理软件,当然也有很必要的高级付费软件,磁盘碎片,数据安全不容忽视嘛。
PS:我使用的是EXT3和ReiserFS文件系统,据说ZFS很牛X,没用过。貌似不能使用GRUB引导,使用上可能比较麻烦。
boyyes 于 2008-10-14 01:19:27发表:
呵呵 说的好