实际上IOzone是一个文件系统基准测试工具。该基准测试生成并测量各种文件操作,例如顺序读/写、随机读/写。所以我想定制我自己的Linux文件系统ext3,用于随机读取(数据库密集型或OLTP)或顺序读取(音频/视频应用程序),以便特定应用程序有更好的性能。我们如何更改文件系统参数(例如块大小、磁盘缓存、缓冲区大小等)以获得更好的性能。
答案1
要更改这些事情,您必须在创建文件系统时使用mke2fs
(mkfs.ext4
例如使用)或者某些调整选项在使用 with 创建后可用tune2fs
。Gentoo 论坛上的这个论坛主题是关于 ext3 调优的。这是我认为其中重要的部分(都是用一些格式复制的)*(另请注意,data=journal
禁用 ext4 中的某些性能增强功能)*
使用目录索引
此功能通过使用散列二叉树来存储目录信息,改进了大型目录或包含许多文件的目录中的文件访问。它使用起来非常安全,并且在大多数情况下提供了相当大的改进;所以启用它是个好主意:
tune2fs -O dir_index /dev/hdXY
这仅对运行une2fs后在该文件系统上创建的目录生效。为了将其应用于当前现有的目录,我们必须运行 e2fsck 实用程序来优化文件系统上的目录并重新索引:
e2fsck -D /dev/hdXY
启用完整日记功能
默认情况下,ext3 分区以“有序”数据模式挂载。在此模式下,所有数据都写入主文件系统,其元数据提交到日志,日志块在逻辑上分组为事务以减少磁盘 I/O。对于大多数人来说,这往往是一个很好的默认设置。然而,我发现了一种可以提高可靠性和性能(在某些情况下)的方法:记录所有内容,包括文件数据本身(称为“日志”数据模式)。通常,人们会认为记录所有数据会降低性能,因为数据会写入磁盘两次:一次写入日志,然后提交到主文件系统,但情况似乎并非如此。我已经在所有九个分区上启用了它,并且在删除大文件时只发现了轻微的性能损失。事实上,这样做实际上可以提高需要同时进行大量读写的文件系统的性能。看这篇由 Daniel Robbins 在 IBM 网站上撰写的文章了解更多信息
事实上,将 /usr/portage 放在自己的 ext3 分区上并使用日志数据模式似乎显着减少了运行 emerge --sync 所需的时间。我还看到编译时间略有改进。
有两种不同的方法可以激活日志数据模式。第一种方法是在 /etc/fstab 中添加 data=journal 作为挂载选项。如果您这样做并希望您的根文件系统也使用它,您还应该在引导加载程序的配置中将 rootflags=data=journal 作为内核参数传递。在第二种方法中,您将使用tune2fs修改文件系统超级块中的默认挂载选项:
tune2fs -O has_journal -o journal_data /dev/hdXY
请注意,第二种方法可能不适用于较旧的内核。特别是 Linux 2.4.20 及更低版本可能会忽略超级块上的默认安装选项。如果您喜欢冒险,您可能还想调整日记大小。 (我将日志大小保留为默认值。)较大的日志可能会给您带来更好的性能(但代价是更多的磁盘空间和更长的恢复时间)。在执行此操作之前,请务必阅读une2fs手册的相关部分:
tune2fs -J size=$SIZE /dev/hdXY
使用tune2fs检查文件系统选项
好吧,现在我们已经调整了文件系统,我们希望确保应用这些调整,对吧?令人惊讶的是,我们可以使用une2fs实用程序非常轻松地执行此选项。要列出文件系统超级块的所有内容,我们可以将“-l”(小写“L”)选项传递给tune2fs:
tune2fs -l /dev/hdXY
与其他une2fs调用不同,它可以在已安装的文件系统上运行而不会造成任何损害,因为它不会访问或尝试更改如此低级别的文件系统。
这将为您提供有关文件系统的大量信息,包括块/索引节点信息,以及我们正在寻找的文件系统功能和默认安装选项。如果一切顺利,输出的相关部分应在文件系统功能列表中包含“dir_index”和“has_journal”标志,并应显示“journal_data”的默认安装选项。