CentOS vps 上的空内核进程:2 个不同的服务器

CentOS vps 上的空内核进程:2 个不同的服务器

我不确定我问的是否正确,或者也许我只是看错了东西。我正在从一个 CentOS Vps(在 OpenVZ 机器上)迁移到另一个 CentOS VPS(在 VMWare 机器上)。

  • VPS #1 = CentOS 版本 6.5(最终版)- Linux 版本 2.6.32-042stab061.2(gcc 版本 4.4.6 20120305(Red Hat 4.4.6-4)
  • VPS #2 = CentOS 版本 6.5(最终)Linux 版本 2.6.32-431.29.2.el6.x86_64(gcc 版本 4.4.7 20120313(Red Hat 4.4.7-4)

基本相同的设置,即 LAMP,通过 YUM 更新到最新版本。然而,在 VPS #1 上,没有那么多进程,只有设置中预期的标准。

在 VPS #2 上,还有更多进程,我不太明白为什么。诚然,它们似乎是“空”进程(0% CPU、0% 内存),但它们为什么会在那里呢?

我不认为这是因为一个 VPS 在 OpenVZ 上,另一个在 VMWare 上,或者是吗?

虚拟专用服务器 #1

虚拟专用服务器1

虚拟专用服务器#2

虚拟专用服务器2A 虚拟专用服务器2B

问题

  • 有人可以向我解释为什么这两个系统之间存在这些差异吗?
  • 为什么一个系统上的进程比另一个系统上的进程更多?

答案1

OpenVZ 中缺少进程是正常的。 OpenVZ 是一种容器技术,而不是像 VMWare 或 VirtualBox 这样的真正的虚拟化技术。在VMWare中,有一种称为虚拟机管理程序的技术,它集成到主机系统的内核中。

在 OpenVZ 系统上,客户系统共享相同的 Linux 内核。因此,实际上只有 1 个 Linux 内核在运行,而不是为每个来宾运行一个。

以下是我的一位 OpenVZ 客人的输出:

$ ps -eaf
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar09 ?        00:00:18 init [3]      
root      7699 22497  1 14:05 ?        00:00:00 sshd: root@pts/0 
root      7769  7699  2 14:05 pts/0    00:00:00 -bash
root      7794  7769  0 14:05 pts/0    00:00:00 ps -eaf
apache   12221 25901  1 10:41 ?        00:02:33 /usr/sbin/httpd
apache   13386 25901  1 Sep17 ?        00:14:23 /usr/sbin/httpd
apache   14030 25901  1 07:22 ?        00:05:37 /usr/sbin/httpd
apache   14038 25901  1 07:22 ?        00:05:36 /usr/sbin/httpd
root     21967     1  0 Mar09 ?        00:00:00 /sbin/udevd -d
rpc      22317     1  0 Mar09 ?        00:00:22 portmap
rpcuser  22349     1  0 Mar09 ?        00:00:00 rpc.statd
root     22419     1  0 Mar09 ?        00:00:01 /sbin/rsyslogd -i /var/run/rsyslogd.pid -m 0
root     22435     1  0 Mar09 ?        00:00:49 ypbind
root     22457     1  0 Mar09 ?        00:15:42 automount
root     22485     1  0 Mar09 ?        00:13:33 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
root     22497     1  0 Mar09 ?        00:00:00 /usr/sbin/sshd
root     22508     1  0 Mar09 ?        00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root     22526     1  0 Mar09 ?        00:00:23 sendmail: accepting connections
smmsp    23558     1  0 Mar09 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root     23577     1  0 Mar09 ?        00:00:03 crond
root     23585     1  0 Mar09 ?        00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root     23586 23585  0 Mar09 ?        00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root     23594     1  0 Mar09 ?        00:00:07 /usr/sbin/uptimed
apache   24238 25901  1 04:34 ?        00:07:22 /usr/sbin/httpd
root     25901     1  0 Sep16 ?        00:00:00 /usr/sbin/httpd

OpenVZ 项目的网站很好地概述了容器虚拟化技术与虚拟机技术的差异。

摆脱“空”流程

这些不是空的过程。在虚拟机环境中,您在硬件层进行虚拟化,因此来宾操作系统必须提供更多在裸机上运行时必须拥有的核心进程。

使用 OpenVZ/Docker/LXC 等容器技术,您可以在进程级别进行虚拟化,因此您需要承担一组不同的义务。您的所有容器都可以通过共享单个 Linux 内核而受益。

相关内容