PERC 6 / i | ext4 | raid5 | 4个磁盘 – 提高写入性能

我使用这个控制器,文件系统和磁盘设置运行几个文件服务器。

他们都遭受了糟糕的写入性能,一旦256MB的BBU写caching满了,我得到真正的高iowait(> 40),写入速度下降到几MB /秒
如果服务器在写入过程中遇到中重读取,情况会更糟糕。

我正在寻找如何调整控制器或文件系统以提高写入性能的build议。

有关RAIDarrays和控制器的一些数据:

RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3 Size:5.456 TB State: Optimal Stripe Size: 64 KB Number Of Drives:4 Span Depth:1 Default Cache Policy: WriteBack, ReadAdaptive, Cached, No Write Cache if Bad BBU Current Cache Policy: WriteBack, ReadAdaptive, Cached, No Write Cache if Bad BBU Access Policy: Read/Write Disk Cache Policy: Enabled Encryption Type: None Product Name : PERC 6/i Integrated FW Version : 1.22.12-0952 BIOS Version : 2.04.00 

有关文件系统的数据:

 Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize 

使用默认挂载选项,并使用mkfs.ext4命令的默认选项创build文件系统。

编辑:
只是为了说明我的用例,我将描述这些服务器在做什么
他们通过lighttpd以40-80 MB / s的速度提供文件,通过ftp定期将新文件下载到服务器。
这些文件在800MB到6GB之间。
提供这些文件效果很好,没有任何的IOWait,但是每次ftp传输都会得到新的文件,你可以看到它真的很糟糕。

根据要求,这里是bonnie ++输出:

 Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP XXXXXXX 8G 580 99 94284 14 61903 9 2853 83 189033 11 420.5 8 Latency 14004us 825ms 1548ms 105ms 202ms 98036us Version 1.96 ------Sequential Create------ --------Random Create-------- XXXXXXX -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 5 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ Latency 406us 535us 598us 374us 21us 60us 

所有服务器上使用的磁盘为D-WMAY03176700WDC WD2002FAEX-007BA0

随机几点:

  • 去突袭10 [你将失去在过程中的数据]
  • 在fstab中使用noatime选项挂载所有“busy”文件系统
  • 尝试不同的io调度程序 – 检查最适合您的是什么
  • 你的驱动器看起来很大 – 很可能它们的物理扇区是4KB而不是512B–确保你的分区与磁盘和RAID条带边界alignment[ 1,2 ; 你会在这个过程中丢失数据]
  • 我假设你有很多RAM用于IO缓冲区,如果是这样的话 – 重新configuration你的PERC / 6icaching只用于写入,不会预读。
  • 基准再次写入速度 – 假设它是X; 油门上传到例如。 X的60%为读取留下“备用”IO。

你可以用-n 1024再次运行bonnie ++,所以它创build了1024个文件而不是5个,所有那些+++意味着创build,读取和删除5个文件的速度太快,不能给你任何数字进行比较,这样你可能会知道上面pQd提出的优化可以提供帮助