Lxd

在 mdadm RAID 1 陣列下限制 LXD 容器上的磁碟 IO

  • July 21, 2017

在一個在 mdadm RAID 1 陣列上有兩個磁碟的主機上執行的容器上,我嘗試限制名為ci的 LXD 容器的磁碟 IO,但沒有成功:

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/s ,而不是寫入操作的預期結果大約10MB/s :

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

這也可以通過atop在主機上執行來確認:

在此處輸入圖像描述

如何有效限制容器的磁碟 IO,使其無論發生什麼情況,主機磁碟性能都不會過度使用

在第二次測試中,我在客戶機和主機上同時執行與上述相同的dd命令,但主機也沒有優先級:

在此處輸入圖像描述

一些附加資訊:

  • 主機和訪客都是 Ubuntu 16.04
  • 伺服器有兩個分區相等的硬碟,加入 RAID 1 陣列
  • 在最大的 RAID 陣列之上,根文件系統安裝在 LVM 卷組上
root@server ~ # lvs
LV   VG   Attr       LSize
root vg0  -wi-ao---- 2,72t
swap vg0  -wi-ao---- 4,00g
  • LXD 儲存後端是dir

如果這有助於限制容器的磁碟 IO,我可以對磁碟進行不同的分區,例如,擁有一個專用於 LXD 的 ZFS 的 RAID 陣列。那會有幫助嗎?

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/問題/3515

引用自:https://serverfault.com/questions/858873