为啥systemd这样的核心组件都很多bug

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥systemd这样的核心组件都很多bug相关的知识,希望对你有一定的参考价值。

参考技术A  现在就让我们来看看 systemd 是怎么改变你管理系统的习惯的。在使用 systemd 之前,你得先把 sysvinit 保存起来,以便在 systemd 出错的时候还能用 sysvinit 启动系统。这种方法只有在没安装 systemd-sysv 的情况下才能生效,具体操作方法如下:   1.# cp -av /sbin/init /sbin/init.sysvinit 在紧急情况下,可以把下面的文本:   1.init=/sbin/init.sysvinit添加到内核启动参数项那里。   systemctl 的基本用法systemctl 的功能是替代“/etc/init.d/foo start/stop”这类命令,另外,其实它还能做其他的事情,这点你可以参考 man 文档。   一些基本用法:   •systemctl - 列出所有单元(UNIT)以及它们的状态(这里的 UNIT 指的就是系统上的 job 和 service)   •systemctl list-units - 列出所有 UNIT   •systemctl start [NAME...] - 启动一项或多项 UNIT   •systemctl stop [NAME...] - 停止一项或多项 UNIT   •systemctl disable [NAME...] - 将 UNIT 设置为开机不启动   •systemctl list-unit-files - 列出所有已安装的 UNIT,以及它们的状态   •systemctl --failed - 列出开机启动失败的 UNIT   •systemctl --type=mount - 列出某种类型的 UNIT,类型包含:service, mount, device, socket, target   •systemctl enable debug-shell.service - 将一个 shell 脚本设置为开机启动,用于调试   为了更方便处理这些 UNIT,你可以使用 systemd-ui 软件包,你只要输入 systemadm 命令就可以使用这个软件。   你同样可以使用 systemctl 实现转换运行级别、重启系统和关闭系统的功能:   •systemctl isolate graphical.target - 切换到运行级别5,就是有桌面的运行级别   •systemctl isolate multi-user.target - 切换到运行级别3,没有桌面的运行级别   •systemctl reboot - 重启系统   •systemctl poweroff - 关机   所有命令,包括切换到其他运行级别的命令,都可以在普通用户的权限下执行。   journalctl 的基本用法systemd 不仅提供了比 sysvinit 更快的启动速度,还让日志系统在更早的时候启动起来,可以记录内核初始化阶段、内存初始化阶段、前期启动步骤以及主要的系统执行过程的日志。所以,以前那种需要通过对显示屏拍照或者暂停系统来调试程序的日子已经一去不复返啦。   systemd 的日志文件都被放在 /var/log 目录。如果你想使用它的日志功能,需要执行一些命令,因为 Debian 没有打开日志功能。命令如下:   1.# addgroup --system systemd-journal2.# mkdir -p /var/log/journal3.# chown root:systemd-journal /var/log/journal4.# gpasswd -a $user systemd-journal 通过上面的设置,你就可以以普通用户权限使用 journal 软件查看日志。使用 journalctl 查询日志可以获得一些比 syslog 软件更方便的玩法:   •journalctl --all - 显示系统上所有日志,以及它的用户   •journalctl -f - 监视系统日志的变化(类似 tail -f /var/log/messages 的效果)   •journalctl -b - 显示系统启动以后的日志   •journalctl -k -b -1 - 显示上一次(-b -1)系统启动前产生的内核日志   •journalctl -b -p err - 显示系统启动后产生的“ERROR”日志   •journalctl --since=yesterday - 当系统不会经常重启的时候,这条命令能提供比 -b 更短的日志记录   •journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 显示 cron 服务在某个时间段内打印出来的日志   •journalctl -p 2 --since=today - 显示优先级别为2以内的日志,包含 emerg、alert、crit三个级别。所有日志级别有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)   •journalctl > yourlog.log - 将二进制日志文件复制成文本文件并保存到当前目录   Journal 和 syslog 可以很好的共存。而另一方面,一旦你习惯了操作 journal,你也可以卸载掉所有 syslog 的软件,比如 rsyslog 或 syslog-ng。   如果想要得到更详细的日志信息,你可以在内核启动参数上添加“systemd.log_level=debug”,然后运行下面的命令:   1.# journalctl -alb 你也可以编辑 /etc/systemd/system.conf 文件来修改日志级别。   利用 systemd 分析系统启动过程systemd 可以让你能更有效地分析和优化你的系统启动过程:   •systemd-analyze - 显示本次启动系统过程中用户态和内核态所花的时间   •systemd-analyze blame - 显示每个启动项所花费的时间明细   •systemd-analyze critical-chain - 按时间顺序打印 UNIT 树   •systemd-analyze dot | dot -Tsvg > systemd.svg - 为开机启动过程生成向量图(需要安装 graphviz 软件包)   •systemd-analyze plot > bootplot.svg - 产生开机启动过程的时间图表   systemd 虽然是个年轻的项目,但已有大量文档。首先要介绍给你的是Lennart Poettering 的 0pointer 系列。这个系列非常详细,非常有技术含量。另外一个是免费桌面信息文档,它包含了最详细的关于 systemd 的链接:发行版特性文件、bug 跟踪系统和说明文档。你可以使用下面的命令来查询 systemd 都提供了哪些文档:   1.# man systemd.index 不同发行版之间的 systemd 提供的命令基本一样,最大的不同之处就是打包

VMware vSphere核心组件

 

VMware 可以说是虚拟化的鼻祖,现在很多公司都是在模仿 VMware 的产品,相应用过 VMware 虚拟机的朋友应该不陌生了,VMware 提供了很多的虚拟化产品,从服务器到桌面都有很多应用。主要有面向企业级应用的 ESX Server,面向服务端的入门级产品 VMware Server,面向桌面的主打产品 VMware Workstation(这个相信大家经常用),面向苹果系统的桌面产品 VMware Fusion,还有提供整套虚拟应用产品的 VMware vSphere,细分的话还有 VMware vStorage(虚拟存储),VMware vNet(虚拟网络)等。

VMware在云端目前的最主要优势在于它的虚拟化服务器有着目前业界最良好的稳定性,这在目前如火如荼的私有云落地阶段,是一个很占优势的地方。

什么是VMware vSphere?

VMware vSphere不是特定的产品或软件。VMware vSphere是整个VMware套件的商业名称。VMware vSphere堆栈包括虚拟化,管理和界面层。VMware vSphere的两个核心组件是ESXi服务器和vCenter Server。ESXi是hypervsior,您可以在其中创建和运行虚拟机和虚拟设备。vCenter Server是用于管理网络中连接的多个ESXi主机和池主机资源的服务。与其他虚拟机管理程序(如Microsoft Hyper-v和Citrix Xen Server)相比,VMware vSphere是虚拟化行业的主人。

vSphere 类似微软的 Office 办公套件,Office 办公套件包含了许多软件如Word, Excel, Access 等。和 Office 一样,vSphere 也是一个软件的集合。他包括了 vCenter, ESXi 和 vSphere 等。所以,这些软件联合起来就是 vSphere。vSphere 不是一个你可以安装使用的软件。它只是一个包含其它组件的集合。ESXi, vSphere client 和 vCeneter 都是 vSphere 的组件。

下图描述了 vSphere 套间之前的关系。vSphere 是一个产品套件,ESXi 是安装在物理机上面的服务。vSphere Client 安装在笔记本或 PC 机上面,用来访问 ESXi 服务并安装和管理上面的虚拟机。vCenter Server 安装在了 ESXi 服务器的虚拟机里面。vCenter 也可以安装在单独的物理服务器上面,但是虚拟化不应该更好么? vCenter 服务通常用在有很多 EXSi 服务和许多虚拟机的大规模环境中。vCenter 也可以使用 vSphere client 来管理。所以 vSphere client 可以在小环境中直接管理 ESXi 服务。也可以在大规模的环境中,通过 vCenter 服务间接管理 ESXi 服务。

什么是VMware ESXi?

ESXi是 vSphere 中最重要的一个组件。ESXi 是虚拟化服务。所有的虚拟机都是运行在 ESXi 服务上面。在安装了ESXi的服务器上跑Guest OS是这个样子的:

Hardware -> ESXi -> Guest OS

VMware ESXi是VMware的裸机虚拟机管理程序。VMware ESXi是以ISO形式提供的软件,可直接安装在物理硬件上,如Windows或Linux操作系统。ESXi安装占用空间小,大小为144 MB。甚至可以在USB pendrive上安装ESXi。VMWare ESXi允许您在其中创建多个虚拟机,以在单个物理硬件中运行多个操作系统,如windows,linux,solaris,macOS等。它使您能够在虚拟机之上运行工作负载,从而可以整合多个物理硬件,从而将工作负载运行到更少的物理硬件中。

 

为了安装,管理和访问这些虚拟机,你需要另外的 vSphere 套件,也就是 vSphere client 或 vCenter。

什么是VMware vCenter Server?

vCenter算是一个管理软件,一般整套系统里面会有很多esxi主机,用vCenter可以集中管理它们,同时,esxi的很多功能,离了vCenter不行.

VMware vCenter是帮助您集中管理整个VMware虚拟化基础架构的软件。vCenter可以将大约数千个ESXi主机添加到清单中,从而可以管理多个ESXi主机以及ESXi主机上运行的虚拟机。vCenter Server提供了许多vSphere功能,例如VMware DRS,VMware HA(高可用性),VMware vMotion,VMware容错,虚拟机模板,VM克隆等。

vCenter和 vSphere client 很像,但是它和功能更加强大。vCenter server 是安装在 Window 服务器或 Linux 服务器里面。VMware vCenter server 是一个中心化的管理应用。你可以通过它管理所有的虚拟机和 ESXi 物理机。vSphere client 可以通过访问 vCenter Server 来管理 EXSi 服务器。vCenter server 是一个企业级的产品,有许多企业级的功能,像 vMotion, VMware High Availability, VMware Update Manager 和 VMware Distributed Resource Scheduler(DRS)。你可以方便的通过 vCenter server 克隆存在的虚拟机。所以,vCenter 也是 vSphere 套件的一个重要组成部分。你需要单独购买 vCenter 的 license。

什么是vSphere Client和vSphere Web Client?

vSphere client允许管理员访问 ESXi 服务并管理虚拟机。vSphere client 是安装在客户机(也就是管理员的笔记本)上面。vSphere client 被用来连接 ESXi 服务器和管理任务。那么什么是 vCenter?为什么虚拟它?尝试下在没有 vCenter server 的时候,只用 vSphere client 来克隆存在的虚拟机。

vSphere客户端和vSphere Web客户端只是客户端软件,可帮助最终用户连接到vCenter Server。简单来说,它与RDP客户端相同,它可以帮助您远程连接Windows服务器。与此类似,vCenter Server是在Windows上运行的软件,甚至基于Photo OS的设备也只是作为服务运行。我们需要vSphere Client或vSphere Web Client连接到vCenter Server并管理虚拟基础架构。

vSphere Client是需要安装在用户桌面或笔记本电脑上的客户端软件,但vSphere Web Client是基于浏览器的客户端。您无需安装客户端软件即可使用vSphere Web Client管理vCenter Server。您甚至可以使用vSphere Client直接管理ESXi主机,但vSphere Web Client只能用于管理vCenter Server。我们还可以通过Web浏览器使用主机客户端管理ESXi 6.5主机。vSphere 6.5将不再提供vSphere Client(基于Windows)。

 

参考:

vSphere,ESXi和vCenter 的区别

https://cloud.tencent.com/developer/news/40435

什么是VMware vSphere

https://zhuanlan.zhihu.com/p/69214067

 

 

以上是关于为啥systemd这样的核心组件都很多bug的主要内容,如果未能解决你的问题,请参考以下文章

没有为 systemd 服务生成核心转储

VMware vSphere核心组件

VMware vSphere核心组件

核心数据迁移真的很慢,为啥会这样?

为啥这里没有生成 Coredump 文件?

systemd 为啥会有那么大的争议?