PERC 6/i | ext4 | 突袭5 | 4 个磁盘 - 提高写入性能

Nik*_*S P 5 performance ext4 hardware-raid perc6

我正在使用这个控制器、文件系统和磁盘设置运行多个文件服务器。

所有这些都受到写入性能不佳的困扰,一旦 256MB BBU 写入缓存已满,我的 iowait (>40) 就会非常高,写入速度会下降到几 MB/s
如果服务器遇到中等至写作时重读。

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

关于 Raid Array 和 Controller 的一些数据:

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
Run Code Online (Sandbox Code Playgroud)

文件系统的相关资料:

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
Run Code Online (Sandbox Code Playgroud)

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

编辑:
只是为了说明我的用例,我将描述这些服务器正在做什么
它们通过 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
Run Code Online (Sandbox Code Playgroud)

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

pQd*_*pQd 5

几个随机点:

  • 去raid 10 [你会在此过程中丢失数据]
  • 在 fstab 中使用noatime选项挂载所有“繁忙”文件系统
  • 尝试不同的io 调度程序- 检查哪种最适合您
  • 您的驱动器看起来很大 - 最有可能的是它们的物理扇区为 4KB 而不是 512B - 确保您的分区与磁盘和 raid 条带边界对齐 [ 1 , 2 ; 您将在此过程中丢失数据]
  • 我假设您有很多内存用于 io 缓冲区,如果是这样 - 重新配置您的 PERC/6i 缓存,使其仅用于写入,不进行预读。
  • 再次对写入速度进行基准测试 - 假设是 X;节流上传到例如。X 的 60% 留下“备用”IO 用于读取。