我不确定我问的是否正确,或者也许我只是看错了东西。我正在从一个 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
虚拟专用服务器#2
问题
- 有人可以向我解释为什么这两个系统之间存在这些差异吗?
- 为什么一个系统上的进程比另一个系统上的进程更多?
答案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 内核而受益。