我没有找到问题的根源,不知道这个“问题”是否仅仅是 LXC 或 zfs 的限制,或者这个问题是否是 Ubuntu 特有的。
问题很简单,apt-get
在容器内运行时速度非常慢。
apt-get
读取软件包列表时挂起约 30 秒(apt-get update
例如在我运行之后)
Reading package lists... 99%
安装新软件时也会挂起。strace
例如,安装时会挂起在此处:
Setting up strace (4.5.20-2.3ubuntu1) ...
我正在使用带有 zfs 备用存储的 lxc 每日构建版。
答案1
OP 的解决方案已从问题中删除:
我做了进一步的挖掘,并在同事的帮助下找到了解决方案。
首先,我
strace
弄清楚它挂在哪里:strace apt-get update
并注意到它挂在
msync(0x7f02a57b1000, 37879664, MS_SYNC ...
研究表明这与磁盘 I/O 有关。
所以我安装并运行
iostat
:sudo apt-get install sysstat sudo iostat -x 1
磁盘利用率约为 90%。这证实了磁盘 I/O 瓶颈。
我的同事建议我尝试关闭 ZFS 的同步文件同步:
zfs set sync=disabled pool/fs
这解决了我的问题!
这是否是一个错误或一个功能仍有待商榷,所以我会在几天内不回答这个问题。