- 我正在尝试将 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 < ...
- 这比同一个 Ubuntu 客户机在 Windows 10 VirtualBox 上运行时要慢得多(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:~#
根据 的输出
iostat
,我们可以看到您的磁盘正在努力处理同步/刷新请求。这取决于您的磁盘的消费级性质,它没有任何断电保护写回缓存。如您所见,这意味着即使额定为高达 560K 随机写入 iops 的磁盘实际上也能达到约 500 fsync/s 的最大值。好的,你怎么能加快你的服务器?一些选项,按偏好排序:
如果丢失多达 5 秒的数据不是这个特定 Proxmox 服务器的问题,您可以通过在主机上运行以下命令来禁用 ZFS 级别的同步传递:
zfs set sync=disabled rpool
。这将加速在此服务器上运行的所有虚拟机,但请再次记住,您可能会丢失数据(默认情况下最多 5 秒)。然而,由于 ZFS 是一个 CoW 文件系统,即使面对设置,也不会出现一般的文件系统损坏sync=disabled
如果这是不可接受的,您可以调整
mysql
以避免在每次插入时刷新,而不是每 1 秒发出一次 fsync()。您需要的选项是innodb_flush_log_at_trx_commit = 2
您可以通过将图像缓存选项设置为来设置 Proxmox(或更好
qemu
)本身以忽略针对特定虚拟磁盘发出的 fsync()unsafe