LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: beyondsakai

Linux是不是真是不需要磁盘碎片整理?[集中讨论]

[复制链接]
发表于 2002-12-9 19:52:54 | 显示全部楼层
Depend on the file system. For most types of FS used in Linux it's not necessary, for example, ext2.
发表于 2002-12-9 20:39:03 | 显示全部楼层
linux系统应该会产生磁盘碎片,但是我认为不需要一个专门的程序来进行整理。因为fsck相当于碎片整理程序且linux的文件系统会尽量把数据顺序排列,产生磁盘碎片的机会很小。
发表于 2002-12-9 20:40:40 | 显示全部楼层
The ext2 file system which is native to Linux fragments very little because of the way the file system is designed. Fragmentation on a typical ext2 disk is usually between zero and three percent no matter how much file system activity occurs. By default, the Linux swap area on disk is on its own disk partition and does not affect normal files. With Linux, there is no expensive add-on defragmentation product to buy and no burden on machine resources to defragment the disks.

--from http://www.biznix.org/whylinux/windows/fragment.html
发表于 2002-12-10 00:40:17 | 显示全部楼层
最初由 ilrainyday 发布
是不是可以避免,要看文件系统所使用的数据结构了。对于FAT来说,使用的是chain式的结构来记录一个文件所使用的簇。这种方式的好处就是有助于文件的动态增长的需要。但是却带了碎片的问题,使得读写文件的时候,磁头频繁移动。对于CD-ROM,由于是read-only的,所以不存在数据增长的问题,所以,采用了连续的方法来记录数据。分区够不够大,和能不能避免碎片是没有关系的。相反,大的分区要采用大的簇,相比之下,会造成更多的磁盘空间的浪费。
所以,我觉得,因为要适应数据的动态增长,碎片应该是在所难免。


LINUX官方有说明你可以看看,说的很明白,由于设计原因极少出现碎片,当然分区要足够大,原因很明白,当然是[足够].没有足够的连续空间,神仙也没法不产生碎片.
发表于 2002-12-10 00:41:13 | 显示全部楼层
LINUX好像没有[簇]的概念.
发表于 2002-12-10 08:01:49 | 显示全部楼层
xx_xx
你似乎并不明白chain式的原理。ok,你有足够的空间,你可以保证每个文件都是连续的。那么你是不是不打算在修改某个文件的大小了??如果你增加了某个文件的内容,而这个文件恰好是在数据区的中间,你怎么办?为了保持文件的连续,是不是要把别的文件后移?还是把增加的部分放在空闲的地方??而这样,不就已经产生了碎片吗?
而且,开始的时候我已经说过了,这依赖于文件系统的数据结构。ext2,3的数据机构我不很了解。上面说得得也只是针对FAT文件系统的。
发表于 2002-12-10 12:57:22 | 显示全部楼层
ext2,ext3 filesystem中的确没有cluter的概念,代之的是block
发表于 2002-12-16 21:28:23 | 显示全部楼层
弟兄们还得讨论。。。这个问题还不算完。。。

加油。。。
发表于 2002-12-17 17:59:41 | 显示全部楼层
出处:转载自赛迪网 作者:戈月


  在Windows系统中,磁盘碎片是一个常见的问题,如果不注意,系统性能可能被侵蚀。Linux使用第二扩展文件系统(ext2),它以一种完全不同的方式处理文件存储。Linux没有Windows系统中发现的那种问题,这使得许多人认为磁盘碎片化根本不是一个问题。但是,这是不正确的。

  所有的文件系统随着时间的推移都趋向于碎片化。Linux文件系统减少了碎片化,但是并没有消除。由于它不经常出现,所以对于一个单用户的工作站来说,可能根本不是问题。然而在繁忙的服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能只有从硬盘读出或写入数据时才能注意到。下面是优化Linux系统硬盘性能的一些具体措施。

清理磁盘

  这种方法看上去很简单:清理磁盘驱动器,删除不需要的文件,清除所有需要被保存但将不被使用的文件。如果可能的话,清除多余的目录,并减少子目录的数目。这些建议似乎显而易见,但是你会惊讶地发现,每个磁盘上确实积累了非常多的垃圾。释放磁盘空间可以帮助系统更好地工作。

整理磁盘碎片

  Linux系统上的磁盘碎片整理程序与Windows 98或Windows NT系统中的磁盘碎片整理程序不同。Windows 98引入FAT 32文件系统,虽然运行Windows 98不必转换为FAT 32文件系统。Windows可以被设置为使用FAT或一个叫NTFS的增强文件系统。所有这些文件系统以本质上相同的方式处理文件存储。

  Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。当文件被存储时,它们将被写到连续的块中,它们不会碎片化。这是一个大工作,可能对于像/usr之类不经常改变的程序分区是不必要的,但是它可以在一个多用户系统的/home分区产生奇迹。它所花费的时间与Windows NT服务器磁盘碎片整理花费的时间大致上相同。

  如果硬盘性能仍不令人满意,还有许多其它的步骤可以考虑,但是任何包含升级或购买新设备的硬件解决方案可能会是昂贵的。

从IDE升级到SCSI

  如果你的硬盘是一个IDE驱动器,可以通过升级到SCSI驱动器获得更好的整体性能。因为IDE控制器必须访问CPU,CPU和磁盘密集型操作可能变得非常缓慢。SCSI控制器不用通过CPU处理读写。当IDE驱动器在读或写时,用户可能会因为CPU周期被IDE驱动器占用而抱怨系统的缓慢。

获取更快的控制器和磁盘驱动器

  标准的SCSI控制器不能比标准的IDE控制器更快地读写数据,但是一些非常快的“UltraWide”SCSI控制器能够使读写速度有一个真正的飞跃。

  EIDE和UDMA控制器是非常快的IDE控制器。新的UDMA控制器能够接近SCSI控制器的速度。UDMA控制器的顶级速度是猝发速度,但持续传输的速度明显慢得多。IDE控制器包括UDMA,是嵌入在驱动器本身中的。不需要购买一个控制器,只要购买一个驱动器,它就包含了控制器,可以获得UDMA性能。

  磁盘驱动器经常忽视的一个方面是磁盘本身的速度。磁盘的速度以rpm为单位给出,它代表每分钟旋转多少次。rpm越大,磁盘速度也越快。如果你有这方面的预算,大多数服务器系统厂商可提供7500rpm甚至10000rpm SCSI磁盘。标准SCSI和IDE磁盘提供5400rpm速度。

使用多个控制器

  IDE和SCSI磁盘可以被链接。IDE链最多包括两个设备,标准SCSI链最多包括七个设备。如果在系统中有两个或更多SCSI磁盘,很可能被链接到同一个控制器。这样对大多数操作是足够的,尤其是把计算机当作单用户的工作站时。但是如果有一个服务器,那么就能够通过对每个SCSI驱动器提供一个控制器改善性能。当然,好的控制器是昂贵的。

调整硬盘参数

  使用hdparm工具可以调整IDE硬盘性能,它设计时专门考虑了使用UDMA驱动器。在缺省情况下,Linux使用是最安全的,但是设置访问IDE驱动器是最慢的。缺省模式没有利用UDMA可能的最快的性能。

  使用hdparm工具,通过激活下面的特性可以显著地改善性能:

  ◆ 32位支持 缺省设置是16位;
  ◆ 多部分访问 缺省设置是每次中断单部分传送。

  注意:在使用hdparm之前,确保对系统已经做了完全的备份。使用hdparm改变IDE参数,如果出错可能会引起驱动器上全部数据的丢失。

  hdparm可以提供关于硬盘的大量信息。打开一个终端窗口,输入下面命令获取系统中第一个IDE驱动器的信息(改变设备名获取其它IDE驱动器的信息):


  hdparm -v /dev/had



  上面命令显示出当系统启动时从驱动器获得的信息,包括驱动器操作在16位或32位模式(I/O Support)下,是否为多部分访问(Multcount)。关于磁盘驱动器的更详细信息的显示可使用-i参数。

  Hdparm也可以测试驱动器传输速率。输入命令测试系统中第一个IDE驱动器:


  hdparm -Tt /dev/hda



  此测试可测量驱动器直接读和高速缓冲存储器读的速度。结果是一个优化的“最好的事例”数字。改变驱动器设置,激活32位传输,输入下面的命令:


  hdparm -c3 /dev/hda



  -c3参数激活32位支持,使用-c0可以取消它。-c1参数也可激活32位支持并使用更少的内存开销,但是在很多驱动器下它不工作。

  大多数新IDE驱动器支持多部分传输,但是Linux缺省设置为单部分传输。注意:这个设置在一些驱动器上,激活多部分传输能引起文件系统的完全崩溃。这个问题大多数发生在较老的驱动器上。输入下面的命令激活多部分传输:


  hdparm -m16 /dev/hda



  -m16参数激活16部分传输。除了西部数据的驱动器外,大多数驱动器设置为16或32部分是最合适的。西部数据的驱动器缓冲区小,当设置大于8部分时性能将显著下降。对西部数据驱动器来说,设置为4部分是最合适的。

  激活多部分访问能够减少CPU负载30%~50%,同时可以增加数据传输速率到50%。使用-m0参数可以取消多部分传输。

  hdparm还有许多选项可设置硬盘驱动器,在此不详述。

使用软件RAID

  RAID廉价驱动器的冗余阵列,也可以改善磁盘驱动器性能和容量。Linux支持软件RAID和硬件RAID。软件RAID嵌入在Linux内核中,比硬件RAID花费要少得多。软件RAID的惟一花费就是购买系统中的磁盘,但是软件RAID不能使硬件RAID的性能增强。硬件RAID使用特殊设计的硬件,控制系统的多个磁盘。硬件RAID可能是昂贵的,但是得到的性能改善与之相匹配。RAID的基本思想是组合多个小的、廉价的磁盘驱动器成为一个磁盘驱动器阵列,提供与大型计算机中单个大驱动器相同的性能级别。RAID驱动器阵列对于计算机来说像单独一个驱动器,它也可以使用并行处理。磁盘读写在RAID磁盘阵列的并行数据通路上同时进行。

  IBM公司在加利福尼亚大学发起一项研究,得到RAID级别的一个最初定义。现在有六个已定义的RAID级别,如下所示。

  RAID 0:级别0只是数据带。在级别0中,数据被拆分到多于一个的驱动器,结果是更高的数据吞吐量。这是RAID的最快和最有效形式。但是,在这个级别没有数据镜像,所以在阵列中任何磁盘的失败将引起所有数据的丢失。

  RAID 1:级别1是完全磁盘镜像。在独立的磁盘上创建和支持数据两份拷贝。级别1阵列与一个驱动器相比读速度快、写速度慢,但是如果任一个驱动器错误,不会有数据丢失。这是最昂贵的RAID级别,因为每个磁盘需要第二个磁盘做它的镜像。这个级别提供最好的数据安全。

  RAID 2:级别2设想用于没有内嵌错误检测的驱动器。因为所有的SCSI驱动器支持内嵌错误检测,这个级别已过时,基本上没用了。Linux不使用这个级别。

  RAID 3:级别3是一个有奇偶校验磁盘的磁盘带。存储奇偶校验信息到一个独立的驱动器上,允许恢复任何单个驱动器上的错误。Linux不支持这个级别。

  RAID 4:级别4是拥有一个奇偶校验磁盘的大块带。奇偶校验信息意味着任何一个磁盘失败数据可以被恢复。级别4阵列的读性能非常好,写速度比较慢,因为奇偶校验数据必须每次更新。

  RAID 5:级别5与级别4相似,但是它将奇偶校验信息分布到多个驱动器中。这样提高了磁盘写速度。它每兆字节的花费与级别4相同,提高了高水平数据保护下的高速随机性能,是使用最广泛的RAID系统。

  软件RAID是级别0,它使多个硬盘看起来像一个磁盘,但是速度比任何单个磁盘快得多,因为驱动器被并行访问。软件RAID可以用IDE或SCSI控制器,也可以使用任何磁盘组合。

配置内核参数

  通过调整系统内核参数改善性能有时是很明显的。如果你决定要这样做一定要小心,因为系统内核的改变可能优化系统,也可能引起系统崩溃。

  注意:不要在一个正在使用的系统上改变内核参数,因为有系统崩溃的危险。因此,必须在一个没有人使用的系统上进行测试。设置一个测试机器,对系统进行测试,确保所有工作正常。

Tweak内存性能

  在Linux中,可以Tweak系统内存。如果遇到内存不足错误或者系统是用于网络的,可以调整内存分配设置。

  内存一般以每页4千字节分配。调整“空白页”设置,可以在性能上有显著的改善。打开终端窗口,输入下面的命令查看系统的当前设置:


  cat /proc/sys/vm/freepages



  这样将获得三个数字,就像下面这样:


  128 256 384



  这些是最小空白页、空白页低和空白页高设置。这些值在启动时决定。最小设置是系统中内存数量的两倍;低设置是内存数量的4倍;高设置是系统内存的6倍;自由内存不能小于最小空白页数。

  如果空白页数目低于空白页高设置,则交换(使用磁盘空间分配到交换文件)开始。当达到空白页低设置时,密集型交换开始。

  增加空白页高设置有时可以改善整体性能,比如试试增加高设置到1MB,用echo命令可以调整这个设置。使用样本设置,输入这个命令增加空白页高设置到1MB:


  echo "128 256 1024" > /proc/sys/vm/freepages



  注意:当系统还没有被使用时测试这个设置,以确保在做任何调整时监视系统性能。这样可以确定哪个设置对系统是最好的。
发表于 2002-12-17 18:18:24 | 显示全部楼层
好东西,谢谢jerboa兄!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表