|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
发在现代家电里面过了,再在这里发一下吧$ok$
浅谈磁盘碎片
看到Vista的精华帖里面对磁盘碎片争论得热火朝天,我来浅谈一下磁盘碎片吧。首先磁盘碎片的多寡取决于文件系统的类型。有人问什么是文件系统,就是平常我们说的Fat32,NTFS,Ext2等。曾经有一种说法说Unix/Linux的文件系统不存在碎片,这种说法是不正确的!任何文件系统都存在碎片,所有的文件系统随着时间的推移都趋向于碎片化。问题在于哪种文件系统能在不影响系统性的前提下(或者找到平衡点),合理得避免碎片或者合并碎片。
碎片分为内部碎片,外部碎片和数据碎片(详见http://en.wikipedia.org/wiki/Fragmentation_%28computer%29)。我们通常讨论的碎片整理指的对象是外部碎片。外部碎片的产生原因大家是由于文件没有被连续存储,而是被系统见缝插针得存储在分区的不同地方:
在磁盘分区中,文件会被分散保存到磁盘的不同地方,而不是连续地保存在磁盘连续的簇中。又因为在文件操作过程中,Windows系统可能会调用虚拟内存来同步管理程序,这样就会导致各个程序对硬盘频繁读写,从而产生磁盘碎片。
Windows总是试图把文件存储在尽量靠近磁盘开始位置的地方,这导致当磁盘利用率变高的时候它经常会产生磁盘碎片。Linux却在整个磁盘上存储文件,所以当文件的大小需要改变的时候,总是有足够的空间。当然当磁盘利用率接近饱和的时候Linux也会需要文件整理。但是只要磁盘还有20%以上的可用空间,那么这种整理是基本不会发生的。所以说正确的说法是Windows所使用的文件系统更容易产生碎片,Linux也有文件碎片,但是不需要我们多去担心。(更多内容见http://forum.ubuntu.org.cn/about27451.html)
就是因为Windows的文件系统很容易产生碎片,所以微软要将碎片整理工具纳入系统。而现代的Linux/Unix文件系统不仅不容易产生碎片,而且引入了日志式文件系统的概念(journalling filesystems),更在很大程度上避免了系统突然断电或崩溃所造成的文件丢失或破坏。因此不需要专门的磁盘工具进行碎片整理。Linux下通常碎片整理的方法是将文件备份到存储设备,再从存储设备将备份文件恢复到硬盘上就完成了碎片整理。这个过程比较漫长,但是我们基本不需要进行这样的操作。
在争论的帖子里面提到了Mac OS X文件碎片的问题。众所周知,OS X基于Unix,所以它有与Windows相比更先进的文件系统(相当少的文件碎片)就不足为奇了。OS X默认的文件系统是HFS+,是改进了的HFS文件系统。“Mac OS X Internals”的作者Amit Singh为了探讨HFS+文件系统,开发了一个工具软件叫“hfsdebug”。在他在网站上有一篇文章对HFS+文件系统的碎片进行了详细的讨论(http://www.kernelthread.com/mac/apme/fragmentation/)。既然Linux,Unix和Mac OS X没有很多文件碎片的,所以没有必要象Windows一样,专门弄个碎片整理程序。Amit的文章指出Mac OS X确实有后台自动碎片整理,但是只在下列情况下发生:
On-the-fly Defragmentation
When a file is opened on an HFS+ volume, the following conditions are tested:
* If the file is less than 20 MB in size
* If the file is not already busy
* If the file is not read-only
* If the file has more than eight extents
* If the system has been up for at least three minutes
If all of the above conditions are satisfied, the file is relocated -- it is defragmented on-the-fly.
实际的情况就是Mac OS X下碎片很少,只有这么点小活,没有必要像Windows一样开发一共碎片整理程序,系统在后台就给你搞定了。
关于Linux下日志式文件系统的选择,有一篇文章给大家参考:
http://www.debian-administration.org/articles/388
上文的部分中文翻译:
http://os.yesky.com/lin/474/2661474.shtml
aaa |
|