11.2 无盘客户机
在20世纪80年代,当时的硬盘还很贵,许多站点部署了没有本地硬盘的工作站。这些计算机称为“无盘客户机”,它们要从一台网络服务器安装自己的文件系统。现如今,硬盘非常便宜,几乎没人还在用无盘客户机了。然而它的整个思想就和9道磁带或者点阵打印机一样显得很精巧。
不过且慢,无盘运行仍然可以存在,对于某些安装类型来说,它实际上是一种合理的选择,其优点如下。
在无盘环境下,所有的数据都保存在服务器。无盘客户机绝不会因为它们的配置信息访问不到就不运行了,所以系统管理步骤里不需要把不运行的机器作为一种可能发生的特殊情况考虑进来。
真正的本地配置信息量保持在最少的程度。几乎没有什么管理操作要求有人亲自在客户机前面执行。
新客户机在它们运行甚至出现之前,就可以在服务器上先配置。客户机的行为就好像是个逻辑设备而不是物理设备。
对客户机的配置所做的重大改变可以放在需要重启的时候执行。更新过的根目录结构可以放在正在使用的目录结构旁边,等到合适的机会投入使用。使用的软件和更新系统的概念更简单,同时又提供了更快更可靠的服务。
对于许多应用来说,把能买得起的昂贵且复杂的RAID盘阵加到服务器上,这比起廉价的本地硬盘,即便把网络延迟考虑在内,速度也还是会更快。网络服务器也可能变得更可靠。硬盘会出故障,但是冗余服务器的设置却能保护好整个无盘客户机的网络。
没有哪条规则要求无盘客户机实际中一定不能有硬盘。如果愿意,可以用本地硬盘做交换空间或者高速缓存。在现代概念里,不是说客户机不能有物理硬盘,而是说它们不用这些硬盘保存需要系统管理的东西。
许多应用都是受限于CPU的应用,它们不特别依赖硬盘速度。其他有些应用有可能格外依赖硬盘,但增加内存后也可以把它们转为受限于CPU的应用。Web服务器、数据库服务器和网络协议服务器都有可能落入到这类应用当中。
在无盘环境下,客户机的根文件系统一般较小,且供自己专用。多台客户机可以共享一个共同的/usr目录,因为这个目录装的信息与具体计算机无关,在日常操作中从来不用向这个目录写数据。
Red Hat Enterprise Linux是唯一一个带有一个标准化的系统,能为该服务器之外配置无盘客户机的Linux发行版本。但即便没有得到厂商的很好支持,配置无盘客户机也不像造火箭,自己动手并不难。许多系统都有一种通过网络启动X窗口终端的机制,可以以此为起点来启动工作站。
如果发行版本没有提供设置无盘客户机的说明,那么一开始可以把一个新装机器的根文件系统复制到您的服务器上,以此为基础来克隆新的机器。研究明白如何通过网络用一个NFS的根目录引导系统。在所有的客户机之间共享计算机上文件系统的只读部分(例如,/usr)。
克隆一个客户机的根目录时,可能还要做下面的定制工作:
文件系统的安装表;
硬件设备的支持(如果网络并不是同构网络的话);
网络配置(可能需要);
启动脚本(可能需要)。
普通计算机经常带有廉价的IDE硬盘,可以把这些硬盘用于交换空间和临时用的分区。
如今便宜的RAM给无盘节点带来了很大的实惠,可以考虑用一个基于RAM的文件系统给/tmp和/dev目录做备份(或者作为频繁使用文件的高速缓存,在启动时预先载入内存)[6]。把/dev这个目录树放在RAM里,就能大大提高性能,因为喜欢访问/dev目录树的程序不会因为NFS的延迟而影响性能。参考25.3节了解更多有关RAM盘的知识。
2311.53
软件包的管理
现如今,大多数Linux的发行版本(其中包括我们举例用的所有发行版本)都是采用了某种形式的软件打包系统来简化配置管理工作。软件包传统上一直可以用来发布应用软件,有时还可以发布配置文件但它也可以给配置文件和管理数据打包。它们比起传统结构的.tar.gz存档文件有几个优势。其中可能最重要的可能要算它们能让安装过程尽可能成为不可分割的原子操作。如果发生错误,可以卸载软件包,或者重新安装软件包。
UNIX厂商经常以特殊的方式来把补丁发布给他们的客户,但是Linux发行商则利用了他们的标准软件包管理机制。发行商只需发布一个更新后的软件包,就等于发了一个补丁。客户安装新版软件包的同时就把老版替换掉了。
软件包的安装程序一般都知道配置文件,正常情况下不会覆盖由系统管理员所做的本地定制信息。它们要么也会备份它们改动过的配置文件,要么以不同的名字提供配置文件的样例(例如,pkg.conf. rpmnew)。如果您发现新安装的软件包破坏了系统上的什么地方,至少从理论上讲,您可以卸载它,恢复系统原本的状态。当然理论不等于实际,所以没有先测试的话,不要在一个生产系统上尝试安装新软件包。
软件打包系统规定了一种依赖模型,要求软件包的维护程序保证其应用软件所依赖的所有库和支持构造都已经正确地安装好了。软件包还可以在安装期间的各个不同时刻运行脚本,因此它们能做的事情不仅限于提供新文件。(软件包卸载以后系统不能恢复原状的大部分情况都可能归结为这个特性。)
软件包还是一种发布用户自己本地化配置的很好途径。用户很容易就能创建一个这样的软件包:在安装它的时候,它会读取机器的本地化信息(或者从中央数据库获得这样的信息),用得到的信息生成本地的配置文件。您还可以把本地应用软件连同依赖关系一同打包,做成软件包,或者把没有按软件包格式正常发布的第三方应用做成软件包。您可以给自己的软件包设定版本,在安装自己新版的本地化软件包的时候,利用依赖关系机制自动升级系统。
您还能利用依赖关系机制创建软件包组。例如,可以创建一个软件包,它自己什么也不安装,但却依赖许多别的补丁。打开依赖关系,安装这个软件包,就能一步把所有补丁都安装好。
软件打包系统定义了一种依赖性模型,这能够让软件包的维护程序确保其应用软件依赖的所有库和支持设施都已经正确安装好了。软件包还可以在安装期间的各个不同时刻执行脚本,所以它们能做的不只是安装新文件(这一功能或许能解释在卸载软件包之后恢复系统到其原来状态时看到的大部分软件包故障的原因)。






