Linux 컨테이너와 Linux 하이퍼바이저란 무엇입니까?

Linux 컨테이너와 Linux 하이퍼바이저란 무엇입니까?

stackexchange 웹 사이트를 확인했지만 아무것도 찾을 수 없습니다. Linux 컨테이너에 대한 Wikipedia 항목을 살펴보았습니다.https://en.wikipedia.org/wiki/LXC및 하이퍼바이저https://en.wikipedia.org/wiki/Hypervisor그러나 두 가지 모두에 대한 설명은 어느 쪽도 일해 본 적이 없는 사람들의 이해를 넘어서는 것입니다. 나도 봤어http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun그러나 그것도 설명하지 않습니다.

나는 virtualbox와 같은 가상 머신을 가지고 놀았습니다. 나의 제한된 이해에 따르면, 첫 번째 아이디어 중 하나는 가상 머신이 샌드박스 환경에서 소프트웨어를 테스트하는 데 유용할 수 있다는 것입니다(머신을 구입하거나 감당할 수 없고 개발 중인 소프트웨어를 여전히 이해할 수 없을 때 Solaris 상자를 사용하는 것). 대상 하드웨어가 작동하고 있기 때문입니다. ) 사용이 제한되어 있습니다. 이는 클라우드 컴퓨팅 분야에서 도약하는 방법 중 하나일 수도 있습니다. 질문이 광범위하므로 이를 정리하는 방법은 다음과 같습니다.

하이퍼바이저와 *nix 컨테이너가 무엇인지 설명할 수 있는 사람이 있습니까(가능한 경우 비유하여)?
*nix 하이퍼바이저는 가상 머신과 동일합니까, 아니면 다른가요?

답변1

가상 기기(VM)은 많은 가상화 기술을 가리키는 일반적인 용어입니다.

가상화 기술에는 다양한 변형이 있지만 주요 기술은 다음과 같습니다.

  • 하드웨어 수준 가상화
  • 운영 체제 수준 가상화

qemu-kvmVMWare첫 번째 예입니다 . 이들은 하이퍼바이저를 사용하여 전체 운영 체제를 실행하는 가상 환경을 관리합니다. 예를 들어, 한 qemu-kvm시스템에는 FreeBSD를 실행하는 가상 머신 하나, Windows를 실행하는 또 다른 가상 머신, Linux를 실행하는 또 다른 가상 머신이 있을 수 있습니다.

게스트에게는 이러한 기술로 생성된 가상 머신이 분리된 별도의 컴퓨터로 나타납니다. 고객이 정품이라고 생각하는 가상 CPU, RAM, NIC, 그래픽 카드 등이 있습니다. 따라서 다양한 운영 체제를 가상 머신에 설치할 수 있으며 수정 없이 "즉시" 작동합니다.

많은 운영 체제를 큰 노력 없이 설치할 수 있기 때문에 이는 매우 편리하지만 하이퍼바이저가 모든 하드웨어를 에뮬레이트해야 하므로 속도가 느려질 수 있다는 단점이 있습니다. 또 다른 옵션은 반가상화 하드웨어로, 고객을 위해 새로운 가상 장치와 드라이버가 개발되고 가상 환경에서 성능을 향상시키도록 설계됩니다. 이 목적을 위해 qemu-kvm다양한 장치와 드라이버가 제공됩니다 . virtio한 가지 단점은 게스트 운영 체제가 지원되어야 하지만 지원된다면 성능상의 이점이 크다는 것입니다.


lxc운영 체제 수준 가상화 또는 컨테이너의 예입니다. 이 시스템에서는 하나의 커널(호스트 커널)만 설치됩니다. 각 컨테이너는 사용자 모드 프로세스를 분리한 것일 뿐입니다. 예를 들어 웹 서버(예: apache)가 컨테이너에 설치되어 있습니다. 이 웹 서버에 관한 한 설치된 유일한 서버는 서버 자체입니다. 다른 컨테이너가 FTP 서버를 실행 중일 수 있습니다. FTP 서버는 웹 서버의 설치에 대해 알지 못하고 자신의 설치에 대해서만 알고 있습니다. 다른 컨테이너에는 Linux 배포판의 전체 사용자 공간 설치가 포함될 수 있습니다(배포판이 호스트 시스템의 커널과 함께 실행될 수 있는 경우).

그러나 컨테이너를 사용할 때 별도의 운영 체제 설치는 없으며 사용자 수준 서비스의 격리된 인스턴스만 있습니다. 따라서 컨테이너에 다양한 플랫폼을 설치할 수 없습니다. Linux에는 Windows를 설치할 수 없습니다.

컨테이너는 일반적으로 프로세스에서 사용할 chroot별도의 개인 루트( )를 생성하는 데 사용됩니다 . /별도의 개인 루트를 많이 생성하면 프로세스(웹 서버 또는 Linux 배포판 등)가 자체 격리된 파일 시스템에서 실행됩니다. 예를 들어, 고급 기술을 사용하면 cgroups네트워크와 RAM 등의 기타 리소스를 격리할 수 있습니다.


둘 다 장단점이 있으며, 어느 것이 가장 좋은지에 대한 오랜 논쟁이 있습니다.

  • 하이퍼바이저의 경우 각 컨테이너에 전체 운영 체제를 설치할 필요가 없으므로 컨테이너가 더 가볍습니다. 따라서 더 낮은 사양의 하드웨어에서도 실행될 수 있습니다. 그러나 Linux 게스트(Linux 호스트)만 실행할 수 있습니다. 또한 커널을 공유하므로 손상된 컨테이너가 다른 컨테이너에 영향을 미칠 수 있습니다.
  • 하이퍼바이저는 각 가상 머신에 완전한 운영 체제가 설치되어 있고 게스트가 다른 가상 머신을 인식하지 못하기 때문에 더 안전하고 다양한 운영 체제를 실행할 수 있습니다. 그러나 이는 호스트에서 더 많은 리소스를 차지하므로 호스트가 상대적으로 강력해야 합니다.

답변2

컨테이너는 약간 비슷합니다.chroot 환경그러나 보다 완전한 사용자 공간 격리를 달성합니다. 실제 VM이 아닌 가상 운영 체제를 제공합니다. 가상 머신은 베어메탈에서와 마찬가지로 실행되는 실제적이고 완전한 운영 체제를 갖춘 여러 머신의 환상을 만듭니다. 여기서 "완전한 운영 체제"에는 커널이 포함됩니다. 일부 가상 머신(예:QEMU)는 다양한 유형의 "베어메탈" 아키텍처를 자극할 수도 있습니다.

대신 컨테이너는 각각 완전한 사용자 공간을 실행하는 여러 코어의 환상을 만듭니다. 예를 들어 한 컨테이너에서는 Debian을 실행하고 다른 컨테이너에서는 Arch를 실행할 수 있으므로 컨테이너 내부의 관점은 가상 머신과 매우 유사합니다. 그러나 하나의 실제 커널(이 경우 Linux)과 호환되는 운영 체제의 사용자 영역만 실행할 수 있습니다. 이는 독립적인 커널과 모든 종류의 운영 체제를 실행할 수 있는 실제 가상 머신과 다릅니다.

따라서 실제 VM은 리소스 측면에서 컨테이너보다 비용이 더 많이 듭니다. 각 VM에 다른 코어가 필요하지 않으면 컨테이너를 사용할 수도 있습니다.

다음과 같이 LXE와 유사한 작업을 수행하는 다른 가상화 시스템이 있습니다.오픈VZ, VPS 공급업체에서 널리 사용됩니다. openVZ VPS는 호스트 운영 체제의 커널을 사용하는 독립적인 사용자 공간입니다. 이것이 바로 이러한 VPS가 Linux의 다양한 형태로 제공되는 이유입니다. 그러나 이것이 바로 호스트 커널과 호환되어야 한다는 것입니다.

OpenVZ 및 LXC 스타일 가상화를 호출합니다.운영 체제 수준 가상화.

관리 프로그램등의 가상 머신을 관리하는 시스템입니다.가상 상자, QEMU 또는. Xen과 같은 일부 하이퍼바이저는 베어 메탈에서 실행되며 호스트 운영 체제가 필요하지 않습니다(단, 제어 인터페이스로 관리되는 운영 체제가 필요할 수 있음). VirtualBox 및 QEMU와 같은 다른 것들은 호스트 운영 체제 내에서 실행됩니다. QEMU와 같은 일부는 다양한 시스템 아키텍처를 에뮬레이션하는 것을 허용하지만 VirtualBox와 같은 다른 것들은 그렇지 않습니다(즉, VM 아키텍처는 항상 실제 호스트와 동일합니다). 실제 가상 머신이 컨테이너보다 더 많은 리소스를 필요로 하는 것처럼 시뮬레이션된 아키텍처에는 더 많은 리소스가 필요합니다.

하이퍼바이저 스타일 가상화를 호출합니다.플랫폼 수준 가상화.

관련 정보