OpenVZ 설치 · 5 min read · Oct 04, 2025

Debian Wheezy (AMD64)에서 OpenVZ 설치 및 사용

Debian Wheezy (AMD64)에서 OpenVZ 설치 및 사용

버전 1.0
저자: Falko Timme
Twitter에서 나를 팔로우하세요

이 HowTo에서는 OpenVZ를 위해 Debian Wheezy 서버를 준비하는 방법을 설명합니다. OpenVZ를 사용하면 Xen 및 Linux Vserver 프로젝트와 유사하게 동일한 하드웨어에서 여러 개의 가상 사설 서버(VPS)를 생성할 수 있습니다. OpenVZ는 많은 제공업체에서 사용하는 상업적 가상화 솔루션인 Virtuozzo의 오픈 소스 분기입니다. OpenVZ 커널 패치는 GPL 라이센스 하에 라이센스가 부여되며, 사용자 수준 도구는 QPL 라이센스 하에 있습니다.

이 문서는 실용적인 가이드를 위한 것이며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 다른 많은 문서에서 다루어집니다.

이 문서는 어떤 종류의 보증 없이 제공됩니다! 이는 이러한 시스템을 설정하는 유일한 방법이 아님을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보증을 제공하지 않습니다!

1 사전 참고

저는 여기서 x86_64 (amd64) 시스템을 사용하고 있습니다. i386 시스템을 사용하는 경우 몇 가지 명령이 약간 다를 수 있습니다.

2 OpenVZ 설치

Debian Wheezy의 경우 공식 저장소에 OpenVZ 커널이 없습니다. 따라서 세 가지 옵션이 있습니다:

  1. OpenVZ 프로젝트의 공식 RPM 패키지에서 설치하기 (Debian 6.0에서 RPM으로 커널 설치 참조) - ploop 지원 포함! (추천)
  2. OpenVZ 프로젝트의 Debian Wheezy 커널과 공식 Debian Wheezy 저장소의 다른 패키지 설치하기 (설치 방법 참조) - ploop 지원이 있는 커널이지만 Debian의 vzctl 패키지는 이를 지원하지 않습니다.
  3. Proxmox 패키지에서 설치하기 (Debian Wheezy에서 Proxmox VE 설치 참조) - 커널에 ploop 지원 없음.

2.1 OpenVZ 프로젝트의 공식 RPM 패키지에서 설치하기

최신 vzkernel, vzctl, ploop 및 vzquota RPM 패키지를 http://wiki.openvz.org/Download/kernel/rhel6http://wiki.openvz.org/Download/utils에서 다운로드합니다. 예를 들어 다음과 같이:

cd /tmp  
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-2.6.32-042stab076.8.x86_64.rpm  
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-devel-2.6.32-042stab076.8.x86_64.rpm  
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-4.3.1-1.x86_64.rpm  
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-core-4.3.1-1.x86_64.rpm  
wget http://download.openvz.org/utils/ploop/1.7/ploop-1.7-1.x86_64.rpm  
wget http://download.openvz.org/utils/ploop/1.7/ploop-lib-1.7-1.x86_64.rpm  
wget http://download.openvz.org/utils/vzquota/3.1/vzquota-3.1-1.x86_64.rpm

다음 패키지를 설치합니다…

apt-get install fakeroot alien libcgroup1

… 그리고 RPM 패키지를 DEB 패키지로 변환합니다:

fakeroot alien --to-deb --scripts --keep-version vz*.rpm ploop*.rpm

DEB 패키지를 다음과 같이 설치합니다:

dpkg -i vz*.deb ploop*.deb 

다음으로 시스템을 재시작할 때 올바른 커널(OpenVZ 커널)이 부팅되도록 해야 합니다. 마지막 명령의 출력에서 다음과 같은 내용을 볼 수 있어야 합니다:

vzkernel (2.6.32-042stab076.8) 설정 중 ...  
update-initramfs: /boot/initrd.img-2.6.32-042stab076.8 생성 중  
경고: /lib/modules/2.6.32-042stab076.8/modules.builtin을 열 수 없습니다: 해당 파일이나 디렉토리가 없습니다  
경고: /var/tmp/mkinitramfs_baPCFp/lib/modules/2.6.32-042stab076.8/modules.builtin을 열 수 없습니다: 해당 파일이나 디렉토리가 없습니다  
grub.cfg 생성 중 ...  
linux 이미지 발견: /boot/vmlinuz-3.2.0-4-amd64  
initrd 이미지 발견: /boot/initrd.img-3.2.0-4-amd64  
linux 이미지 발견: /boot/vmlinuz-2.6.32-042stab076.8  
initrd 이미지 발견: /boot/initrd.img-2.6.32-042stab076.8  
완료

이는 시스템에 다른 커널(3.2.0)이 있으며 OpenVZ 커널(2.6.32)이 목록의 첫 번째가 아님을 의미합니다. 따라서 OpenVZ 커널을 기본 커널로 만들기 위해 두 가지 옵션이 있습니다 - GRUB에서 기본 커널을 조정하는 것(추천) 또는 비-VZ 커널을 제거하는 것입니다.

GRUB에서 기본 커널을 조정하려면 /etc/default/grub을 엽니다…

vi /etc/default/grub

… 그리고 GRUB_DEFAULT 줄을 수정합니다(카운팅은 0부터 시작합니다; 각 커널은 복구 모드도 함께 제공되므로 OpenVZ 커널은 세 번째 커널이므로 여기서 2를 입력해야 합니다):

| [...] GRUB_DEFAULT=2 [...] |

그 후 GRUB을 업데이트합니다:

update-grub

기본 커널을 제거하려면…

apt-get remove linux-image-amd64 linux-image-3.2.0-4-amd64

… 그리고 GRUB을 업데이트합니다:

update-grub

이제 올바른 커널이 부팅될 것임을 확인했으므로 계속 진행할 수 있습니다.

다음으로 /etc/fstab에서 장치 이름 대신 UUID를 사용하고 있는지 확인해야 합니다. 그렇지 않으면 OpenVZ 커널로 시스템이 부팅되지 않을 수 있습니다. 다음 명령을 실행합니다…

blkid

… 장치/파티션의 UUID를 찾습니다:

root@server1:/tmp# blkid  
/dev/mapper/server1-swap_1: UUID="c465cb44-1bf9-4fbe-bb31-17139fd43004" TYPE="swap"  
/dev/sda5: UUID="WRK6Xm-fg52-T836-sp4k-6uxm-trHH-FiRdBx" TYPE="LVM2_member"  
/dev/sda1: UUID="46d1bd79-d761-4b23-80b8-ad20cb18e049" TYPE="ext2"  
/dev/mapper/server1-root: UUID="d5ac6d76-0b69-46da-b0c1-a4376f2f0e4e" TYPE="ext4"  
root@server1:/tmp#

/etc/fstab을 엽니다:

vi /etc/fstab

제 원래 /etc/fstab은 다음과 같습니다(보시다시피 /boot 파티션의 UUID는 이미 사용되고 있지만 / 및 swap의 경우 장치 이름이 사용되고 있습니다):

| # /etc/fstab: 정적 파일 시스템 정보. # # 'blkid'를 사용하여 장치의 고유 식별자를 인쇄합니다; # 이는 UUID=와 함께 사용하여 장치를 명명하는 보다 강력한 방법이 될 수 있습니다. # 이는 디스크가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오. # # <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스> /dev/mapper/server1-root / ext4 errors=remount-ro 0 1 # /boot는 설치 중 /dev/sda1에 있었습니다 UUID=46d1bd79-d761-4b23-80b8-ad20cb18e049 /boot ext2 defaults 0 2 /dev/mapper/server1-swap_1 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 |

모든 파티션에 대해 UUID가 사용되도록 수정합니다:

| # /etc/fstab: 정적 파일 시스템 정보. # # 'blkid'를 사용하여 장치의 고유 식별자를 인쇄합니다; # 이는 UUID=와 함께 사용하여 장치를 명명하는 보다 강력한 방법이 될 수 있습니다. # 이는 디스크가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오. # # <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스> #/dev/mapper/server1-root / ext4 errors=remount-ro 0 1 UUID=d5ac6d76-0b69-46da-b0c1-a4376f2f0e4e / ext4 errors=remount-ro 0 1 # /boot는 설치 중 /dev/sda1에 있었습니다 UUID=46d1bd79-d761-4b23-80b8-ad20cb18e049 /boot ext2 defaults 0 2 #/dev/mapper/server1-swap_1 none swap sw 0 0 UUID=c465cb44-1bf9-4fbe-bb31-17139fd43004 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 |

OpenVZ가 부팅 시 자동으로 시작되도록 설정합니다:

update-rc.d vz defaults  
update-rc.d vzeventd defaults

다음으로 몇 개의 라이브러리를 링크해야 합니다:

ln -s /usr/lib64/libvzctl-4.3.1.so /usr/lib  
ln -s /usr/lib64/libploop.so /usr/lib

ploop 컨테이너를 사용하려면 다음을 수행합니다:

apt-get install parted

또한 /etc/init.d/vz를 엽니다…

vi /etc/init.d/vz

… 그리고 mkdir $VARLOCK/ploop 줄을 추가하여 /var/lock/ploop 디렉토리가 재부팅 후 다시 생성되도록 합니다:

| #!/bin/sh # 저작권 (C) 2000-2009, Parallels, Inc. 모든 권리 보유. # # 이 프로그램은 자유 소프트웨어입니다; GNU 일반 공중 라이센스의 조건에 따라 재배포하거나 수정할 수 있습니다. # 이 라이센스는 자유 소프트웨어 재단에서 발표한 버전 2 또는 (귀하의 선택에 따라) 이후 버전입니다. # # 이 프로그램은 유용할 것이라는 희망으로 배포되지만, # 어떠한 보증도 없이 배포됩니다; 상품성 또는 특정 목적에 대한 적합성에 대한 묵시적 보증조차 없습니다. GNU 일반 공중 라이센스의 세부정보를 참조하십시오. # # 이 프로그램과 함께 GNU 일반 공중 라이센스를 수령했어야 하며; 그렇지 않은 경우, 자유 소프트웨어 재단에 문의하십시오. # 미국 보스턴, MA 02111-1307, 59 Temple Place, Suite 330 # # OpenVZ 시작 스크립트, 레드햇 및 데비안 관련 배포판에 사용됩니다. ### # chkconfig: 2345 96 20 # 설명: OpenVZ 시작 스크립트. ### ### INIT 정보 시작 # 제공: vz # 필요 시작: $network $remote_fs $syslog # 필요 중지: $network $remote_fs $syslog # 시작해야 함: sshd vzeventd # 중지해야 함: sshd vzeventd # 기본 시작: 2 3 4 5 # 기본 중지: 0 1 6 # 간단한 설명: OpenVZ 시작 스크립트 # 설명: OpenVZ 시작 스크립트. ### INIT 정보 종료 # 이 줄은 /etc/init.d/rc에서 작업 단어를 기대하는 데 필요합니다. . /usr/libexec/vzctl/scripts/initd-functions mkdir $VARLOCK/ploop [...] |

/vz에서 /var/lib/vz로의 심볼릭 링크를 생성하여 이전 호환성을 제공합니다:

ln -s /vz /var/lib/vz

/etc/sysctl.conf를 열고 다음 설정이 포함되어 있는지 확인합니다:

vi /etc/sysctl.conf

| [...] net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 [...] |

/etc/sysctl.conf를 수정해야 하는 경우, 다음을 실행합니다:

sysctl -p 

다음 단계는 가상 머신의 IP 주소가 호스트 시스템의 IP 주소와 다른 서브넷에 있는 경우 중요합니다. 이를 수행하지 않으면 가상 머신에서 네트워킹이 작동하지 않습니다!

/etc/vz/vz.conf를 열고 NEIGHBOUR_DEVS를 all로 설정합니다:

vi /etc/vz/vz.conf

| [...] # ARP 요청을 보낼 인터페이스와 APR 테이블을 수정할 인터페이스를 제어합니다. NEIGHBOUR_DEVS=all [...] |

vzdump를 설치합니다:

apt-get install vzdump

마지막으로 시스템을 재부팅합니다:

reboot

시스템이 문제 없이 재부팅되면 모든 것이 잘 된 것입니다!

다음 명령을 실행합니다:

uname -r

그리고 새로운 OpenVZ 커널이 표시되어야 합니다:

root@server1:~# uname -r  
2.6.32-042stab076.8  
root@server1:~#
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.