zoukankan      html  css  js  c++  java
  • 磁盘碎片整理程序的原理是什么?

    盘碎片整理,就是通过系统软件或者专业的磁盘碎片整理软件对电脑磁盘在长期使用过程中产生的碎片和凌乱文件重新整理,释放出更多的磁盘空间,可提高电脑的整体性能和运行速度。
    磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。硬盘在使用一段时间后,由于反复写入和删除文件,磁盘中的空闲扇区会分散到整个磁盘中不连续的物理位置上,从而使文件不能存在连续的扇区类。这样,再读写文件时就需要到不同的地方去读取,增加了磁头的来回移动,降低了磁盘的访问速度。
    当应用程序所需的物理内存不足时,一般操作系统会在硬盘中产生临时交换文件,用该文件所占用的硬盘空间虚拟成内存。虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。其他如IE浏览器浏览信息时生成的临时文件或临时文件目录的设置也会造成系统中形成大量的碎片。文件碎片一般不会在系统中引起问题,但文件碎片过多会使系统在读文件的时候来回寻找,引起硬盘性能下降,严重的还要缩短硬盘寿命。
    硬盘就像屋子一样更需要常整理,要整理磁盘就要用到“磁盘碎片整理程序”这个东西,磁盘碎片整理程序可以对使用文件分配表 (FAT)文件系统、FAT32 文件系统和 NTFS文件系统格式化的卷进行碎片整理。磁盘碎片整理其实就是把硬盘上的文件重新写在硬盘上,以便让文件保持连续性。 只有连续长时间频繁的读写硬盘才会对磁盘造成一定的伤害,但整理碎片并不算伤害硬盘,因为大多数人不会每天都整理一次,且每次整理的时间亦很短,并不会长时间的读写硬盘。关于整理碎片会损害硬盘的使用寿命,可不必太在意。建议至多每月作一次到两次磁盘碎片整理,使硬盘的读写速度保持在最佳状态。
    一般家庭用户1个月整理一次,商业用户以及服务器半个月整理一次

    这里所说的磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。硬盘在使用一段时间后,由于反复写入和删除文件,磁盘中的空闲扇区会分散到整个磁盘中不连续的物理位置上,从而使文件不能存在连续的扇区里。这样,再读写文件时就需要到不同的地方去读取,增加了磁头的来回移动,降低了磁盘的访问速度。

    生成碎片的主要原因是:当应用程序所需的物理内存不足时,一般操作系统会在硬盘中产生磁盘临时交换文件,用该文件所占用的硬盘空间虚拟成内存。虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。此外,其他如IE浏览器浏览信息时生成的临时文件或临时文件目录的设置也会造成系统中形成大量的碎片。文件碎片一般不会在系统中引起问题,但文件碎片过多会使系统在读文件的时候来回寻找,引起硬盘性能下降,严重的还要缩短硬盘寿命。

    所谓磁盘碎片整理,就是通过系统软件或者专业的磁盘碎片整理软件对电脑磁盘在长期使用过程中产生的碎片和凌乱文件重新整理,可提高电脑的整体性能和运行速度。

    一般家庭用户1个月整理一次,商业用户以及服务器半个月整理一次。但要根据碎片比例来考虑,如在windows7中,碎片超过10%,则需整理,否则不必。(回答参考百度百科)

     


    磁盘主要由盘片,能够转动盘片的驱动马达,机械臂以及机械臂上的读取头组成,在读取数据时,马达会驱动盘片来让读取头在盘片上读取。盘片是主要记录数据的地方,扇区(sector)是硬盘的盘片上最小的物理存储单位,一般为 512 KB;而块(block)是文件系统(FAT、NTFS、Ext2,Ext3 )中最小的操作单位,由一个或多个 sector 组成,类似于 FAT 文件系统中簇的概念,读写文件时是按照文件系统中定义的 block 的大小来进行的。一般最小的 block 为 4 KB,大文件读写时有 128 KB、256 KB。

    以 FAT 文件系统(Windows 98 以前的操作系统以及 U 盘常用的文件系统)为例,文件数据一般会存放在连续的block中,比较大的文件会占用多个block。但是当对同一文件进行频繁更新(删除、移动、新增等)时,文件体积发现变化后,文件系统会尝试放在原始文件开始的 block 紧邻的位置中,但是由于紧邻的 block 已经没有空间可放,此时会跳到其他 block 中存放。通常,一个文件占用的多个 block 都是不连续的,操作过于频繁时会使同一文件的block太过分散。


    (图片源自《鸟哥的LINUX私房菜》)

    在FAT文件系统中,每一文件的 block 号码都是记录在前一个 block 当中,读取方式类似上图所示。

    上图中我们假设文件的数据依序写入 1->7->4->15 号这四个 block 号码中, 但这个文件系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处。 如果同一个文件数据写入的 block 分散的太过厉害时,则我们的磁盘读取头将无法在磁盘转一圈就读到所有的数据, 因此磁盘就会多转好几圈才能完整的读取到这个文件的内容!——引自《鸟哥的LINUX私房菜》

    磁盘碎片整理的目的就是将文件太过分散的 block 存到在磁盘开始的地方,使它们连续分布,进而弥补磁盘上形成的大量的空洞,提高文件读写时的速度。
    而 NTFS 文件系统后来进行了优化,会在文件周围分配一些“缓冲”的空间,在使用时间长后仍然需要进行碎片整理,而 Linux 中的 Ext 文件系统则是采用索引式式文件系统,有 inode 来记录文件所在的 block 号码,能够将文件的所有 block 一口气读出来,所以 Linux 系统一般不太需要碎片整理。
     
    from:https://www.zhihu.com/question/27291210?from=profile_question_card
  • 相关阅读:
    操作系统的内存对齐机制学习笔记
    函数库调用和系统调用的区别
    操作系统与c语言
    技术开发人员适应其他部门提需求的一个经验
    受益技术类书籍
    软件项目发展历史<人月神话>这本书好
    好的代码风格积累
    演示内存碎片原理的好图
    不要的代码删除掉,而不是放到系统中干扰
    编译安装php-amq扩展
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/4575811.html
Copyright © 2011-2022 走看看