[整理]调整ext3文件系统的性能

[整理]调整ext3文件系统的性能

转载注明来自 Linux伊甸园 by Roc.Ken (r o c k e n @ l i n u x e d e n . c o m)


总的来说, 一般有两种方式的调整用户提升文件系统的性能
    * 调整文件系统自身的参数
    * 修改文件系统的挂载参数

ext3文件与ext2文件系统相比, 版本号的变化主要是日志功能的引入. 当在 ext2 上打开日志功能时, 实际上你已改变该分区类型为 ext3

打开ext2的日志功能  cax@ibm~# tune2fs -j /dev/sda1
需要说明的是这个调整是非常有效的, 也是非常安全的!

我们也可以利用 tune2fs 来调整文件系统的其他参数. 一个比较有用的调整是当查找文件时目录索引的使用方式. 它是由 dir_index 参数控制的.  默认这个参数是关闭的. 可通过以下命令打开该功能.
cax@ibm~# tune2fs -O dir_index /dev/sda1

执行命令后,  通过以下命令, 你将看到已经更新的文件系统状态:
cax@ibm~# tune2fs -l /dev/sda1 | grep features
Filesystem features:      has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file

打开该参数会让显示文件夹内大量的文件和在目录中find文件的速度有明显提高.需要注意的是 tune2fs 只是打开了这个功能,并不创建索引. 创建该索引可以先卸载分区, 执行 fsck -fD /dev/sda3; 或者在已挂载的系统上执行 ls 操作.

另两个参数是ext3文件系统的 noatime, nodiratime
当系统在启动时, 文件系统的挂载参数来自 /etc/fstab. (修改参数后迅速生效可用 mount -o remount)

fstab 的记录类似如下设置:
/dev/sda1       /               ext3    defaults,errors=remount-ro 0       1

第四列指出了挂载时使用的参数, mount 命令将会使用这些参数. 在本例中我们使用了两个参数"defaults" (未指定附加参数) 和"errors=remount-ro"(告诉文件系统在错误情况下, 重新挂载分区为只读模式).

通过添加 noatime, nodiratime可以获得一定的速度提升, 在大量的小文件访问的应用环境中(比如基于磁盘的Web Cache环境中) 改选项较为常见. 该选项告诉文件系统不要更新已经访问的文件/文件夹的 access-time. 这样当你读文件时, 由于acces-time没有更新, 速度将会有改善; 对速度的提升虽然不可能明显感觉到, 但对大多数应用系统而言还是不可忽略的. 需要注意的是, 由于不更新文件的访问时间, 该参数会对 find 的 -atime -amin 参数的结果有一定影响.

ext2/ext3 支持在线的调整数据块大小, 需要打开 resize_inode 选项, 你也可以在创建分区的时候指定这些选项.
mkfs.ext3 -O dir_index,resize_inode /dev/hda3

在 ext3 下, 可以指定文件数据的日志形式, journal / ordered / writeback, 如果不想使用默认的 ordered 方式, 可以在启动的时候给内核添加以下参数, 比如: rootflags=data=journal 各种方式的含义如下:
journal   所有的数据在写入文件系统前先写入到日志中.
ordered  默认方式. 所有数据先写入文件系统, 然后写入日志中.
writeback 数据写入顺序不再受保护. 数据可能被提交到日志后再写入文件系统. 传说中该选项是吞吐率最高的选项. 它能保证内部文件系统的完整性, 也允许日志系统在崩溃后的恢复时, 文件中出现旧的数据.

      
与众不同啊      
上午发现一台主机用于备份的分区, 在统计可用空间时,
系统显示的数据和监控系统收集到的数据差异很大, 系统中的数据:
/dev/sdb1             276G  262G     0 100% /logs
监控系统统计到的数据 94.5% 空间已使用, 造成误报.
后来发现是主机在创建文件系统时没有添加 "-m 0" 参数, 造成系统中 5% 的空间被浪费.
解决方法如下:

[root@cax ~]# tune2fs -m 0 /dev/sdb1
tune2fs 1.32 (09-Nov-2002)
Setting reserved blocks percentage to 0 (0 blocks)


.