添加更多主轴时ZFS写入性能不佳

我在Linux上使用ZFS,并且遇到了一个相当奇怪的症状,即当我向系统添加更多磁盘时,每个驱动器写入的速度降低,从而有效地否定了顺序写入性能的附加主轴。

这些磁盘通过SAS磁盘架上的HBA(LSI 9300-8E)连接到主机

在下面的testing中,我在IO Zone iozone -i 0 -s 10000000 -r 1024 -t 10上运行以下命令

以下是我的testing结果:

在我的第一个testing中,我创build了一个包含12个磁盘的镜像,它显示了每个磁盘的预计写入性能,每秒大约100 MB / s。

 zpool create -o ashift = 12 -f PoolA镜像S1_D0 S2_D0镜像S1_D1 S2_D1镜像 
 S1_D2 S2_D2镜像S1_D3 S2_D3镜像S1_D4 S2_D4镜像S1_D5 S2_D5

              容量操作带宽
池分配空闲读写写读写
 ---------- ----- ----- ----- ----- ----- -----
池A 3.60G 10.9T 0 5.06K 0 638M
  镜子612M 1.81T 0 863 0 106M
     S1_D0  -   -  0 862 0 106M
     S2_D0  -   -  0 943 0 116M
  镜子617M 1.81T 0 865 0 107M
     S1_D1  -   -  0 865 0 107M
     S2_D1  -   -  0 939 0 116M
  镜子613M 1.81T 0 860 0 106M
     S1_D2  -   -  0 860 0 106M
     S2_D2  -   -  0 948 0 117M
  镜子611M 1.81T 0 868 0 107M
     S1_D3  -   -  0 868 0 107M
     S2_D3  -   -  0 1.02K 0 129M
  镜子617M 1.81T 0 868 0 107M
     S1_D4  -   -  0 868 0 107M
     S2_D4  -   -  0 939 0 116M
  镜子616M 1.81T 0 856 0 106M
     S1_D5  -   -  0 856 0 106M
     S2_D5  -   -  0 939 0 116M
 ---------- ----- ----- ----- ----- ----- -----

在下一个testing中,我总共添加了12个磁盘,共24个磁盘,我们有效地将每个磁盘的带宽减半。

 zpool create -o ashift = 12 -f PoolA镜像S1_D0 S2_D0镜像S1_D1 S2_D1 
镜像S1_D2 S2_D2镜像S1_D3 S2_D3镜像S1_D4 S2_D4 
镜像S1_D5 S2_D5镜像S1_D6 S2_D6镜像S1_D7 S2_D7 
镜像S1_D8 S2_D8镜像S1_D9 S2_D9镜像S1_D10 S2_D10 
镜像S1_D11 S2_D11

                容量操作带宽
池分配空闲读写写读写
 ----------- ----- ----- ----- ----- ----- -----
池A 65.2M 21.7T 0 4.67K 0 588M
  镜子6.56M 1.81T 0 399 0 49.0M
     S1_D0  -   -  0 399 0 49.0M
     S2_D0  -   -  0 513 0 63.1M
  镜子5.71M 1.81T 0 400 0 48.7M
     S1_D1  -   -  0 400 0 48.7M
     S2_D1  -   -  0 515 0 62.6M
  镜子6.03M 1.81T 0 396 0 49.1M
     S1_D2  -   -  0 396 0 49.1M
     S2_D2  -   -  0 509 0 62.9M
  镜子5.89M 1.81T 0 394 0 49.0M
     S1_D3  -   -  0 394 0 49.0M
     S2_D3  -   -  0 412 0 51.3M
  镜子5.60M 1.81T 0 400 0 49.0M
     S1_D4  -   -  0 400 0 49.0M
     S2_D4  -   -  0 511 0 62.9M
  镜子4.65M 1.81T 0 401 0 48.9M
     S1_D5  -   -  0 401 0 48.9M
     S2_D5  -   -  0 511 0 62.3M
  镜5.36M 1.81T 0 397 0 49.2M
     S1_D6  -   -  0 397 0 49.2M
     S2_D6  -   -  0 506 0 62.5M
  镜子4.88M 1.81T 0 395 0 49.2M
     S1_D7  -   -  0 395 0 49.2M
     S2_D7  -   -  0 509 0 63.3M
  镜子5.01M 1.81T 0 393 0 48.2M
     S1_D8  -   -  0 393 0 48.2M
     S2_D8  -   -  0 513 0 63.0M
  镜子5.00M 1.81T 0 399 0 48.7M
     S1_D9  -   -  0 399 0 48.7M
     S2_D9  -   -  0 513 0 62.5M
  镜子5.00M 1.81T 0 398 0 49.2M
     S1_D10  -   -  0 398 0 49.2M
     S2_D10  -   -  0 509 0 62.8M
  镜子5.55M 1.81T 0 401 0 50.0M
     S1_D11  -   -  0 401 0 50.0M
     S2_D11  -   -  0 506 0 63.1M
 ----------- ----- ----- ----- ----- ----- -----

希望有人可以阐明为什么添加更多的磁盘会有效地削减每个磁盘的性能。

额外的请求信息

硬件摘要

服务器

联想ThinkServer RD550,单10核心至强,256GB的RAM,操作系统在RAID 1上的720ix控制器。

服务器HBA

LSI 9300-8e mpt3sas_cm0:LSISAS3008:FWVersion(12.00.00.00),ChipRevision(0x02),BiosVersion(06.00.00.00)

磁盘架

磁盘架是具有双SAS控制器的Lenovo ThinkServer SA120,双电源冗余连接,每个磁盘有两个path。

磁盘架连接

磁盘架通过.5米SAS电缆连接,并通过架子以菊花链方式连接,最后连接到控制器。

驱动器信息

48 x 2TB SAS驱动器希捷型号#ST2000NM0023驱动器通过多pathconfiguration,每个驱动器都有冗余path。

软件摘要

操作系统/内核

CentOS 7.3输出“uname -a”Linux 4.9.9-1.el7.elrepo.x86_64#1 SMP Thu Feb 9 11:43:40 EST 2017 x86_64 x86_64 x86_64 GNU / Linux

ZFS调优

/etc/modprobe.d/zfs.conf目前是一个空白文件,在这里我没有太多尝试,顺序写入性能似乎应该增加更多的磁盘。

等待更多信息…

你应该提供的细节如下:

  • 磁盘的具体制造/型号/速度/接口。 ( 他们是SAS?SATA?
  • 正在使用的特定外部JBOD机箱。
  • 机箱如何连接到服务器。

谁知道? 您可能只是超额订购机箱的SAS扩展器,无法通过添加驱动器主轴来扩展。

当然,这里也有一个调整元素。 我们需要看看你对/etc/modprobe.d/zfs.conf做了哪些修改。

如果该文件为空,那么您可能错过了ZFS版本中可用的大量可调参数。

你能解释一下什么是操作系统? 发行,内核和版本。


只需按照我的Linux + ZFS HA指南 。

你也想调整你的zfs.conf:

这是我的:

 #options zfs zfs_arc_max=51540000000 options zfs zfs_vdev_scrub_min_active=24 options zfs zfs_vdev_scrub_max_active=64 options zfs zfs_vdev_sync_write_min_active=8 options zfs zfs_vdev_sync_write_max_active=32 options zfs zfs_vdev_sync_read_min_active=8 options zfs zfs_vdev_sync_read_max_active=32 options zfs zfs_vdev_async_read_min_active=8 options zfs zfs_vdev_async_read_max_active=32 options zfs zfs_top_maxinflight=320 options zfs zfs_txg_timeout=15 options zfs zfs_vdev_scheduler=deadline options zfs zfs_prefetch_disable=0 options zfs l2arc_write_max=8388608 options zfs l2arc_headroom=12 options zfs zfs_dirty_data_max_percent=40 options zfs zfs_vdev_async_write_min_active=8 options zfs zfs_vdev_async_write_max_active=32 options zfs zfs_immediate_write_sz=131072 options zfs zil_slog_limit=536870912