ZFS 在 8 个驱动器 4 个 vdev 条带镜像上的读取速度很慢

ZFS 在 8 个驱动器 4 个 vdev 条带镜像上的读取速度很慢

我有 8 个 3TB WD Red SATA 硬盘 sdb 至 sdi,用于我的池中。

我的启动和操作系统驱动器是 sda 上的 850 EVO SSD。

8 个 WD 硬盘安装在 Supermicro AOC-SAS2LP-MV8 附加卡上,8 通道 SAS/SATA 适配器,每通道 600MB/s,安装在 PCIE 3.0 x16 中,以 x8 速度运行在 Supermicro ATX DDR4 LGA 1151 C7Z170-OCE-O 主板上。

我的服务器和 ZFS 设置如下:

[root@nas ~]# cat /etc/redhat-release
CentOS Linux 版本 7.2.1511(核心)

[root@nas ~]# uname -a
Linux nas.whittenberg.domain 3.10.0-327.28.2.el7.x86_64 #1 SMP 2016 年 8 月 3 日星期三 11:11:39 UTC x86_64 x86_64 x86_64 GNU/Linux

[root@nas ~]# cat /var/log/dmesg | grep ZFS
[0.793572] ZFS:已加载模块 v0.6.5.7-1,ZFS 池版本 5000,ZFS 文件系统版本 5
[root@nas ~]# cat /var/log/dmesg | grep SPL
[0.777144]SPL:已加载模块v0.6.5.7-1

[root@nas ~]# cat /etc/modprobe.d/zfs.conf
# 禁用预取 = 1
选项 zfs zfs_prefetch_disable=0
# 将 arc max 设置为 48GB。我的服务器有 64GB
选项 zfs zfs_arc_max=51539607552
# 将大小设置为 128k,与文件系统块大小相同
选项 zfs zfs_vdev_cache_size=1310720
选项 zfs zfs_vdev_cache_max=1310720
选项 zfs zfs_read_chunk_size=1310720
选项 zfs zfs_vdev_cache_bshift=12
选项 zfs zfs_read_chunk_size=1310720
# 将这些设置为 10,这样我们就能以带宽为代价获得更好的 IO
选项 zfs zfs_vdev_async_read_max_active=10
选项 zfs zfs_vdev_async_read_min_active=10
选项 zfs zfs_vdev_async_write_max_active=10
选项 zfs zfs_vdev_async_write_min_active=10
选项 zfs zfs_vdev_sync_read_max_active=10
选项 zfs zfs_vdev_sync_read_min_active=10
选项 zfs zfs_vdev_sync_write_max_active=10
选项 zfs zfs_vdev_sync_write_min_active=10

[root@nas ~]# zpool 状态
  池:myraid
 状态: 在线
  扫描:scrub 于 2016 年 8 月 7 日星期日 01:40:49 在 0h16m 内修复了 0 个错误,共计 0 个
配置:

        名称 状态 读写 CKSUM
        myraid 在线 0 0 0
          镜像-0 在线 0 0 0
            sdb 在线 0 0 0
            sdc 在线 0 0 0
          镜像-1 在线 0 0 0
            sdd 在线 0 0 0
            sde 在线 0 0 0
          镜像-2 在线 0 0 0
            sdf 在线 0 0 0
            sdg 在线 0 0 0
          镜像-3 在线 0 0 0
            sdh 在线 0 0 0
            sdi 在线 0 0 0

错误:没有已知数据错误

[root@nas ~]# zpool iostat -v
               容量操作带宽
池分配空闲读写读写
---------- ----- ----- ----- ----- ----- -----
myraid 382G 10.5T 119 35 14.0M 606K
  镜像 95.5G 2.63T 29 8 3.49M 149K
    sdb - - 28 8 3.50M 153K
    sdc - - 28 8 3.50M 153K
  镜像 95.5G 2.63T 29 8 3.49M 151K
    sdd - - 28 8 3.50M 155K
    sde - - 28 8 3.50M 155K
  镜像 95.5G 2.63T 29 8 3.49M 152K
    自卫队 - - 28 8 3.50M 156K
    sdg - - 28 8 3.50M 156K
  镜像 95.5G 2.63T 29 9 3.49M 155K
    同步速率 - - 28 9 3.50M 159K
    sdi - - 28 9 3.50M 159K
---------- ----- ----- ----- ----- ----- -----

[root@nas ~]# zfs 获取所有
名称 属性 值 来源
myraid 类型文件系统 -
myraid creation 2016 年 8 月 6 日 星期六 21:01 -
myraid 使用了 382G -
myraid 可用 10.2T -
myraid 引用 382G -
myraid 压缩比 1.05x -
myraid 已安装是 -
myraid 配额 无 默认
myraid 预留 无 默认
myraid recordsize 128K 本地
myraid 挂载点 /myraid 默认
myraid sharenfs 默认关闭
myraid 校验和 fletcher4 本地
myraid 压缩 lz4 本地
myraid atime off 本地
默认为 myraid 设备
myraid 默认执行
myraid 默认为 setuid
myraid readonly 关闭默认
myraid 默认已分区
myraid snapdir 隐藏 默认
myraid aclinherit 受限默认
myraid 默认可以挂载
myraid xattr 默认
myraid 副本 1 默认
myraid 版本 5 -
myraid utf8only 关闭 -
myraid 规范化 无 -
myraid 区分大小写 -
myraid vscan 默认关闭
myraid nbmand 默认关闭
myraid sharesmb 默认关闭
myraid refquota none 默认
myraid refreservation 无 默认
myraid primarycache 全部本地
myraid secondarycache 所有默认
myraid usedbysnapshots 0 -
myraid usedbydataset 382G -
myraid usedbychildren 1.98M -
myraid usedbyrefreservation 0 -
myraid logbias 延迟本地
myraid 重复数据删除本地
myraid mlslabel 无 默认
myraid sync 本地已禁用
myraid refcompressratio 1.05x -
myraid 写入 382G -
myraid logicalused 403G -
myraid logicalreferenced 403G -
myraid filesystem_limit none 默认
myraid snapper_limit none 默认
myraid filesystem_count none 默认
myraid snapper_count none 默认
myraid snapdev 隐藏默认
myraid acltype off 默认
myraid 上下文 无 默认
myraid fscontext 无 默认
myraid defcontext none 默认
myraid rootcontext none 默认
myraid 相对时间 关闭 默认
myraid duplicate_metadata 全部默认
myraid 覆盖默认关闭

[root@nas ~]# zpool 获取所有
名称 属性 值 来源
myraid 大小 10.9T -
myraid 容量 3% -
myraid altroot-默认
myraid 健康在线 -
myraid guid 1068639342092444414 默认
myraid 版本-默认
myraid bootfs-默认
默认情况下,myraid 委派
myraid 自动替换默认关闭
myraid 缓存文件-默认
myraid 故障模式等待默认
myraid 列表快照默认关闭
myraid 自动扩展默认关闭
myraid dedupditto 0 默认
myraid dedupratio 1.00x -
myraid 免费 10.5T -
myraid 分配了 382G -
myraid readonly 关闭-
myraid ashift 0 默认
myraid 评论-默认
myraid 扩展大小 - -
myraid 释放 0 默认值
myraid 碎片 1% -
myraid 泄露 0 默认值
myraid feature@async_destroy 已启用本地
myraid feature@empty_bpobj 已启用本地
myraid 功能@lz4_compress 活动本地
myraid feature@spacemap_histogram active 本地
myraid 功能@enabled_txg 活动本地
myraid feature@hole_birth 活跃 本地
myraid feature@extensible_dataset 已启用本地
myraid 功能@embedded_data 活动本地
myraid feature@bookmarks 已启用本地
myraid feature@filesystem_limits 已启用本地
myraid feature@large_blocks 本地启用

[root@nas ~]# zdb | grep ashift
            移位:12
            移位:12
            移位:12
            移位:12

[root@nas ~]# lsblk -t -e 11,1
名称对齐 MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sda 0 512 0 512 512 0 cfq 128 128 0B
─sda1 0 512 0 512 512 0 cfq 128 128 0B
─sda2 0 512 0 512 512 0 cfq 128 128 0B
└─sda3 0 512 0 512 512 0 cfq 128 128 0B
  ─centos_nas-swap 0 512 0 512 512 0 128 128 0B
  ─centos_nas-root 0 512 0 512 512 0 128 128 0B
  └─centos_nas-home 0 512 0 512 512 0 128 128 0B
sdb 0 4096 0 4096 512 1 无操作 128 128 0B
─sdb1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdb9 0 4096 0 4096 512 1 无操作 128 128 0B
sdc 0 4096 0 4096 512 1 无操作 128 128 0B
─sdc1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdc9 0 4096 0 4096 512 1 无操作 128 128 0B
sdd 0 4096 0 4096 512 1 无操作 128 128 0B
─sdd1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdd9 0 4096 0 4096 512 1 无操作 128 128 0B
sde 0 4096 0 4096 512 1 无操作 128 128 0B
─sde1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sde9 0 4096 0 4096 512 1 无操作 128 128 0B
自民党 0 4096 0 4096 512 1 无操作 128 128 0B
─sdf1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdf9 0 4096 0 4096 512 1 无操作 128 128 0B
sdg 0 4096 0 4096 512 1 无操作 128 128 0B
─sdg1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdg9 0 4096 0 4096 512 1 无操作 128 128 0B
sdh 0 4096 0 4096 512 1 无操作 128 128 0B
─sdh1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdh9 0 4096 0 4096 512 1 无操作 128 128 0B
sdi 0 4096 0 4096 512 1 无操作 128 128 0B
─sdi1 0 4096 0 4096 512 1 无操作 128 128 0B
└─sdi9 0 4096 0 4096 512 1 无操作 128 128 0B

我的问题是,当我第一次通过 10Gb 连接(DAC PC 到服务器)读取文件时,或者使用 rsync 从池到服务器中的 SSD,我得到的只是 100MB 多一点。如果我第二次读取同一个文件,我会通过 10Gb DAC 连接获得 1.2GB,从池到 SSD 获得 380MB。

我重新启动服务器并运行从池到 SSD 的测试读取

[root@nas ~]# rsync -h --progress /myraid/testmovie.avi /home/samba/testmovie.avi
测试影片.avi
       1.08G 100% 79.59MB/s 0:00:12(xfer#1,to-check=0/1)

发送 1.08G 字节 接收 31 字节 80.21M 字节/秒
总大小为 1.08G 加速比为 1.00

然后我在读完一次后做同样的事情

[root@nas ~]# rsync -h --progress /myraid/testmovie.avi /home/samba/testmovie.avi
测试影片.avi
       1.08G 100% 394.54MB/s 0:00:02(xfer#1,to-check=0/1)

发送 1.08G 字节 接收 31 字节 433.13M 字节/秒
总大小为 1.08G 加速比为 1.00

有什么提示吗?第一次读取时我不应该获得四个驱动器的读取速度吗?

谢谢!

enter code here

相关内容