Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11287496
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-05-28 09:10:11

乎从硬盘诞生的时候开始,磁盘碎片的概念就产生了。最初的磁盘操作系统开发者设计了一个文件分配表,用来记录哪些文件储存在哪些扇区当中,这样就允许一个文件可以储存在不连续的扇区当中。

  有了文件分配表,在操作系统上同一分区中移动文件时,不必移动储存在扇区中的数据,只需修改文件分配表中的链接就可以了,删除文件时也不必重写文件所在的扇区,只需将文件分配表中该文件所在的扇区标记为空就可以了。

  这样的设计使得操作系统能够更有效的利用磁盘空间,不过与此同时,也衍生出了一个新的概念—磁盘碎片。

扇区:硬盘中储存数据的最小寻址单元,容量为512字节。后来又出现了簇的概念,它是扇区的扩展。

        文件分配表(FAT):被广泛应用的组织和管理文件的文件系统。

磁盘碎片的产生

  接下来,我们将通过下图来了解两种磁盘碎片产生的典型过程。为了直观,我们将下面这幅硬盘结构图中的盘片部分简单的划分成3磁道共18扇区。我们不打算去考虑每个盘片有上千条磁道、每条磁道有上千个扇区的情况,也不考虑柱面的概念,忽略簇的概念,省略一切有碍理解的东西,用最简单的图,看清楚什么是磁盘碎片。



        磁头:用于读取、写入、清除数据,是硬盘中技术含量最高的部件。在音圈马达的带动下可沿Z移动到各条磁道。
  盘片:表面涂有可记录磁性的物质,用于存储数据。在这幅图片中,由灰色线将盘片划分成了3条磁道,每条磁道又划分出若干个单元格,这里每一个单元格代表一个扇区。
  主轴:内有轴承、马达,可带动盘片高速旋转。
  音圈马达:硬盘里的定位马达,类似于音频扬声器里所用的马达。

        磁盘碎片产生的典型过程 (例一)



        图中,系统正在向硬盘中写入一个文件,名为“椰子”,该文件体积较大,需要占用5个扇区的空间,因此要完全写入到硬盘当中需要较长的时间。磁头从1号扇区开始顺时针方向写入文件,当2号扇区中的数据写入完时,硬盘接到了一条新的命令—写入文件“葡萄”,文件“葡萄”体积较小,只需占用1个扇区的空间,它被写入到了扇区3当中。

  这样一来,由于3号扇区已经被占用,文件“椰子”剩下的数据就要从4号扇区开始写入,最后,剩下的数据被写入到了4至6号扇区。如图,由于“葡萄”的插队,文件椰子无法储存在连续的扇区当中,被分割开的这两段数据就被称为磁盘碎片。
        磁盘碎片产生的典型过程 (例二)

  例一中的硬盘经过一段时间的使用之后,内部储存的文件发生了一些变化:一个新文件“西瓜”被写入到了硬盘当中,之后文件“葡萄”被删除了。



        这时,硬盘接到了写入文件“橘子”的命令,“橘子”需要占用3个扇区的储存空间。如图,现在硬盘中共有两段不连续的可用空间,但任何一段单独的可用空间都不足以容纳整个“橘子”文件,不得已,“橘子”被拆分为两部分写入硬盘剩余的可用空间中,从而产生了磁盘碎片。



        例一中的情况在下载大文件时十分常见,因为下载文件的过程不需要人为干预,所以一般人在下载文件的过程中都会做一些其它的事情。

  如:浏览网页、玩游戏等等。浏览网页的过程中浏览器会产生大量的“Internet 临时文件”,玩游戏的过程中游戏程序也可能会产生临时文件,或因内存不足导致操作系统改变了页面文件的大小,这些情况都可能如例一般影响下载中的文件,产生磁盘碎片。实际使用中往往一部电影文件被下载到硬盘中之后会有数千个磁盘碎片。

  例二中的情况是在删除了旧文件、添加新文件时发生的。通常情况下,系统会在对文件来说足够大的第一个连续可用空间上存储文件。如果没有足够大的可用空间,系统会将尽可能多的文件保存在最大的可用空间上,然后将剩余数据保存在下一个可用空间上。

  因此,除非拥有容量无限大的硬盘,否则,在有限的硬盘空间中进行添加和删除文件的操作就必然会有例二这种产生磁盘碎片的情况发生。当然,较实际需求大的硬盘空间可以减少这种情况的发生。

阅读(738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~