서버 관리 · 5 min read · Nov 25, 2025
Ubuntu 13.04 (AMD64)에서 OpenVZ 설치 및 사용
Ubuntu 13.04 (AMD64)에서 OpenVZ 설치 및 사용
버전 1.0
저자: Falko Timme
Twitter에서 나를 팔로우하세요
이 HowTo에서는 OpenVZ를 위해 Ubuntu 13.04 서버를 준비하는 방법을 설명합니다. OpenVZ를 사용하면 Xen 및 Linux Vserver 프로젝트와 유사하게 동일한 하드웨어에서 여러 개의 가상 사설 서버(VPS)를 생성할 수 있습니다. OpenVZ는 많은 공급자가 제공하는 가상 서버를 위한 상업적 가상화 솔루션인 Virtuozzo의 오픈 소스 분기입니다. OpenVZ 커널 패치는 GPL 라이센스 하에 라이센스가 부여되며, 사용자 수준 도구는 QPL 라이센스 하에 있습니다.
이 문서는 실용적인 가이드를 목적으로 하며 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이는 이러한 시스템을 설정하는 유일한 방법이 아님을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 귀하에게 작동할 것이라는 보증을 제공하지 않습니다!
1 사전 참고
저는 여기서 x86_64 (amd64) 시스템을 사용하고 있습니다. i386 시스템을 사용하는 경우 몇 가지 명령이 약간 다를 수 있습니다.
2 OpenVZ 설치
Ubuntu 13.04의 경우 공식 리포지토리에 OpenVZ 커널이 없습니다. 따라서 OpenVZ 프로젝트의 공식 RPM 패키지에서 OpenVZ를 설치해야 합니다 (Debian 6.0에서 RPM으로 커널 설치 참조) - ploop 지원 포함
2.1 OpenVZ 프로젝트의 공식 RPM 패키지에서 설치
최신 vzkernel, vzctl, ploop 및 vzquota RPM 패키지를 http://wiki.openvz.org/Download/kernel/rhel6 및 http://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*.rpmDEB 패키지를 다음과 같이 설치합니다:
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을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
경고: /tmp/mkinitramfs_I0VIfE/lib/modules/2.6.32-042stab076.8/modules.builtin을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
grub.cfg 생성 중...
리눅스 이미지 발견: /boot/vmlinuz-3.8.0-19-generic
initrd 이미지 발견: /boot/initrd.img-3.8.0-19-generic
리눅스 이미지 발견: /boot/vmlinuz-2.6.32-042stab076.8
initrd 이미지 발견: /boot/initrd.img-2.6.32-042stab076.8
memtest86+ 이미지 발견: /memtest86+.bin
완료이는 시스템에 다른 커널(3.8.0)이 있으며 OpenVZ 커널(2.6.32)이 목록에서 첫 번째가 아님을 의미합니다. 따라서 OpenVZ 커널을 기본 커널로 만들기 위해 두 가지 옵션이 있습니다 - GRUB에서 기본 커널을 조정하는 것(권장) 또는 비-VZ 커널을 제거하는 것입니다.
GRUB에서 기본 커널을 조정하려면 /etc/default/grub을 엽니다…
vi /etc/default/grub… 그리고 GRUB_DEFAULT 줄을 수정합니다(카운팅은 0부터 시작합니다; 우리의 OpenVZ는 Ubuntu GRUB 하위 메뉴의 고급 옵션에서 세 번째 커널입니다(부팅 메뉴에서 3.8.0 커널 다음의 두 번째 옵션), 따라서 여기에서 “1>2”를 입력해야 합니다(따옴표 안에) - GRUB 하위 메뉴에 대한 자세한 내용은 여기에서 확인할 수 있습니다: https://help.ubuntu.com/community/Grub2/Submenus):
| [...] GRUB_DEFAULT="1>2" [...] |
그 후 GRUB을 업데이트합니다:
update-grub기본 커널을 제거하려면…
apt-get remove linux-image linux-image-3.8.0-19-generic… 그리고 GRUB을 업데이트합니다:
update-grub이제 올바른 커널이 부팅되도록 확인했으므로 계속 진행할 수 있습니다.
다음으로 /etc/fstab에서 장치 이름 대신 UUID를 사용하고 있는지 확인해야 합니다. 그렇지 않으면 OpenVZ 커널로 시스템이 부팅되지 않을 수 있습니다. 다음을 실행합니다…
blkid… 장치/파티션의 UUID를 찾습니다:
root@server1:/tmp# blkid
/dev/sda1: UUID="9b8299f1-b2a2-4231-9ba1-4540fad76b0f" TYPE="ext2"
/dev/sda5: UUID="M83xtW-GofR-FFaa-myo1-T4Gw-grKe-Kg1Etc" TYPE="LVM2_member"
/dev/mapper/server1--vg-root: UUID="a5a6e916-64e1-4af9-8bd4-32491d7edcac" TYPE="ext4"
/dev/mapper/server1--vg-swap_1: UUID="a68ae8a2-c2cd-4e92-af08-a71661f8f719" TYPE="swap"
root@server1:/tmp#/etc/fstab을 엽니다:
vi /etc/fstab내 원래 /etc/fstab은 다음과 같습니다(보시다시피, /boot 파티션의 UUID는 이미 사용되고 있지만, / 및 swap의 경우 장치 이름이 사용되고 있습니다):
| # /etc/fstab: 정적 파일 시스템 정보. # # 'blkid'를 사용하여 장치의 보편적으로 고유한 식별자를 인쇄합니다; 이는 UUID=와 함께 사용하여 장치 이름을 지정하는 더 강력한 방법으로 사용할 수 있습니다. # 이는 디스크가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오. # # <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스> /dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 # /boot는 설치 중 /dev/sda1에 있었습니다 UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 /dev/mapper/server1--vg-swap_1 none swap sw |
모든 파티션에 대해 UUID가 사용되도록 수정합니다:
| # /etc/fstab: 정적 파일 시스템 정보. # # 'blkid'를 사용하여 장치의 보편적으로 고유한 식별자를 인쇄합니다; 이는 UUID=와 함께 사용하여 장치 이름을 지정하는 더 강력한 방법으로 사용할 수 있습니다. # 이는 디스크가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오. # # <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스> #/dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 UUID=a5a6e916-64e1-4af9-8bd4-32491d7edcac / ext4 errors=remount-ro 0 1 # /boot는 설치 중 /dev/sda1에 있었습니다 UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 #/dev/mapper/server1--vg-swap_1 none swap sw 0 0 UUID=a68ae8a2-c2cd-4e92-af08-a71661f8f719 none swap sw 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/libploop 컨테이너를 사용하려면 다음을 수행합니다:
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 일반 공중 라이센스를 받았어야 하며, 그렇지 않으면 자유 소프트웨어 재단에 문의하십시오. # 미국 보스턴, 매사추세츠 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:~#새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.