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 / 问题 / 1084155
Accepted
Philip Szalla
Philip Szalla
Asked: 2021-11-22 02:35:45 +0800 CST2021-11-22 02:35:45 +0800 CST 2021-11-22 02:35:45 +0800 CST

ZFS 性能:极低的写入速度

  • 772

我正在运行一个小型家庭服务器。规格是:

  • CPU:AMD锐龙5 2600
  • 内存:32 GB ECC
  • 系统驱动器:128GB NVMe SSD
  • 数据驱动器:3x 4 TB Seagate Barracuda HDD

服务器运行一些应用程序,如 Nextcloud 或 Gitea,我想在其上运行 1-2 个 VM。所以有一些网络应用程序、数据库和虚拟机。

应用程序和 qcow2 映像存储在 raidz1 池中:

$ sudo zpool status
  pool: tank
 state: ONLINE
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors

在最初几周使用这些应用程序时,我没有遇到任何问题。但几周后,我意识到写入速度极低。nextcloud 实例不是很快,当我尝试使用 Windows 10 启动一个新的 VM 时,它需要大约 5 分钟才能到达登录屏幕。

我做了一些性能测试fio,得到了以下结果:

测试 IOPS 带宽 (KiB/s)
随机读取 37,800 148,000
随机写入 31 127
顺序读取 72,100 282,000
顺序写 33 134

在发帖之前我做了一些研究,并读到我应该将 SLOG 添加到 zfs 池中,以获得更好的数据库和 VM 性能。但这目前是没有选择的。我需要先得到圣诞礼物 :D

但即使没有 SLOG,我也不认为这些数字是正确的 :(

有人有想法吗?:)

performance linux zfs openzfs
  • 2 2 个回答
  • 1175 Views

2 个回答

  • Voted
  1. shodanshok
    2021-11-22T13:27:51+08:002021-11-22T13:27:51+08:00

    一阶近似值raidz提供单个磁盘的随机性能,对于 7.2K HDD 而言约为 70 IOPS。您的测试显示 IOPS 减少了 50%(即:~30 vs ~70),这可以用recordsize您选择的相对较大来解释。

    特别是对于随机写入,任何recordsize大于 4KB 的内容都将面临相当大的读取/修改/写入损失。请注意,我不recordsize提倡在机械磁盘上​​使用这么小的磁盘,因为它会导致非常高的元数据开销、高碎片和(几乎)没有压缩。作为参考,当使用 HDD 时,即使对于虚拟化主机,我也会保留默认 (128KB) 记录大小。

    您可以执行以下操作来提高性能:

    • 在适用的情况下使用mirrorvs raidz(但您只有 3 个磁盘,防止使用镜像+条带化)
    • 使用 RAW 图像文件而不是 QCOW2(如果确实需要 QCOW2 文件,请务必预先分配其元数据)
    • 尝试设置sync=disabled(但请务必了解,如果突然断电,您的系统将丢失最多 5 秒的写入数据)
    • 2
  2. Best Answer
    Philip Szalla
    2021-12-05T12:48:51+08:002021-12-05T12:48:51+08:00

    我自己发现了问题。

    我看到一篇文章提到了CMR和SMR。我检查了我的驱动器,发现我不小心用 SMR 购买了硬盘 :(

    在用新的 CMR 驱动器替换驱动器之前,我将保留一个镜像池。当我拥有新驱动器时,我还将使用镜像池。

    谢谢你们!

    • 2

相关问题

  • 上线的第一天:如何不杀死您的网站

  • IIS 优化

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

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