在普通的Ext4文件系统创建中会用到默认设置。对于默认的工作负载,这些设置正常工作。但是如果你的服务器显示一个非普通的性能模式时,你可能会从调节Ext4文件系统的性能中受益。本篇文章中,我们就来看看如何将Ext4推动到性能的最大值。
调查你的系统
优化一个Ext4文件系统不受到要调整这个文件系统的限制。第一步要确保主机服务器可以处理一个快速的文件系统,通过分派足够大量的RAM开始。一个调整好但内存不足的文件系统不能提供优化的性能,因为没有足够的空间来恰当地缓存这个文件系统元数据表。
要知道你的服务器是否有足够的内存,就使用免费命令。如果缓存器和缓存使用的总内存超过了RAM总量的20%,它就会工作。但是越多就越好。理想来说,你需要大概40%的服务器内存用在缓存器和缓存上。
下一步,检查你的磁盘。为了获得尽可能好的性能,你将需要用到尽可能好的磁盘。这不是说你只需要SSD磁盘。但是如果你需要速度,不要使用7200 RPM SATA,要使用15000 RPM串列SCSI(SAS)代替。
还要将磁盘域控制器参数纳入考虑。确保启用了电池备份的缓存。为了增加写入性能,将写入配置为延迟。如果你更注重读取性能,配置预读取来增加机会,让你下一步需要的数据更可能在你需要时已经在内存中负载了。
优化Ext4文件系统
服务器也检查过了,现在我们就来优化Ext4文件系统。你需要考虑两个东西,然后你就可以检查更具体的性能参数了。
几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,使用/etc/fstab中的“一次都不(noatime)”安装选项。没有这个选项,每次文件被访问(包括读取)时,这个文件的元数据都会变更。大部分服务器没有对这些信息做处理,所以关闭它就行了。
另一个有意思的安装选项是dealloc选项,它打开了延迟的块配置功能。这个功能在最后时刻决定写入文件发生时使用哪个块,优化这个写入程序。
另一个重要的安装选项调整文件系统日志。有三种日志模式:data=journal、data=ordered和data=writeback。默认设置data=ordered提供性能和防护之间的最佳平衡。但是如果你的服务器需要写入大量数据,它可以长期冻结你的服务器。如果是这种情况,使用iotop等工具,你会看到kjournald程序的高负载。如果你的服务器遇到了这种行为,使用data=writeback选项来获得更好的写入性能。但是使用这个选项增加了风险,最新修改的数据会在宕机事件中崩溃。
创建文件系统来获取更好性能时,可以用到多个选项。第一个是inode大小。inode用来存储元数据,如果扩展属性或访问控制列表(ACL)用在一个文件系统上,默认的inode不足以存储所有数据并且配置了二级的inode。这也就是说,所有的文件访问你都需要用两个操作来代替一个。使用有-I 256选项的mkfs,将inode大小从128设置成256。完全关闭用户扩展属性和ACL不是一个好方法,因为你需要它们来使用Ext4扩展。
虽然默认的Ext4文件系统优化得很好,转向你的文件系统可能会归结到创建一个理想的服务器硬件配置。noatime的安装选项在多数情况下提供性能优势。接着优化取决于你的服务器正在做什么。文件系统性能不佳的大部分服务器都是因为不能以高效的方式写入数据。
【编辑推荐】