- 我正在尝试使用 Proxmox 7.3-3 作为虚拟机管理程序,并设法
ZFS
在我的 NVMe 上安装它(Samsung_SSD_970_EVO_Plus_2TB_S6S2NS0T505403V
) - 我还安装了 Ubuntu 22.04 VM,它的文件系统是
ext4
- 接下来,我安装了 MySQL 服务器(8.0.32)
- 我通常不调整 MySQL,其性能本来就可接受
- 但是,使用以下命令提取 20MB 未压缩的 SQL 文件需要 3 分钟
mysql < ...
- 这比在 Windows 10 VirtualBox 上运行同一个 Ubuntu 客户机时慢得多(20MB 的提取通常需要不到 30 秒)
知道我可能遗漏了什么吗?
更新 1
iostat
来自客人,我看到 100%%util
是红色,为什么是 100?
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 1448.00 6792.00 0.00 0.00 0.67 4.69 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.98 100.00
loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
loop1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
loop2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.00 0.00 0.00 0.00 0.00 0.00 1075.00 6792.00 373.00 25.76 0.93 6.32 0.00 0.00 0.00 0.00 0.00 0.00 492.00 1.91 1.94 100.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
iostat
来自 proxmox,同样 100%
avg-cpu: %user %nice %system %iowait %steal %idle
1.44 0.00 0.75 5.77 0.00 92.04
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
nvme1n1 484.00 0.00 0.00 0.00 1.77 0.00 814.00 20328.00 0.00 0.00 0.02 24.97 0.00 0.00 0.00 0.00 0.00 0.00 484.00 1.77 1.74 100.00
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sde 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdf 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdg 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zd16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zd32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zd48 0.00 0.00 0.00 0.00 0.00 0.00 737.00 4916.00 0.00 0.00 0.00 6.67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
zd64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zd80 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
proxmox 的zpool iostat -v -l 1
capacity operations bandwidth total_wait disk_wait syncq_wait asyncq_wait scrub trim
pool alloc free read write read write read write read write read write read write wait wait
--------------------------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
rpool 208G 1.61T 18 495 76.0K 8.00M 98us 25us 98us 25us 394ns 374ns - - - -
nvme-eui.0025385521403c96-part3 208G 1.61T 18 495 76.0K 8.00M 98us 25us 98us 25us 394ns 374ns - - - -
--------------------------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
更新2
root@pve:~# zfs get all | grep "sync\|logbias"
rpool logbias latency default
rpool sync standard local
rpool/ROOT logbias latency default
rpool/ROOT sync standard inherited from rpool
rpool/ROOT/pve-1 logbias latency default
rpool/ROOT/pve-1 sync standard inherited from rpool
rpool/data logbias latency default
rpool/data sync standard inherited from rpool
rpool/data/vm-100-disk-0 logbias latency default
rpool/data/vm-100-disk-0 sync standard inherited from rpool
rpool/data/vm-100-disk-1 logbias latency default
rpool/data/vm-100-disk-1 sync standard inherited from rpool
rpool/data/vm-101-disk-0 logbias latency default
rpool/data/vm-101-disk-0 sync standard inherited from rpool
rpool/data/vm-101-disk-1 logbias latency default
rpool/data/vm-101-disk-1 sync standard inherited from rpool
rpool/data/vm-102-disk-0 logbias latency default
rpool/data/vm-102-disk-0 sync standard inherited from rpool
rpool/data/vm-102-disk-1 logbias latency default
rpool/data/vm-102-disk-1 sync standard inherited from rpool
root@pve:~#
答案1
根据 的输出iostat
,我们可以看到您的磁盘在处理同步/刷新请求时遇到了困难。这取决于您的磁盘的消费级性质,它缺乏任何断电保护的写回缓存。如您所见,这意味着即使磁盘额定随机写入 iops 高达 560K最大值确实为~500 fsync/s。
好的,你如何加速你的服务器?以下是一些选项,按偏好排序:
如果对于此特定的 Proxmox 服务器来说,丢失最多 5 秒的数据不是问题,您可以通过在主机上运行以下命令来禁用 ZFS 级别的同步直通:
zfs set sync=disabled rpool
。这将加快全部虚拟机在此服务器上运行,但再次提醒您,您可能会丢失数据(默认情况下最多 5 秒)。但是,由于 ZFS 是 CoW 文件系统,因此即使在设置的情况下,也不会发生一般文件系统损坏sync=disabled
如果这是不可接受的,您可以调整
mysql
以避免在每次 INSERT 时刷新,而是每 1 秒仅发出 fsync()。您需要的选项是innodb_flush_log_at_trx_commit = 2
qemu
你可以通过设置图像来设置 Proxmox(或者更好的是)本身,以忽略针对特定虚拟磁盘发出的 fsync()缓存选项为unsafe