我认为我能够使用dnf --installroot=...
加快创建Fedora chroot(LD_PRELOAD=/usr/lib64/nosync/nosync.so
)。但这对debootstrap
似乎没有帮助。我认为它仍然使用fsync()
,只是查看性能/磁盘活动(特别是“解包”行)。还有另一种方式吗?
答案 0 :(得分:1)
LD_PRELOAD不适用于debootstrap的原因可能是由于使用了chroot
。
正式地说,目前看来不支持此项:#700633 - Debootstrap is very slow. Please use eatmydata to fix this。请注意,如果您被迫使用旧式旋转磁盘,则时间差异应该很大。可能还有其他可能的解决方法。 LXC缓存最小的debian安装。安装完成后,您可以使用Debian eatmydata
软件包绕过fsync进行后续软件包安装。
但是如果你确实需要这个,那么 可以将LD_PRELOAD库放入chroot。我很惊讶地看到Fedora nosync.so
在Debian chroot中工作(即使用外国的旧libc) - 我不认为这是一个可靠的组合。
debootstrap按照您的预期安装/proc
,这样可以轻松逃离chroot。
sudo sh -c '
exec 3< /usr/lib64/nosync/nosync.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
sudo sh -c '
exec 3< /usr/lib/x86_64-linux-gnu/libeatmydata.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
在SATA SSD上节省不到20秒,否则需要100秒。这种情况下的主要限制因素似乎是CPU(2010年的移动i5)。
在带有硬盘的笔记本电脑(以及2015年的i5 CPU)上,它从135秒的起点节省了80秒。 mkosi
需要/适用相同的技术。建立一个系统化的测试图像,14个节目似乎可以节省8分钟。