下一步 上一步 目录
正如已经说过的,在这种设置中,客户端基本上与服务器共享整个根文件系统(root-fs)。但是客户端当然只能获得对它的读取权限。这就是基本的工作原理。
不幸的是,事情并非如此简单,在这种简单的设置中,有一些问题需要克服。
每个工作站(WS)都需要一些目录的可写副本
一个正常的Linux设置需要对以下目录具有写入权限
- /dev
- /var
- /tmp
对此有3种解决方案,其中一种仅适用于/dev
- 挂载一个内存盘(ramdisk),并通过解压tarball或复制模板目录来填充它。
- 优点
- 它在每次重启时都会被清理,这样就移除了临时文件和日志。因此,与服务器端目录不同,它不需要维护。
- 它不占用服务器上的任何空间,并且不产生任何网络流量。内存盘占用更少的服务器和网络资源,并且速度更快。
- 缺点
- 它占用内存。
- 日志在重启后不会保留,如果您真的想要记录所有客户端的日志,请告诉syslog将日志重定向到您的服务器。
- 在服务器上为每个工作站创建一个目录,并通过NFS以读写方式挂载它。
- 优点和缺点
- 以上论点对于服务器端目录来说是相反的。
- 对于内核2.2,devfs可以用于/dev,这是一个类似于/proc的虚拟文件系统,用于/dev。
- 优点
- 与内存盘相比,Devfs占用非常少的内存/不占用服务器上的磁盘空间,并且速度非常快。一个普通的/dev至少占用1.5 MB,因为文件的最小大小(以及设备的最小大小)是1k,并且大约有1200个设备。您当然可以使用一个精简的/dev模板,只包含您需要的条目,以节省一些空间。1.5 MB对于内存盘来说很多,并且对服务器也不友好。
- Devfs自动为新添加和检测到的设备创建条目,因此不需要维护。
- 缺点
- 对/dev的任何更改,例如为鼠标和光驱创建符号链接都会丢失。Devfs附带一个名为rc.devfs的脚本来保存这些更改。本指南中提供的脚本将通过调用rc.devfs自动恢复这些符号链接设置。如果您对/dev进行了任何更改,您需要自己调用rc.devfs来保存它们,方法是输入
/etc/rc.d/rc.devfs save /etc/sysconfig
正如您所看到的,有很多方法可以解决这个问题。在本指南的其余部分中,假设采用以下选择
- 对于/dev,我们将使用Devfs
- 对于/var和/tmp,我们将使用一个1MB的共享内存盘。共享是为了尽可能高效地使用空间。/tmp被替换为指向/var/tmp的符号链接,以使共享成为可能。
- 使用tarball或模板目录填充内存盘效果一样好。但是使用模板目录更容易进行更改,因此我们将使用模板目录。
可能需要对/home的写入权限
在每个Unix客户端/服务器设置中,这都不是问题。/home是从服务器以读写方式挂载的,所以我们就这样做;)
工作站(WS)如何找出它的IP,以便它可以与服务器通信?
幸运的是,对于我们来说,这个问题已经解决了,并且Linux内核支持两种自动配置IP地址的方式
- RARP
- Bootp
Rarp是最容易设置的,bootp是最灵活的。由于大多数启动ROM(bootrom)只支持bootp,所以我们将使用bootp。
关于工作站特定的配置呢?
在Redhat上,大多数系统相关的配置文件已经在/etc/sysconfig中。我们将移动那些不在那里的文件并添加符号链接。然后我们为每个工作站挂载一个单独的/etc/sysconfig。这实际上是唯一与发行版相关的部分。在其他发行版上,您可以只创建一个sysconfig目录,移动所有不能共享的配置文件到那里,并创建符号链接。此外,/etc/rc.d/rc3.d,或其他发行版上的类似目录,可能需要对于服务器和工作站是不同的。假设所有工作站都在运行级别3中运行相同的服务,我们将为工作站和服务器创建一个单独的第3运行级别
- 同时创建/etc/rc.d/rc3.ws和/etc/rc.d/rc3.server
- 将/etc/rc.d/rc3.d符号链接到/etc/sysconfig/rc3.d
- 将/etc/sysconfig/rc3.d符号链接到适当的/etc/rc.d/rc3.xxx
- 将rc3.ws中的S99local替换为指向/etc/sysconfig/rc.local的链接,以便每个工作站都可以有自己的rc.local
其他问题
还剩下一些问题
- /etc/rc.d/rc.sysinit需要/var,因此/var需要在/etc/rc.d/rc.sysinit运行之前挂载或创建。如果在任何init脚本运行之前挂载工作站特定的/etc/sysconfig也会很好。
- 我们将在/etc/rc.d/rc.sysinit的最顶部为工作站引入一个启动脚本。请注意,这个脚本当然也会在服务器启动时被服务器本身引入,因此该脚本必须检测到这一点,并在服务器上不执行任何操作。
- /etc/mtab需要可写
- 这是一个棘手的问题,只需创建一个指向/proc/mounts的链接,并在/proc中创建一个空文件mounts,以便fsck和mount在init脚本期间在/proc尚未挂载时不会报错。需要注意的是,smb(u)mount不遵守mtab是一个链接,并会覆盖它。因此,如果您想使用smb(u)mount,请创建包装脚本来恢复符号链接。
下一步 上一步 目录