AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1049974
Accepted
NikoNyrh
NikoNyrh
Asked: 2021-01-16 06:03:52 +0800 CST2021-01-16 06:03:52 +0800 CST 2021-01-16 06:03:52 +0800 CST

两个 HDD 上的 ZFS 慢速擦除

  • 772

该池由配置中的两个 HDD(WD Red 3 TB,5200 RPM?,最大传输速率 147 MB​​/s 和 Verbatim (Toshiba) 3 TB,7200 RPM)组成raidz1-0。它有 2.25 TB 的数据,复制到两个磁盘,因此总量为 4.5 TB。创建池时,我没有指定ashift值。

zpool status显示“扫描:在 2021 年 1 月 3 日星期日 13:58:54 的 32h43m 中以 0 个错误修复了 0”。这意味着扫描速度只有4.5e6 / (32.717 * 60 * 60) = 38.2 MB / s. 我预计至少 2 x 100 或高达 2 x 200 MB/s,尽管 WD 磁盘比另一个磁盘慢一些。

磁盘的 SMART 数据显示一切正常。它们有 6.5 - 7 年的通电时间,但启停次数仅为 200 次左右。

所以主要问题是:什么可以解释糟糕的读取性能?

奇怪zdb的是,池使用路径/dev/disk/by-id/ata-WDC_WD30EFRX-xyz-part1而不是/dev/disk/by-id/ata-WDC_WD30EFRX-xyz. fdisk -l /dev/disk/by-id/ata-WDC_WD30EFRX-xyz提到“分区 1 不是从物理扇区边界开始”,但我读到它只会损害写入性能。我可能会尝试通过删除设备并使用正确的全磁盘路径将其添加回来来解决此问题,因为数据是重复的(并已备份)。

该池有 710 万个文件。我sha1sum在通过 清除缓存后测试了在 14276 MB 文件上运行/proc/sys/vm/drop_caches,花了 2 分 41 秒将读取速度设置为 88.5 MB/s。

dd bs=1M count=4096 if=/dev/disk/by-id/ata-WDC_WD30EFRX-xyz of=/dev/null报告了 144 MB/s 的速度,使用它ata-WDC_WD30EFRX-xyz-part1报告了 134 MB/s 和ata-TOSHIBA_DT01ACA300_xyz报告了 195 MB/s。

我的 NAS 运行相当旧的软件版本:

$ modinfo zfs
filename:       /lib/modules/3.11.0-26-generic/updates/dkms/zfs.ko
version:        0.6.5.4-1~precise
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
srcversion:     5FC0B558D497732F17F4202
depends:        spl,znvpair,zcommon,zunicode,zavl
vermagic:       3.11.0-26-generic SMP mod_unload modversions 

它有 24 GB 的 RAM,其中 8 GB 是为 JVM 保留的,其余的可以免费使用。虽然似乎没有多少是免费的:

$ free -m
             total       used       free     shared    buffers     cached
Mem:         23799      21817       1982          0        273       1159
-/+ buffers/cache:      20384       3415
Swap:         7874         57       7817

编辑 1:

我bonnie++使用 RAIDZ 上的单个 4 GB 文件进行了一些测试:写入 75.9 MB/s、重写 42.2 MB/s 和读取 199.0 MB/s。我假设我从“千字符/秒”正确地进行了转换。

啊,刚才我意识到并行擦洗所需的时间与最慢的 5400 RPM 磁盘一样长,7200 RMP(可能)擦洗得更快并不重要。

编辑 2:

我将池中的文件数量从 710 万个减少到 450 万个(-36.6%),清理时间从 32.72 小时减少到 16.40 小时(-49.9%)。数据量是相同的,因为我只是将这些小文件放入低压缩的 ZIP 中。

我还将recordsize从 128k 增加到 512k,不知道这在这种情况下是否有所不同。其他预先存在的数据没有被触及,因此它们保留了原始recordsize. 哦,/sys/module/zfs/parameters/zfs_scan_idle被设置为2。

zfs zfsonlinux
  • 1 1 个回答
  • 532 Views

1 个回答

  • Voted
  1. Best Answer
    shodanshok
    2021-01-19T10:02:05+08:002021-01-19T10:02:05+08:00

    您正在运行什么版本的 ZFS?

    Pre-0.8.x 通过遍历所有元数据和数据进行清理,因为它们被布置在磁盘上。这会导致许多导致机械磁盘性能下降的寻道。如果与填充了数百万个小文件的低性能 5K RPM 磁盘一起使用,这意味着很长的清理/重新同步时间。使用这些较旧的 ZFS 版本,您可以调整一些 ZFS 可调参数;例如:

    echo 0 > /sys/module/zfs/parameters/zfs_resilver_delay
    echo 0 > /sys/module/zfs/parameters/zfs_scan_idle
    

    请注意,提高清理优先级会导致应用程序性能下降。

    0.8.x 使用批量清理方法,其中元数据以较大的批次收集,然后才扫描相关数据。这导致更快(即:一半的时间)擦洗,无需调整任何东西(上面的旋钮甚至不再存在)。

    因此,提高清理/重新同步速度的更有效方法可能是更新您的 ZFS 版本。

    • 3

相关问题

  • 从现有目录创建 zfs 的正确方法?

  • 如何将 ZFS ACL 从一个文件克隆到另一个文件?

  • ZFS 在演示期间在舞台上失败。这是正常行为吗?

  • Sneakernet 作为备份策略有意义吗?

  • ZFS 与 XFS

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve