Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90334531
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-20 12:13:13

作者:deadman  出处:

文件系统使用时间越长,所含碎片越多。由于资源的动态分配,文件块变得越来越零散,逻辑相连的文件被隔成碎片,逻辑相连的逻辑卷(LV)也被隔成了碎片。
当从分段的逻辑卷访问文件时,会发生下列事情:

1. 顺序访问不再是按顺序的 
2. 随机访问较慢 
3. 访问时间取决于较长的寻道时间

但是,文件一旦位于内存中,这些影响就减弱了。文件系统的性能也受物理因素影响,例如:

1. 磁盘的类型和适配器的数量 
2. 用于文件缓冲的内存数量 
3. 与远程文件访问相对的本地文件访问量 
4. 应用程序的文件访问模式和文件访问量

通过细分为 4 KB 的块,JFS 使您可以更改文件系统的分段大小以得到更高的空间使用率。每个 i-node 的字节数(NBPI)用来控制为文件系统创建多少 i-node。可以对分段大小小于 4 KB 的文件系统使用压缩。分段大小和压缩会影响性能.
JFS 文件系统分段大小
JFS 中的分段特征允许文件系统中的空间以小于 4 KB 的块进行分配。在创建文件系统时,可以指定文件系统中的分段大小。允许的大小是 512、1024、2048 和 4096 字节。缺省值为 4096 字节。小于一个分段的文件一起存储在各个分段中,其主要目的是为了节约尽量多的磁盘空间。
小于 4096 字节的文件被存储在最少必需数量的连续分段中。大小在 4096 字节到 32 KB (包括 32 KB)的文件被存放在一个或多个完整的块(4 KB)中,剩余的则被存放在所需大小的多个分段中。例如,系统会为 5632 字节的文件分配一个 4 KB 的块,i-node 的第一个指针将指向这个块。如果分段的大小是 512,那么这第一个 4 KB 的块将占用 8 个分段。最后的 1.5 KB 将占用由 i-node 的第二个指针指向的 3 个分段。对于大于 32 KB 的文件,系统分配一系列 4 KB 的块, i-node 的指针指向这些 4 KB 的块。
无论分段的大小如何,一个完整块的大小都会是 4096 字节。然而,在分段大小小于 4096 字节的文件系统中,任何总数为 4096 字节的一连串分段都可以满足分配一个完整块的需要。不必以 4096 字节的倍数为界限开始分配。
文件系统在试图为文件分配空间时会通过把文件本身分散到逻辑卷中来为文件分配相连的分段,以便使文件相互之间的干扰和分段降到最低程度。
小分段的文件系统的性能的首要威胁来自于空间碎片。小文件分散于各个逻辑卷的情况可能使得为大文件分配相连或相近的块变得不可能。这时访问大文件性能就可能大大降低。在极端情况下,空间碎片会导致无法为文件分配空间,即使仍有许多单独的空闲分段。
另一个影响磁盘 I/O 活动的不利因素是 I/O 操作的数量。对于存储在单个 4 KB 分段上大小为 4 KB 的文件来说,读写文件都只需要一个磁盘 I/O 操作。如果所选分段的大小为 512 字节,系统会为文件分配 8 个分段,这样,完成一个读写操作就需要一些额外的磁盘 I/O 操作(磁盘寻道、数据传送、分配活动)。因此,分段大小为 4 KB 的文件系统的磁盘 I/O 操作数量将远小于分段大小小于此的文件系统。
创建小分段文件系统时应该考虑使用 defragfs 命令整理空间这一策略。该策略还必须同时考虑运行 defragfs 命令的性能代价。
JFS 压缩
如果压缩了文件系统,所有的数据在被写入磁盘前都会以 Lempel-Zev(LZ)压缩技术自动压缩,在从磁盘读取时则自动解压缩。LZ 算法把特定字符串的后继出现位置替换为指向该字符串第一次出现位置的指针。平均可以期望节约 50% 的磁盘空间。
文件系统数据以独立逻辑块的级别压缩。在大单元(例如:一个文件的所有逻辑块)上压缩数据会导致更多可用磁盘空间的损失。而单独压缩一个文件的逻辑块会使文件的随机读取和更新执行更快。
当向一个压缩了的文件系统写入文件时,压缩算法一次压缩 4096 字节(一页)的数据并将其写入最少必需数量的连续分段中。显然,如果文件系统的分段大小为 4 KB,将没有多余的磁盘空间用于数据压缩。因此,压缩需要利用空间碎片,致使分段的大小小于 4096。
尽管压缩总体上会节省空间,我们仍有充分的理由在文件系统内保留一部分未使用空间。

由于无法预知一个 4096 字节的数据块会被压缩至什么程度,文件系统初始时为之保留了一个完整的块的空间。不需要的分段在压缩后释放,但这一分配初始保留空间的策略也可能预示着“空间不足”的前兆。 

一些空闲空间对于执行 defragfs 命令来说是必需的。
除了磁盘 I/O 活动的增加和空闲空间碎片问题,使用数据压缩的文件系统在性能方面还需考虑以下几项:
作为数据压/解压缩活动的直接结果,文件系统的可用性会降低。如果压缩/解压缩数据耗时过长,压缩后的文件系统有时会无法使用,特别是在需要实事数据的繁忙商务环境下。 

压缩后的文件系统中的所有逻辑块在第一次被修改时会分配到一块 4096 字节的磁盘空间,这块空间以后还会在该逻辑块被写入磁盘时被再分配。由于未压缩的文件系统不需这一次再分配,性能代价便与这联系在了一起。 

要执行数据压缩,每字节需要将近 50 个 CPU 时钟周期,解压缩每字节 10 个 CPU 时钟周期。因此,数据压缩会通过增加处理器的时钟周期来加重处理器的负载。 

JFS 压缩 kproc (jfsc)运行在一个固定的优先级( 30 )上,所以当进行压缩/解压缩时,除非有一个运行在更高优先级上的进程,该 kproc 所在的 CPU 将对其他进程不可用。
阅读(999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~