在虚拟化 Red Hat 服务器场中,出于安全原因,需要安装最小系统。最少安装有几个优点(甚至与安全无关):
- 更少的漏洞暴露(如果您不需要它,请不要安装它)
- 更好的更新过程(更新的包更少,破坏系统的可能性更小)
- 更好的性能(没有不需要的守护进程或进程)
- 您拥有的软件越少,就越容易强化系统
不幸的是,这并不容易,因为 Red Hat 上的“最小安装”包含许多不必要的软件包。
由于场正在运行 Oracle iAS,因此还有一个额外的挑战。我被告知 iAS 依赖于本地图形环境。所以最后农场中的每台服务器都有 gnome、X 等。
我一直在网上搜索,一个解决方案似乎是制作一个仅安装必要软件包的 kickstart 脚本。但是我觉得这很困难,并且对之后如何维护系统依赖关系有几个疑问。
如何安装最小的 Red Hat 服务器?是否可以使用 kickstart 或者我在安装或更新中会遇到依赖问题?有什么方法可以避免为 iAS 安装图形环境?
制作kickstart 文件并不难:在您安装的一台服务器的/root 中查找名为anaconda-ks.cfg 的文件。这是一个让新服务器看起来像现有服务器的 kickstart 文件。每个 RH、Fedora 或 CentOS 服务器都有该文件。
如果您不熟悉编写 kickstart 文件,您可以在 system-config-kickstart 中编辑该文件。不过,您确实需要 X。
您使用 kickstart 文件做得很好。Kickstart 确实会影响您安装后的更新方式。在安装过程中,会自动计算依赖关系。添加了无论如何都需要的您删除的软件包(如果可能的话)。您不能安装系统的依赖关系已损坏的系统。但是,Oracle 的依赖关系是完全不同的事情。
如果 Oracle 需要图形环境(它确实需要,我知道它很糟糕,但确实如此),你别无选择,只能安装 X。但是,afaik,Oracle 需要 X,因为它有一个图形安装程序。之后你不需要 X。所以安装后,你可以删除X。
在我的商店里,我们只安装了一组非常少的 X 库,顺便说一句。通过 X 转发远程运行 xclock(以及安装程序)就足够了。够了。
Oracle 有更多疯狂的依赖。Oracle 安装程序需要一些古老的 C 库兼容包。不是因为它实际上需要它们,而是因为它们发布的 zip 实现需要它们。他们为什么要发布那个 zip 实现?有传言说,Oracle 发布的非常旧的 zip 实现具有更优惠的许可条款(例如:它不是 GPL 的),因此他们拒绝使用更新的实现。只是谣言,从未听说过确认...
KIckstart 很好。如果您想确保未安装某些软件包,您可以将它们列在要安装的软件包/组列表中,前面加上减号 ('-')。
例如
%packages
@base
core-utils
-httpd
确保没有安装 apache
然后在 %post 部分中,您可以运行命令,例如
chkconfig
关闭您不需要的服务 - 并执行您想做的任何其他操作来加强安装。您的问题实际上不是 RedHat,而是更多的 Oracle 依赖项。
正如之前的海报所说,Oracle 依赖项很疯狂,主要链接到蹩脚的安装程序,而不是产品本身。
您需要将问题分为两部分:
第二部分是最困难的,你需要花一些时间从 oracle pre-req 中确定什么是真正需要的,什么是愚蠢的依赖。
但是当它完成后,您可以自动化您的安装,并对所有系统进行最少的维护。
您可以安装一次,进行备份并在其他系统上使用它。要首先使用最小的系统,您可以:
我想说后者更容易完成。执行此操作可能需要一段时间,但这并不重要,因为您只会执行一次。
如果农场有同质的虚拟“硬件”,那就更好了。如果没有,您通常需要注意的是充分利用磁盘空间。只需使“主”副本在大小方面符合最小分母,请参见下文。
最后一部分在某些条件下相对容易实现。如果(虚拟)磁盘的末尾有一个最大的分区,则在“fdisk”中将其删除并重新创建以填满磁盘。然后你运行 resize2fs 就完成了。另一个想法可能是使用 LVM,它允许使用“lvextend”更轻松地扩大卷。(在 LVM 中很容易编写脚本/自动执行此操作。)
我正在回答另一个旧问题,因为我昨天花了一段时间。我希望 Red Hat 为专用服务器安装最少数量的软件包。
似乎在最新版本中,即使您没有在该
%packages
部分中指定单个包,@base
默认情况下也会安装该组。这安装的软件包和服务比我在某些系统上维护的要多得多。
然后我
%packages --nobase
在CentOS Kickstart/Anaconda Wiki中找到了。这确实是基于 Red Hat 的发行版的最小安装。您会发现许多您习惯并依赖于缺失的命令。但是,如果您想要一个最小的起点,就是这样。