맨위로가기

OpenVZ

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

OpenVZ는 리눅스 커널을 수정하여 가상화 환경을 제공하는 기술이다. 가상화, 격리, 자원 관리, 체크포인트 기능을 제공하며, 하이퍼바이저 방식의 가상화 기술보다 오버헤드가 적고 더 많은 환경을 가동할 수 있어 VPS(가상 사설 서버)에 활용된다. OpenVZ는 컨테이너 내에서 자체 리소스를 가지고 격리된 환경을 제공하며, 2단계 디스크 할당 제한, CPU 스케줄러, I/O 스케줄러, 사용자 빈 카운터 등의 자원 관리 기능을 제공한다. 또한, 체크포인트 및 실시간 마이그레이션 기능을 통해 컨테이너를 중단 없이 다른 서버로 이동할 수 있다. OpenVZ는 단일 Linux 커널을 사용하므로 Linux 환경에서만 사용 가능하며, 하드웨어 접근에 제한이 있고, 일부 VPN 기술만 지원하는 등의 한계가 있다.

더 읽어볼만한 페이지

  • 자유 가상화 소프트웨어 - LXC
    LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다.
  • 자유 가상화 소프트웨어 - 커널 기반 가상 머신
    커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다.
  • 시스템 소프트웨어 - 유틸리티 소프트웨어
    유틸리티 소프트웨어는 컴퓨터의 운영 체제, 하드웨어, 응용 소프트웨어를 관리하고 성능을 향상시키거나 특정 작업을 수행하는 프로그램으로, 시스템 관리, 파일 관리, 데이터 복구, 보안 등의 기능을 제공하며 백업 소프트웨어, 바이러스 백신 등이 대표적이다.
  • 시스템 소프트웨어 - 가상 사설 서버
    가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
  • 자유 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
  • 자유 소프트웨어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
OpenVZ - [IT 관련 정보]에 관한 문서
개요
이름OpenVZ
종류운영 체제 수준 가상화
개발
개발자Virtuozzo 및 OpenVZ 커뮤니티
지원 기업페러럴스
출시
첫 출시일2005년
최신 안정 버전 출시일2016년 7월 25일
최신 버전7.0
기술 정보
프로그래밍 언어C
운영 체제리눅스
플랫폼x86, x86-64
라이선스
라이선스GNU GPL v.2
웹사이트
웹사이트OpenVZ 공식 웹사이트
기타
상태중단됨

2. 역사

(이전 출력이 없으므로, 수정할 내용이 없습니다. 원본 소스가 제공되면 해당 소스를 기반으로 '역사' 섹션을 작성할 수 있습니다.)

3. 특징

하이퍼바이저형(하드웨어 레벨) 가상화 소프트웨어인 VMware나 Xen에 비해 오버헤드가 적어, 더 많은 가상 환경을 가동시킬 수 있다. 이러한 특징 덕분에 가상 사설 서버 (VPS) 사용 비용을 절감할 수 있다.

OpenVZ는 체크포인트와 라이브 마이그레이션을 지원하여, 가동 중인 게스트 OS(컨테이너)를 다른 머신으로 옮길 수 있다. simfs를 사용하는 경우 메모리 내용 등만 저장되고 파일 시스템 내용은 저장되지 않지만, ploop을 사용하면 스냅샷을 찍어 파일 시스템 내용을 복원하거나 변경 차이만 관리할 수 있다.

RHEL 5 버전에서는 가상 메모리 단위로만 메모리 제한을 설정할 수 있었지만, RHEL 6 (Linux 커널 2.6.32)부터는 cgroups 개발이 진행되어 VSwap[10]을 사용할 수 있게 되었다. 이를 통해 물리 메모리나 스왑 메모리에도 제한을 걸 수 있다. 컨테이너 내에서 물리 메모리가 고갈되어 스왑 메모리를 사용하기 시작해도, 호스트의 물리 메모리가 남아있으면 바로 디스크에 쓰기가 시작되지 않고, 인위적으로 컨테이너 속도를 늦춰 스왑 아웃을 에뮬레이트한다. 호스트의 물리 메모리가 고갈되었을 때 비로소 디스크에 쓰기가 시작된다.

3. 1. 가상화 및 격리

OpenVZ는 가상 환경(Virtual Environments, VE) 지원을 위해 수정된 리눅스 커널을 사용한다. 이 커널은 가상화, 격리, 자원 관리, 체크포인트 등을 지원한다. 각각의 VE는 각 가상화 단위로 분리되며, 각각의 물리적 하드웨어를 가진 서버와 같이 작동한다. 각 컨테이너는 별개의 개체이며 실제 서버와 거의 동일하게 작동하며 다음과 같은 기능을 갖는다.

  • '''파일:''' 시스템 라이브러리, 응용 프로그램, 가상화된 /proc/sys, 가상화된 잠금 등을 제공한다.
  • '''사용자 및 그룹:''' 각 컨테이너는 자체 루트 사용자뿐만 아니라 다른 사용자와 그룹도 갖는다. VE마다 별도의 root 사용자를 가지고, 사용자와 그룹을 자유롭게 할당할 수 있다. 생성된 root와 사용자 계정 등은 호스트 시스템에 영향을 미치지 않는다.
  • '''프로세스 트리:''' 컨테이너는 자체 프로세스만 볼 수 있다(init부터 시작). PID는 가상화되어 init PID가 1이 된다.
  • '''네트워크:''' 가상 네트워크 장치를 통해 컨테이너는 자체 IP 주소와 함께 일련의 netfilter (iptables) 및 라우팅 규칙을 가질 수 있다.
  • '''장치:''' 필요한 경우 모든 컨테이너에 네트워크 인터페이스, 직렬 포트, 디스크 파티션 등과 같은 실제 장치에 대한 액세스 권한을 부여할 수 있다.
  • '''IPC 객체:''' 공유 메모리, 세마포어, 메시지를 제공한다.

3. 2. 자원 관리

OpenVZ의 자원 관리는 2단계 디스크 할당량, 공정 CPU 스케줄러, 디스크 I/O 스케줄러, 사용자 빈 카운터(User Beancounters)의 네 가지 구성 요소로 이루어진다.[4][5] 이러한 자원은 컨테이너 실행 중에 변경될 수 있어 부팅할 필요가 없다.

  • 2단계 디스크 할당량: 각 컨테이너는 디스크 블록과 아이노드(대략 파일 수)로 측정되는 자체 디스크 할당량을 가질 수 있다. 컨테이너 내에서 표준 도구를 사용하여 UNIX 사용자별 및 그룹별 디스크 할당량을 설정할 수 있다.

  • CPU 스케줄러: OpenVZ의 CPU 스케줄러는 공정 공유 스케줄링 전략의 2단계 구현이다. 첫 번째 단계에서 스케줄러는 컨테이너별 ''cpuunits'' 값을 기준으로 CPU 타임 슬라이스를 할당할 컨테이너를 결정한다. 두 번째 단계에서 표준 Linux 스케줄러는 표준 Linux 프로세스 우선순위를 사용하여 해당 컨테이너에서 실행할 프로세스를 결정한다. 각 컨테이너에서 CPU에 대해 서로 다른 값을 설정할 수 있다. 실제 CPU 시간은 이러한 값에 비례하여 분배된다. 또한 OpenVZ는 총 CPU 시간의 10%(`--cpulimit`), 컨테이너에서 사용할 수 있는 CPU 코어 수 제한(`--cpus`) 및 특정 CPU 집합에 컨테이너를 바인딩(`--cpumask`)과 같은 엄격한 CPU 제한을 설정하는 방법을 제공한다.[4]

  • I/O 스케줄러: OpenVZ의 I/O 스케줄링 또한 2단계로, 두 번째 단계에서 옌스 악스보의 CFQ I/O 스케줄러를 활용한다. 각 컨테이너에는 I/O 우선순위가 할당되며 스케줄러는 할당된 우선순위에 따라 사용 가능한 I/O 대역폭을 분배한다. 따라서 단일 컨테이너가 I/O 채널을 포화시킬 수 없다.

  • 사용자 빈 카운터: 사용자 빈 카운터는 단일 컨테이너가 시스템 자원을 독점하는 것을 방지하기 위한 컨테이너별 카운터, 제한 및 보장 집합이다. 각 자원은 `/proc/user_beancounters`에서 볼 수 있으며 현재 사용량, 최대 사용량(컨테이너 수명 동안), 장벽, 제한 및 실패 카운터와 관련된 다섯 가지 값을 갖는다. 자원 중 하나라도 제한에 도달하면 해당 자원의 실패 카운터가 증가한다. 주요 파라미터는 다음과 같다.[5]


파라미터설명
numproc프로세스 수
numtcpsockTCP 소켓 수
numothersockTCP 이외의 소켓 수
vmguarpages메모리 보장 페이지 수


3. 3. 체크포인트 및 라이브 마이그레이션

실시간 마이그레이션 및 체크포인팅 기능은 2006년 4월 중순에 OpenVZ용으로 출시되었다. 이를 통해 컨테이너를 종료하지 않고 한 물리 서버에서 다른 물리 서버로 컨테이너를 이동할 수 있다. 이 프로세스는 체크포인팅이라고 알려져 있다. 컨테이너는 정지되고 전체 상태가 디스크의 파일에 저장된다. 이 파일은 다른 머신으로 전송될 수 있으며 컨테이너는 거기서 정지 해제(복원)될 수 있다. 지연 시간은 대략 몇 초이다. 상태가 일반적으로 완전히 보존되기 때문에 이 일시 중지는 일반적인 계산 지연처럼 보일 수 있다.[10]

4. 다른 가상화 기술과의 비교

VMware, Xen, KVM과 같은 가상화 기술은 전체 가상화를 제공하여 여러 운영 체제와 다른 커널 버전을 실행할 수 있지만, OpenVZ는 단일 Linux 커널을 사용하므로 Linux만 실행할 수 있다. 모든 OpenVZ 컨테이너는 동일한 아키텍처 및 커널 버전을 공유한다. 이는 게스트가 호스트와 다른 커널 버전을 필요로 하는 상황에서는 단점이 될 수 있다. 그러나 진정한 하이퍼바이저의 오버헤드가 없기 때문에 매우 빠르고 효율적이다.[1]

OpenVZ의 메모리 할당은 소프트 방식으로 이루어지며, 한 가상 환경에서 사용되지 않은 메모리는 다른 환경이나 디스크 캐싱에 사용될 수 있다. 이전 버전의 OpenVZ는 공통 파일 시스템을 사용했지만, 현재 버전의 OpenVZ는 각 컨테이너가 자체 파일 시스템을 가질 수 있도록 허용한다.[2]

하이퍼바이저형(하드웨어 레벨) 가상화 소프트웨어인 VMware나 Xen에 비해 오버헤드가 적다고 여겨지며, 가동시킬 수 있는 환경의 수가 더 많다. 더 고밀도화할 수 있기 때문에 가상 사설 서버(VPS) 사용에 있어서 비용 절감을 꾀할 수 있다.

체크포인트와 라이브 마이그레이션에도 대응하고 있다. 게스트 OS(컨테이너)가 가동 중인 채로 다른 머신으로 옮길 수 있다. simfs를 이용하는 경우, 메모리 내용 등만 저장되고, 파일 시스템 내용은 저장되지 않지만, 파일 시스템에 ploop을 사용한 경우에는 스냅샷을 찍을 수 있으며, 그 경우 파일 시스템 내용을 복원하거나 변경 차이만 관리할 수 있다.

RHEL 5 버전에서는 가상 메모리 단위로만 메모리 제한을 걸 수 있었지만, RHEL 6에서 Linux 커널 2.6.32가 되면서 cgroups 개발이 진행되어 VSwap[10]을 사용할 수 있게 되었고, 물리 메모리나 스왑 메모리에도 제한을 걸 수 있게 되었다. 컨테이너 내에서 물리 메모리가 고갈되어 스왑 메모리를 사용하기 시작해도, 호스트의 물리 메모리가 남아있는 경우에는 실제로 바로 디스크에 쓰기가 시작되는 것이 아니라, 인위적으로 컨테이너의 속도를 늦춰 스왑 아웃을 에뮬레이트하고, 정말로 호스트의 물리 메모리가 고갈되었을 때 처음으로 디스크에 쓰기가 시작된다.

5. 한계

OpenVZ는 컨테이너가 하드웨어에 독립적으로 작동하도록 컨테이너의 실제 물리적 장치에 대한 접근을 기본적으로 제한한다. OpenVZ 관리자는 디스크 드라이브, USB 포트,[6] PCI 장치,[7] 또는 물리적 네트워크 카드[8]와 같은 다양한 실제 장치에 대한 컨테이너 접근을 활성화할 수 있다.

`/dev/loopN`은 배포 환경에서 종종 제한되는데, 이는 루프 장치가 커널 스레드를 사용하기 때문에 보안 문제가 될 수 있기 때문이며, 이로 인해 디스크 이미지를 마운트하는 기능이 제한된다. 해결 방법은 FUSE를 사용하는 것이다.

OpenVZ는 PPP (PPTP/L2TP 등) 및 TUN/TAP를 기반으로 하는 일부 VPN 기술만 제공하도록 제한된다. IPsec은 커널 2.6.32부터 컨테이너 내에서 지원된다.

2007년에 EasyVZ라는 그래픽 사용자 인터페이스가 시도되었지만,[9] 버전 0.1 이상으로 발전하지 못했다. 버전 3.4까지는 Proxmox VE가 GUI를 갖춘 OpenVZ 기반 서버 가상화 환경으로 사용될 수 있었지만, 이후 버전에서는 LXC로 전환되었다.

6. 라이선스

OpenVZ는 GPL 버전 2에 따라 배포된다. 이 기술을 사용한 상용 소프트웨어로는 패럴렐즈가 판매하는 패럴렐즈 버츄오조 컨테이너 for Linux가 있다.

참조

[1] 웹사이트 Performance Evaluation of Virtualization Technologies for Server Consolidation http://www.hpl.hp.co[...]
[2] 웹사이트 Ploop - OpenVZ Linux Containers Wiki http://wiki.openvz.o[...]
[3] 웹사이트 OpenVZ turns 7, gifts are available! http://openvz.livejo[...] 2013-01-17
[4] 웹사이트 vzctl(8) man page, CPU fair scheduler parameters section https://openvz.org/M[...]
[5] 웹사이트 VSwap - OpenVZ Linux Containers Wiki http://openvz.org/VS[...]
[6] 웹사이트 vzctl(8) man page, Device access management subsection http://wiki.openvz.o[...]
[7] 웹사이트 vzctl(8) man page, PCI device management section http://wiki.openvz.o[...]
[8] 웹사이트 vzctl(8) man page, Network devices section http://wiki.openvz.o[...]
[9] 웹사이트 EasyVZ: Grafische Verwaltung für OpenVZ. Frontend für freie Linux-Virtualisierung http://www.golem.de/[...]
[10] 웹사이트 VSwap - OpenVZ Linux Containers Wiki http://wiki.openvz.o[...]
[11] 웹사이트 Install kernel from RPM on Ubuntu 10.04 - OpenVZ Linux Containers Wiki http://wiki.openvz.o[...]
[12] 웹사이트 Install kernel from RPM on Debian 6.0 - OpenVZ Linux Containers Wiki http://wiki.openvz.o[...]
[13] 웹사이트 Bug#642380: Cannot chkpnt (live migrate) VEs - linux.debian.kernel https://groups.googl[...]
[14] 웹사이트 OpenVZ - Community Ubuntu Documentation https://help.ubuntu.[...]
[15] 웹사이트 Official OpenVZ web site http://openvz.org/



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com