限制 mdadm RAID 1 阵列下 LXD 容器的磁盘 IO

限制 mdadm RAID 1 阵列下 LXD 容器的磁盘 IO

在具有 mdadm RAID 1 阵列上的两个磁盘的主机上运行的容器中,我尝试限制名为西和:

lxc config device set ci root limits.read  30MB
lxc config device set ci root limits.write 10MB

但是,在容器上运行例如此命令时:

dd if=/dev/zero of=/root/testfile bs=1G count=10 oflag=direct

结果是磁盘的整个容量,大约是130MB/秒,而不是预期的结果10MB/秒对于写入操作:

10737418240 bytes (11 GB, 10 GiB) copied, 81,3877 s, 132 MB/s

atop通过在主机上运行也证实了这一点:

在此处输入图片描述

如何才能有效地限制容器的磁盘 IO,以便无论发生什么情况,主机磁盘性能都不会过度使用

在第二次测试中,我运行相同的在客户机和主机上同时执行上述命令,但主机也没有优先级:

在此处输入图片描述

一些附加信息:

  • 主机和客户机都是 Ubuntu 16.04
  • 服务器有两块硬盘,分区大小相等,组成RAID1阵列
  • 在最大的 RAID 阵列之上,根文件系统安装在 LVM 卷组上

    root@server ~ # lvs
    LV   VG   Attr       LSize
    root vg0  -wi-ao---- 2,72t
    swap vg0  -wi-ao---- 4,00g
    
  • LXD 存储后端是目录

如果这有助于限制容器的磁盘 IO,我可以对磁盘进行不同的分区,例如为 LXD 配备专用于 ZFS 的 RAID 阵列。这有帮助吗

答案1

当容器文件系统位于块设备上时,I/O 限制有效,但在使用旧版本(如 10.0.9)时,它不适用于 mdadm RAID 等虚拟设备。

更新至版本 10.15 后,限制生效。在 Ubuntu 中,您可以使用以下命令进行更新:

sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable 
sudo apt-get update
sudo apt-get install lxd

有关详细信息,请参阅以下讨论https://discuss.linuxcontainers.org/t/limiting-disk-io-on-lxd-containers/261以及未解决的问题https://github.com/lxc/lxd/issues/3515

相关内容