Ubuntu Server 12.04 上 LXC 容器中的 apt-get 非常慢

Ubuntu Server 12.04 上 LXC 容器中的 apt-get 非常慢

我没有找到问题的根源,不知道这个“问题”是否仅仅是 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

这解决了我的问题!

这是否是一个错误或一个功能仍有待商榷,所以我会在几天内不回答这个问题。

相关内容