가상 머신 (VM)는 많은 가상화 기술에 대한 매우 일반적인 용어입니다.
가상화 기술에는 많은 변형이 있지만 주요 기술은 다음과 같습니다.
qemu-kvm
그리고 VMWare
첫 번째의 예입니다. 하이퍼 바이저를 사용하여 전체 운영 체제가 실행되는 가상 환경을 관리합니다. 예를 들어, qemu-kvm
시스템에서 하나의 VM이 FreeBSD를 실행하고 다른 하나는 Windows를 실행하고 다른 하나는 Linux를 실행할 수 있습니다.
이러한 기술로 생성 된 가상 머신은 게스트에 대한 격리 된 개별 컴퓨터처럼 작동합니다. 여기에는 게스트가 실제 기사라고 생각하는 가상 CPU, RAM, NIC, 그래픽 등이 있습니다. 이로 인해 많은 다른 운영 체제를 VM에 설치할 수 있으며 수정없이 "즉시"작동합니다.
많은 OS가 많은 노력없이 설치 될 수 있다는 점에서 매우 편리하지만 하이퍼 바이저는 모든 하드웨어를 시뮬레이션해야하므로 속도가 느려질 수 있습니다. 대안은 반 가상화 하드웨어이며, 가상 환경에서의 성능을 위해 설계된 게스트 용으로 새로운 가상 장치 및 드라이버가 개발됩니다. qemu-kvm
이를 위해 virtio
다양한 장치 및 드라이버를 제공하십시오. 이에 대한 단점은 게스트 OS가 지원되어야한다는 것입니다. 그러나 지원되는 경우 성능 이점이 뛰어납니다.
lxc
운영 체제 레벨 가상화 또는 컨테이너의 예입니다. 이 시스템에는 하나의 커널 (호스트 커널) 만 설치됩니다. 각 컨테이너는 단순히 사용자 영역 프로세스의 격리입니다. 예를 들어 웹 서버 (예 apache
:)가 컨테이너에 설치되어 있습니다. 해당 웹 서버와 관련하여 설치된 유일한 서버 자체입니다. 다른 컨테이너가 FTP 서버를 실행 중일 수 있습니다. 해당 FTP 서버는 웹 서버 설치를 인식하지 못하며 자체 서버 만 설치합니다. 다른 컨테이너에는 Linux 배포판의 전체 사용자 영역 설치가 포함될 수 있습니다 (해당 배포판이 호스트 시스템의 커널에서 실행될 수있는 한).
그러나 컨테이너를 사용할 때는 별도의 운영 체제 설치가 없으며 격리 된 Userland 서비스 인스턴스 만 있습니다. 이 때문에 Linux에는 Windows가 아닌 컨테이너에 다른 플랫폼을 설치할 수 없습니다.
컨테이너는 일반적으로을 사용하여 chroot
만듭니다. /
프로세스가 작동 할 별도의 개인 루트 ( )를 만듭니다 . 많은 개별 개인 루트를 생성함으로써 프로세스 (웹 서버 또는 Linux 배포판 등)는 자체 격리 된 파일 시스템에서 실행됩니다. cgroups
네트워크 및 RAM과 같은 다른 리소스를 격리 할 수있는 고급 기술
어느 것이 가장 좋은지에 관한 장거리 논쟁과 장단점이 있습니다.
- 컨테이너는 전체 OS가 설치되지 않기 때문에 더 가볍습니다. 하이퍼 바이저의 경우입니다. 따라서 낮은 사양의 하드웨어에서 실행될 수 있습니다. 그러나 Linux 게스트 (Linux 호스트) 만 실행할 수 있습니다. 또한 커널을 공유하기 때문에 손상된 컨테이너가 다른 컨테이너에 영향을 줄 수 있습니다.
- 각 VM에 전체 OS가 설치되어 있고 게스트가 다른 VM을 인식하지 못하므로 하이퍼 바이저가 더 안전하고 다른 OS를 실행할 수 있습니다. 그러나 이는 호스트에서 더 많은 리소스를 사용하므로 상대적으로 강력해야합니다.