HelloC先生 2014-09-12
桌面工作负载与服务器工作负载各自拥有不同的实际需求。为什么非要利用同一套发行版同时为这两者提供必要支持呢?
过去几十年来,微软一直针对桌面与服务器两类工作负载发布完全独立的操作系统方案。诚然,二者共享一部分代码内容,但用户绝不可能单纯通过安装一部分软件包并摒弃另一部分软件包的方式直接将Windows 7系统转化为Windows Server 2008 R2系统。桌面与服务器本身就完全不同,整个技术业界也一直秉持着与微软相同的打理方式。
当然,这种状况并没能阻止一部分开发人员将服务器工作负载交由Windows XP系统加以处理的尝试与怀疑性态度,但从宏观角度来看、桌面系统与服务器系统之间的差异是显著而且真实存在的。然而在Linux领域,这种界线则一直非常模糊。
大家可以选择任何一套Linux发行版并在安装后将其作为服务器操作系统,也能够随时根据需要安装并卸载其中部分软件包再将其转化为适用于工作站设备的桌面版本。整体而言,操作系统内核依然如故、而可靠性与性能表现也几乎没有区别——当然,前提是大家能够以正确的方式对系统进行调整。虽然看起来没有什么问题,但这两类工作负载实在区别明显,而且随着计算能力的不断提升、两类工作负载的具体状况也在朝着不同方向进一步偏离。
也许现在是时候将Linux拆分为二了。我曾经在上周的systemd探讨文章当中表达过这一观点(并在文章中提到,FreeBSD有可能在服务器领域取得更积极的接纳态度),但除了systemd之外、还有更多其它客观因素推动着这股潮流。这一切从引导装载程序开始就出现了差异。我们看到很多类似于嵌合体般的操作系统费尽心力在充当服务器系统的同时,又得准备好让那些突发奇想的用户将其作为桌面系统使用。此类情况出现得越多,我们就越是希望能把这两类使用方式区分开来。大家可以在自己的笔记本或者64路服务器上运行同一套Debian Jessie系统——这样做到底有何必要?集中所有精力顾好一方面难道不是更有意义吗?
如果大家利用systemd将所有Linux系统发行版统一起来,那么它们彼此之间的区别将变得非常细微——仅存的差异可能只体现在软件包管理器以及文件系统布局等方面。姑且不论将Linux桌面系统作为独立业务线所带来的巨大风险,如果能让一部分Linux发行版专注于解决桌面类型负载、再让另一部分重点打理服务器类型负载,这样的结果难道不是更好?当然,Ubuntu及其它少数发行版已经开始提供“服务器”与“桌面系统”两类版本,或者在安装时准备更多方案供用户选择,但事实上二者之间的惟一区别就是所安装软件包的不同。在目前的大多数发行版当中,两类方案的内核甚至完全一致;没错,二者被硬性合而为一。
随着大人气游戏框架Steam发布Linux版本,我们开始感受到一部分对计算机游戏及计算机通用技术抱有浓厚兴趣的家伙在努力把桌面Linux系统独立出来。他们至少开始尝试对Linux的桌面特性以前所未有的方式加以强调,并且在一定程度上取得了成功。
然而他们同时也要求这些以桌面系统为核心的工作负载拥有更为出色的性能表现、特别是在图形处理方面,而且希望每款独立应用程序的处理负载对磁盘及网络I/O的要求得到缩减——这种处理思路与在服务器上一味追求高I/O与多线程处理效果的业务负载完全不同。如果想让Linux在桌面领域实现市场份额方面的突破,那么此类需求必须得到满足、而且内核也需要与服务器系统版本划分出更为明确的界线。
要实现以上提及的全部目标,新的系统版本需要在硬件支持能力、外部设备支持能力、电源管理以及其它各大桌面系统考量重点当中有所建树,而这又会使桌面与服务器两类发行版走向更为相背的两条发展道路。此外,我敢打赌,运行在虚拟机环境下的Linux服务器系统数量与运行在桌面系统中的数量相比,前者规模可达后者的数十倍乃至上百倍。在对发行版进行开发与调整时,这也应当被视为一种完全不同的使用场景并加以考量。
话说回来,Linux真的有能力实现这一切吗?答案是肯定的。那我们又能否让每一套Linux发行版都拥有开箱即用的各类支持能力?可能,非常有可能。目前以Mint为代表的、专注于桌面方向的发行版已经出现,而以Gentoo与Debian(特指某一部分Debian版本,至少是在systemd出现之前)为代表的部分发行版也开始将重点转移到服务器方向。虽然它们还没有完全迈出单一指向这决定性的步伐,但至少已经在两类关键性工作负载类型中作出了自己的选择或者说倾向性。没错,我们很难将RHEL 7视为一套真正的以服务器为核心的发行版,因为其中仍然掺杂有systemd以及面向桌面环境的软件包,但至少能够肯定的是它并不属于真正的桌面系统。从许多方面来看,RHEL 7走的仍是一条两手抓、两手都要硬的中间道路。
目前业界对于systemd的抗拒情绪非常强烈,适时推出一套主流Linux发行版的fork将systemd与GNOME依赖性彻底清理出去、并在忽略桌面支持能力的同时为用户提供一套更为传统且稳定的服务器平台已经成为当务之急。在Linux发行版的树状开发图形当中,我们真的不应该把时间浪费在为偏向服务器环境的版本提供数百上千桌面软件包的管理与支持能力,也没必要把数不胜数的外部设备及显卡驱动程序纳入考量范围(举例来说,RHEL 6.3就提供57款xorg开源DirectX驱动程序)。
安全问题同样值得关注。在桌面系统与服务器系统当中,对于安全问题的考量方式及权重存在巨大差别——事实上,不同类型的服务器之间对于安全事务的要求也有所区别,具体情况取决于每台服务器所负载的业务内容。不过我们几乎可以肯定地说,对于Memcached服务器而言、针对点击恶意网页实施恶意软件防护绝对不可能在安全威胁优先列表中占据一席之地。
相信大家跟我一样、都已经意识到用户对于桌面Linux版本在改善使用体验方面所提出的要求,其中包括引入更多外部硬件支持能力、改进图形处理性能、强化声音表现、缩短启动时间以及降低维护与管理的难度等等。这些对于桌面层级的关注只适用于桌面发行版,如果吸取意见并加以实施能够确切实现上述目标,那么我们没有理由对此加以抗拒。然而,同样的关注重点在服务器级别的系统当中显然没有立足之地或者说加以考量的理由。这种朝令夕改的频繁变动只会给系统本身带来短视与危险等弊端。
打造专有以及经过针对性调整的服务器发行版显然是个很好的主意——无论是否将systemd引入其中。而如果技术业界能够以此为前导,创建出一套足以迈入主流行列且仅适用于服务器环境的Linux发行版、并继续像过去四十五年那样坚持承继源自Unix的各项优良传统作为固有基因,那么我们无疑会为这样的成就和魄力拍手叫好。换言之,能有这样的成果,也代表着我们对于systemd的热烈讨论并不是在浪费唇舌。