由于各种原因,我需要设置一台服务器和两个无盘工作站。
工作站将是“胖客户端”,这意味着我希望让它们使用自己的 CPU、内存等来完成所有操作。理想情况下,工作站用户根本不应该注意到它们是在无盘运行(当然,PXE 启动除外……)。
工作站应该运行 OpenSuse(11.2 和 11.4 之间的某个版本),因为我们使用的是 OpenSuse。他们不一定必须运行普通的 openSuse 安装,但要尽可能接近。
总体思路是通过 PXE 引导工作站,然后让它们通过 NFS 将其(根)文件系统挂载到服务器上。
我尝试简单地将现有的 OpenSuse 11.4 安装复制到一个目录,然后通过 NFS 导出该目录。然后通过 PXE/TFTP 暴露内核和 initrd。问题是安装中的 initrd 是根据安装它的机器定制的,因此按原样使用它是行不通的。
我曾尝试使用 LTSP(KIWI-LTSP for OpenSuse),但取得的成功非常有限。
那么,现在我的实际问题是:
1)除了手动修改initrd以与无盘工作站一起工作之外,还有什么可以帮助我的吗?
2)我的一个想法是对两个工作站使用相同的根(“/”),然后将 /var 和 /tmp 等内容挂载为 tmpfs。这里有什么需要避免的陷阱吗?
3)关于如何完成此设置还有其他想法吗?所有的想法都非常受欢迎!
答案1
我无法给你关于 opensuse 的具体答案,但大多数发行版应该有类似的过程。
以 Debian 方式(无需深入细节)
Initrd 映像是使用
update-initramfs
(来自 initramfs-tools 包)构建的。- 大多数情况下,initrd 映像对于任何普通系统都适用,因为这些机器是无盘的,在 initrd 阶段唯一需要工作的是网络和 nfs。如果某些系统需要某些模块来使用其网卡,则必须在
/etc/initramfs-tools/modules
运行之前指定它们update-initrams
。 - 默认映像具有 nfs 支持,唯一需要的就是
root=/dev/nfs nfsroot=x.x.x.x:/exportedfs dhcp
在 pxe 配置的 APPEND 行中添加。
- 大多数情况下,initrd 映像对于任何普通系统都适用,因为这些机器是无盘的,在 initrd 阶段唯一需要工作的是网络和 nfs。如果某些系统需要某些模块来使用其网卡,则必须在
在服务器端,导出的目录应该是一个工作的监狱环境,这将使升级或安装软件或更改配置变得非常容易。在客户端,
/tmp
可以简单地是一个tmpfs。因为/var
有几个选择。- 要么将一些子目录挂载为 tmpfs,例如等
/var/run
。/var/log
/var/tmp
- 或者在某处安装 tmpfs,然后使用 unionfs/aufs 将其与
/var
.这样,系统将能够写入或更改其下的任何文件/var
,但它不会持久。
您可能
/etc/
还需要 aufs,您需要一个在启动过程早期运行的脚本,并为每个客户端设置一些内容,例如根据 ip 获取主机名并重新/etc/hosts
创建/etc/hostname
.- 要么将一些子目录挂载为 tmpfs,例如等
/home
文件夹也应该是 nfs 导出并挂载 rw。 NIS 或 LDAP 或 AD 或类似的东西来管理用户帐户(和/或配置文件),将帮助您保持一点混乱。
我应该注意的是,我从未在 nfs 上做过 aufs,过去我在网络共享上使用 unionfs 时遇到了一些问题。上面的一些内容是理论上的,那是很久以前的事了,当时我有一些自己的无盘系统。
答案2
珀尔修斯应该具有您正在寻找的功能。
Perceus 图像被实现为“VNFS 胶囊”。不幸的是,我认为他们没有现成的 SUSE 胶囊,但您也许可以自己推出。