Lxd
在 mdadm RAID 1 陣列下限制 LXD 容器上的磁碟 IO
在一個在 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