제가 질문하는 것이 옳은 것인지 잘 모르겠습니다. 아니면 잘못된 것을 보고 있는 것일 수도 있습니다. 하나의 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 커널을 공유합니다. 따라서 실제로는 각 게스트마다 하나씩 실행되는 것이 아니라 단 하나의 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 커널을 공유함으로써 이점을 얻을 수 있습니다.