![共享 /usr 子目录的正确方法是什么?](https://linux22.com/image/17956/%E5%85%B1%E4%BA%AB%20%2Fusr%20%E5%AD%90%E7%9B%AE%E5%BD%95%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
在通常的实践中,子目录的哪些部分/usr
通常是共享的,而不会引入任何系统不稳定?我的目的是在相同配置的虚拟机之间共享/usr
子目录的可共享部分,以节省虚拟硬盘空间。
A计划是:
- 安装操作系统:我在安装过程中没有找到将
/usr
子目录指向远程 NFS 共享的选项,因此所有/usr
子目录现在都必须安装在本地驱动器上。稍后必须调整虚拟机硬盘驱动器的大小。 - 配置网络设置
- 配置
/etc/fstab
指向各个远程/usr
共享的点。
B 计划是:
- 将目标新 VMHD 连接到基准 VM
- 手动将
/
子目录从基准 VM 复制到新的 VMHDmkdir /dev /proc
等。 - 在新硬盘上安装 grub 2(
grub-install /dev/sdb
以我为例) - 从基准计算机分离新的 VMHD 并将其附加到新 VM
- 启动新虚拟机,执行计划 A 3 和 4。
这些方法好不好?有没有更合适、更好、更快的方法呢?
我执行了 B 计划,新机器启动到 grub,但不断尝试查找由其 UUID 引用的基准主机的 HD。我从新机器上删除了所有提及基准主机 UUID 的内容/boot/grub/grub.cfg
,但 grub 仍然不断尝试找到它。除了grub.cfg
引用硬盘的文件之外,我不知道 grub 在启动时使用的任何其他配置文件。
答案1
/usr
只要所有虚拟机在同一处理器架构上运行相同(或几乎相同)版本的相同 UNIX 发行版,您就可以共享所有(如果您有不同的架构,您可以共享/usr/share
,但这可能不值得) 。您可能想也可能不想分享/usr/local
。如果不这样做,请将其设置为每个虚拟机中的单独安装点,或者将其设置为类似于../opt/local
inside 的符号链接/usr
。
您必须注意/usr
在每个虚拟机中以只读方式安装,或者使用允许共享的文件系统。请注意,如果/usr
在任何虚拟机中以只读方式安装,即使虚拟机处于休眠状态,您也无法/usr
以任何方式写入。因此/usr
,通过远程文件系统安装可能比从每个虚拟机内的磁盘映像安装更方便(但可能稍微慢一些) 。如果您使用的是单一虚拟机技术,请使用其共享文件夹功能(如果可用)(因此/usr
安装在主机上的某个位置)。否则使用 NFS,主机导出目录(同样,主机已将目录安装在某处)。
对于安装,大多数安装程序应允许您/usr
以“专家模式”挂载为 NFS。在此阶段访问共享文件夹可能会更加困难。如果无法做到这一点,请/usr
在单独的虚拟磁盘上创建单独的文件系统,然后复制内容并删除虚拟磁盘。