ext4 文件系统的优化

ext4作为ext3的下一代,是Linux上的经典文件系统,功能上虽不及zfs、btrfs那么花哨,但是可靠实用,被广泛部署在企业级的生产环境中。


ext4 作为一个通用文件系统,默认情况下已经工作良好。通过下面的调优,可以获得额外的性能。


挂载选项


1、noatime

atime,它通常没有用处,尤其对于日志型的文件系统而言,每次文件读操作都会改变元数据,形成写操作,这变得不太合理,对于大多数日志型文件系统,noatime通常都是一个更好的选择。


2、data=writeback

writeback尽量满足文件内容的写操作,文件元数据写入会推迟一点,这种模式可能会损害文件存储的安全性,意外断电情况下,重启后可能会让你得到旧数据而不是新写的数据。如果你正在使用硬件阵列卡,且上面有电池模块的话,那么你就不用太担心了。


3、delalloc

Linux操作系统通常会慷慨的拿出大量内存作为文件系统缓冲,读写性能因此大大受益,所谓延迟分配指的是文件在内存中写后才在文件系统上分配block ,这样可以提高block连续性,减少碎片。如果不急着把脏数据刷进文件系统的话,延迟分配block也会增加ext4文件系统的性能。


4、journal_dev

ext4 默认在自己所在的分区内维护日志,如果把日志写入另外一个分区或者硬盘的话,本地文件系统就会变得更轻松。


5、barrier=0

为了写安全,日志文件系统通常在写操作完成时写barrier,用于确认元数据完整性。如果应用以读为主,禁用barrier可提高性能。


6、async

异步IO,在操作系统级别,尽可能的不直接从硬盘读写,对于以读为主的应用可以使用异步IO来提高性能,写操作使用异步IO会比较危险。


7、noacl、nouser_xattr、

减少文件系统特性,给文件系统减负


8、nodev、noexec、nosuid

这三个选项通常用于增加安全性,适合作为数据分区的挂载选项。

(nosuid是否更安全,暂且存疑。见man mount)


其他优化方法

deadline 通常是一个更好的IO调度器,使用方法

echo deadline >/sys/block/sdX/queue/scheduler


如果你打算使用4TB硬盘作为数据分区/data ,创建文件系统时,默认会保留5%,也就是200G给root专用,用下面的办法改变它

mkfs.ext4 -m0 /dev/sdb1


总结


性能调优通常以牺牲安全为代价,极端的优化会抛弃安全,让系统裸奔。因此,性能调优也要讲究适度,把握好性能和安全的平衡。毕竟,数据无价。


性能调优也是一个细活儿,需要经过大量调查考证,性能测试和事后跟踪。一般来说,调优很难让性能在整体上有大幅度的提升。相比于更换硬件,后者的性能提升更大更明显一下,比如将普通硬盘替换成SSD硬盘。


本人才疏学浅,很多地方解释可能不到位,不足之处,还望指教。


你可能感兴趣的:(ext4)