我正在 KVM 下构建一些虚拟机,其中基本系统将是一个映像(尚未具体确定哪种格式),所有剩余的系统文件将是从分布式文件系统安装的其他分区。
例如,/ 将是主映像的一部分,但 /home 将从其他位置安装。我的目标是使基本系统映像尽可能小,从而使尽可能多的系统不属于根分区。
所以我的问题是:Linux 中的哪些目录必须是根文件系统的一部分?例如,我假设 /etc 和 /sbin 等目录必须如此,因为这是允许引导系统和挂载其他分区的实用程序所在的位置。但是 /opt 当然可以在不同的分区上。
万一这很重要,我正在构建的系统要么是 Ubuntu Server 12.04,要么是 14.04,如果我等到它出现后再生产和部署这些系统。
自 90 年代以来,情况并没有太大变化。通常,/etc /bin /sbin /lib /lib64 是您在 / 上需要的一切。你可以用远低于 1GB 的内存(我在几个 CentOS 虚拟机上有 256M 的空间,还有足够的空间)
我建议您不要尝试这样的设计,除非您使用的是完成迁移的
/usr
最新 Linux 系统。否则,您将遇到各种问题,主要问题是打包的二进制文件在共享文件系统和唯一的每台机器文件系统之间拆分。这完全否定了您可能通过共享文件系统获得的任何好处。无论如何,在系统
/usr
移动后,根文件系统几乎包含挂载点、挂载点的符号链接,/etc
否则为空;因此它可以很小。这样的系统根本不包含打包的二进制文件;一切都在/usr
。(这适用于现代 Linux 系统,因为 initramfs 负责挂载引导所需的文件系统。)
值得注意的是,Ubuntu 还没有采取
/usr
行动,而且可能要等到 systemd 进入之后才会发生。如果 Ubuntu 存在那么久,它将错过 14.04 LTS,我不会合理地期望它直到 16.04 LTS。我不确定你为什么选择 Ubuntu,但我会认真考虑另一个发行版(不仅仅是因为这个原因)。您应该花一些时间来了解Linux 文件系统层次结构标准。
你可以有一个简单的分区方案
/boot
,/
或者有很多很多分区。我的最小安装在
/
.