优化 ext[234] 以实现小文件吞吐量

Mic*_*ael 3 performance ext4 ext3 hard-drive

我有一个磁盘上小文件吞吐量很高的系统,即在几秒钟内创建、写入和删除大量小文件。

是否有任何合理的 ext2/ext3/ext4 挂载选项来提高性能?我猜想,元数据日志会导致性能大幅下降。

小智 5

我有一台运行 ext4 的 Synology NAS(DS1815+、DSM 5.2),我观察到包含数千个(小)文件的目录性能不佳。

Synology NAS ext4默认没有设置dir_index扩展!我不知道 Synology 为何这样做,因为 dir_index 功能仅适用于大目录。然后它创建一个索引,使访问、计数、迭代等速度更快。

要检查是否安装了该功能,请使用tune2fs -l /dev/yourDev

tune2fs -l  /dev/vg1/volume_1  | grep features 
Filesystem features:      ... dir_index ...
Run Code Online (Sandbox Code Playgroud)

如果您在功能列表中没有看到 dir_index,则可以将其添加到您的 ext3/4 文件系统中:

  1. umount /dev/youDev #卸载设备
  2. une2fs -O dir_index /dev/yourDev #向 FS 添加功能
  3. e2fsck -D /dev/yourDev # 创建索引

对于 Synology NAS,步骤如下:

syno_poweroff_task -d
vgchange -ay
tune2fs -O dir_index /dev/vg1/volume_1
e2fsck -D /dev/vg1/volume_1
Run Code Online (Sandbox Code Playgroud)

dir_index 功能可用于 ext3 和 ext4,并且通常是在现代 Linux 发行版上创建 ext4 时的默认设置。然而 - 正如这款 Synology NAS 所示 - 它值得检查。就我而言,此功能将包含 100k(小)文件的 rsync 文件夹增加到 NAS,从 4Mb/s 增加到 14Mb/​​s。

一些引自 www.debian-administration.org

您可以执行的最有用的调整是查找文件时扫描目录索引的方式。这是由选项“dir_index”控制的。默认情况下,此功能不会启用,但您可以通过运行以下命令来添加它:

我的:~#tune2fs -O dir_index /dev/sda1

完成此操作后,您将能够看到正在使用的更新的文件系统标志:

我的:~#tune2fs -l /dev/sda1 | grep features 文件系统功能:
has_journal resize_inode dir_index filetype needs_recovery稀疏超大文件

完成此操作后,您应该会发现列出包含大量文件的目录的内容变得更快,并且在目录中查找文件也更好。