오픈VZ

OpenVZ
오픈VZ
OpenVZ-logo.svg
OpenVZ 2.png
개발자Virtuozo 및 OpenVZ 커뮤니티
초기 릴리즈2005년, 17년 전(2005년)
저장소
기입처C
운영 체제리눅스
플랫폼x86, x86-64
이용가능기간:영어
유형OS 레벨의 가상화
면허증.GPLv2
웹 사이트openvz.org

OpenVZ(Open Virtuozzo)는 Linux용 운영체제 수준의 가상화 기술입니다.이를 통해 물리적 서버는 컨테이너, 가상 프라이빗 서버(VPS) 또는 가상 환경(VE)이라고 하는 여러 독립 운영 체제 인스턴스를 실행할 수 있습니다.OpenVZ는 Solaris ContainersLXC와 유사합니다.

OpenVZ와 다른 가상화 테크놀로지 비교

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

OpenVZ를 사용한 메모리 할당은 한 가상 환경에서 사용되지 않는 메모리를 다른 사용자가 사용하거나 디스크 캐시에 사용할 수 있기 때문에 소프트합니다.이전 버전의 OpenVZ는 공통 파일 시스템(각 가상 환경은 chroot를 사용하여 격리된 파일의 디렉토리일 뿐)을 사용했지만, 현재 버전의 OpenVZ에서는 각 컨테이너에 고유한 파일 [2]시스템을 설정할 수 있습니다.

커널

OpenVZ 커널은 Linux 커널이며 OpenVZ 컨테이너 지원을 추가하기 위해 수정되었습니다.수정된 커널은 가상화, 분리, 리소스 관리 및 체크포인트를 제공합니다.vzctl 4.0 이후 OpenVZ는 패치되지 않은 Linux 3.x 커널에서 기능 세트를 [3]줄여서 사용할 수 있습니다.

가상화 및 격리

각 컨테이너는 개별 엔티티이며 주로 물리적 서버와 동일하게 작동합니다.각각 독자적인 것이 있습니다.

파일
시스템 라이브러리, 애플리케이션, 가상화/proc그리고./sys, 가상화 잠금 등
사용자 및 그룹
각 컨테이너에는 자체 루트 사용자와 다른 사용자 및 그룹이 있습니다.
프로세스 트리
컨테이너는 자신의 프로세스만 봅니다(시작).init) PID는 가상화되므로 init PID는 1이 됩니다.
네트워크
컨테이너에 독자적인 IP 주소, 넷필터()iptables라우팅 규칙 세트를 설정할 수 있는 가상 네트워크 디바이스.
장치들
필요에 따라 네트워크 인터페이스, 시리얼 포트, 디스크 파티션 등의 실제 디바이스에 대한 모든 컨테이너 접근을 허용할 수 있습니다.
IPC 오브젝트
공유 메모리, 세마포, 메시지

자원 관리

OpenVZ 자원 관리는 2레벨 디스크 쿼터, 균등 CPU 스케줄러, 디스크 I/O스케줄러 및 사용자 빈 카운터(아래 참조)의 4개의 컴포넌트로 구성됩니다.이러한 리소스는 컨테이너 실행 중에 변경할 수 있으므로 재부팅할 필요가 없습니다.

2레벨 디스크 쿼터

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

CPU 스케줄러

OpenVZ의 CPU 스케줄러는 공평한 공유 스케줄링 전략의 2단계 구현입니다.

첫 번째 레벨에서는 스케줄러는 컨테이너 단위의 CPU 단위 값에 따라 CPU 타임슬라이스를 제공할 컨테이너를 결정합니다.두 번째 수준에서는 표준 Linux 스케줄러가 표준 Linux 프로세스 우선순위를 사용하여 해당 컨테이너에서 실행할 프로세스를 결정합니다.

각 컨테이너의 CPU에 대해 다른 값을 설정할 수 있습니다.실제 CPU 시간은 이러한 값에 비례하여 분배됩니다.

상기 외에 OpenVZ는 다음과[4] 같은 방법을 제공합니다.

  • 총 CPU 시간의 10% 등 엄격한 CPU 제한을 설정합니다(예:--cpulimit);
  • 컨테이너에 사용할 수 있는 CPU 코어 수 제한(--cpus);
  • 컨테이너를 특정 CPU 세트에 바인드합니다(--cpumask).

I/O 스케줄러

에서 설명한 CPU 스케줄러와 마찬가지로 OpenVZ의 I/O스케줄러도 2레벨로 Jens Axboe의 CFQ I/O스케줄러를 사용합니다.

각 컨테이너에는 I/O priority가 할당되며 스케줄러는 할당된 우선순위에 따라 사용 가능한 I/O 대역폭을 분배합니다.따라서 단일 용기가 I/O 채널을 포화시킬 수 없습니다.

사용자 창구

User Beancounters는 컨테이너별 카운터, 제한 및 보증의 집합으로, 단일 컨테이너가 시스템리소스를 독점하지 않도록 하기 위한 것입니다.현재 OpenVZ 커널(RHEL6 기반 042stab*)에는 2개의 주요 파라미터(RAM과 스왑, 물리 페이지와 스왑)가 있으며 그 외의 파라미터는 [5]옵션입니다.

기타 리소스는 대부분 메모리 및 프로세스 간 통신 공유 메모리 세그먼트 및 네트워크 버퍼와 같은 다양한 커널 내 개체입니다.각 리소스는 다음 위치에서 볼 수 있습니다./proc/user_beancounters에는 현재 사용률, 최대 사용률(컨테이너의 라이프타임 동안), 장벽, 제한 및 장애 카운터의 5가지 값이 관련되어 있습니다.장벽과 한계의 의미는 파라미터에 의존하며, 간단히 말해서 소프트 한계와 하드 한계로 간주할 수 있다.제한에 도달한 리소스가 있으면 해당 리소스의 실패 카운터가 증가합니다.이를 통해 소유자는 컨테이너 내의 /proc/user_beancounters를 모니터링하여 문제를 검출할 수 있습니다.

체크포인트 및 라이브 이행

라이브 마이그레이션체크포인트 기능은 2006년 4월 중순에 OpenVZ용으로 출시되었습니다.이를 통해 컨테이너를 종료하지 않고 물리적 서버 간에 컨테이너를 이동할 수 있습니다.이 프로세스를 체크포인트라고 합니다.컨테이너가 동결되어 전체 상태가 디스크의 파일에 저장됩니다.그런 다음 이 파일을 다른 머신으로 전송하여 컨테이너를 거기서 동결 해제(복원)할 수 있습니다.지연은 대략 몇 초입니다.통상, 상태는 완전하게 보관 유지되기 때문에, 이 일시 정지는 통상적인 계산 지연으로 보일 수 있습니다.

제한 사항

기본적으로는 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로 전환되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Performance Evaluation of Virtualization Technologies for Server Consolidation". Archived from the original on 2009-01-15.
  2. ^ "Ploop - OpenVZ Linux Containers Wiki". Archived from the original on 2012-03-26.
  3. ^ Kolyshkin, Kir (6 October 2012). "OpenVZ turns 7, gifts are available!". OpenVZ Blog. Retrieved 2013-01-17.
  4. ^ vzctl(8) man 페이지, CPU Fair Scheduler Parameters 섹션, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters
  5. ^ "VSwap - OpenVZ Linux Containers Wiki". Archived from the original on 2013-02-13.
  6. ^ vzctl(8) man 페이지의 Device Access Management 서브섹션, http://wiki.openvz.org/Man/vzctl.8#Device_access_management
  7. ^ vzctl(8) man 페이지, PCI 디바이스 관리 섹션, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
  8. ^ vzctl(8) man 페이지, Network devices 섹션, http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
  9. ^ EasyVZ: Grafische Verwaltung für OpenVZ.프런트 엔드 für freie Linux - Virtualisierung

외부 링크