热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么linux中有两个系统软件,为什么应该将Linux系统“一分为二”

过去几十年来,微软一直针对桌面与服务器两类工作负载发布完全独立的操作系统方案。诚然,二者共享一部分代码内容,但用户绝不可能单纯通过安装一部

过去几十年来,微软一直针对桌面与服务器两类工作负载发布完全独立的操作系统方案。诚然,二者共享一部分代码内容,但用户绝不可能单纯通过安装一部分软件包并摒弃另一部分软件包的方式直接将Windows 7系统转化为Windows Server 2008 R2系统。桌面与服务器本身就完全不同,整个技术业界也一直秉持着与微软相同的打理方式。

当然,这种状况并没能阻止一部分开发人员将服务器工作负载交由Windows XP系统加以处理的尝试与怀疑性态度,但从宏观角度来看、桌面系统与服务器系统之间的差异是显著而且真实存在的。然而在Linux领域,这种界线则一直非常模糊。

b587f47f56c5bfa2f9de7596aeb5c588.png

大家可以选择任何一套Linux发行版并在安装后将其作为服务器操作系统,也能够随时根据需要安装并卸载其中部分软件包再将其转化为适用于工作站设备的桌面版本。整体而言,操作系统内核依然如故、而可靠性与性能表现也几乎没有区别—当然,前提是大家能够以正确的方式对系统进行调整。虽然看起来没有什么问题,但这两类工作负载实在区别明显,而且随着计算能力的不断提升、两类工作负载的具体状况也在朝着不同方向进一步偏离。

也许现在是时候将Linux拆分为二了。

我们看到很多类似于嵌合体般的操作系统费尽心力在充当服务器系统的同时,又得准备好让那些突发奇想的用户将其作为桌面系统使用。此类情况出现得越多,我们就越是希望能把这两类使用方式区分开来。大家可以在自己的笔记本或者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的热烈讨论并不是在浪费唇舌。

0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 开发笔记:Memcached高性能内存对象缓存系统
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述 ... [详细]
author-avatar
哥这么好的人你去哪找
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有