LXC 란 무엇이고 무엇이 유용한 지 일반 영어로 설명하십시오.


9
  • LXC 란 무엇입니까?
  • 유용한 것은 무엇입니까?
  • LXC와 공통 가상화의 차이점은 무엇입니까?

8
지금까지 무엇을 알아 냈습니까?
andol

답변:


24

"Plain English"가 기술이없는 사람들을 의미한다면 그 차이점을 쉽게 설명 할 수 없습니다. 그 머리카락은 너무 신중하게 고려하지 않고 쪼개기가 너무 좋습니다.

"Plain English"라는 말이 기술인과 대화하고 기술적 인 주제를 최소한 이해하고있는 관리 유형을 의미하는 경우 다음과 같은 동사를 제출합니다.


다른 형태의 가상화입니다.

VMWare ESXi를 보면 전체 가상화라고하는 것을 실행하는 전체 하이퍼 바이저입니다. 하드웨어 위에서 실행되는 가상화 된 시스템 사이에는 매우 작은 계층이 있습니다. 가상 머신에서 실행되는 OS가 하이퍼 바이저 자체와 완전히 독립적이며 예상되는 모든 하드웨어가 제공되는 완전한 하드웨어 가상화가 있습니다.

한 단계 더 나아가 VMWare Player, Workstation, ESX (ESXi 아님) 또는 VMWare Server와 같은 것을 살펴보면 하이퍼 바이저 역할을 제공하는 전체 운영 체제가 있습니다. 그러나 가상 시스템에는 여전히 전체 가상 하드웨어 배열이 제공됩니다.

또 다른 접근법은 반 가상화 (para-virtualization)입니다. 이러한 가상화 형태에서 게스트 운영 체제는 가상화되어 있으며 해당 환경에서 작동하도록 수정되었습니다. 때때로이 모든 요구는 특별한 반 가상화 드라이버입니다. 다른 경우에는 커널 변경이 필요합니다.

LXC (Linux Containers)는 또 다른 단계입니다. 이 경우 정확히 동일한 운영 체제 의 여러 인스턴스를 실행 합니다 . 커널은 동일 할 수 있지만 각 OS 컨테이너마다 여러 사용자 공간이 실행되고 있습니다. 각 컨테이너는 다른 파일 시스템을 갖거나 갖지 않을 수 있습니다.

컨테이너는 동일한 사용자 공간을 가진 시스템에서는 사용할 수없는 방식으로 프로세스간에 강력한 보안 분리를 제공하는 방법을 제공합니다. 유닉스 계열 운영 체제는 꽤 오랫동안 'chroot jail'을 가졌지 만 프로세스 분리 나 감옥의 프로세스가 소비하는 자원을 제한하는 기능을 제공하지는 않습니다. 이러한 프로세스를 컨테이너화함으로써 리소스 사용을 제한하고 개별 IP 주소를 할당 할 수 있으며 사용자 공간을 이용하는 보안 취약점이 나머지 시스템에 포함됩니다.

LXC를 다른 유형의 가상화와 비교하여 어디에서 사용 하시겠습니까? LXC 물리적 인 하드웨어와 통신 할 것으로 예상되는 많은 OS 이미지에 하드웨어 인 것처럼 보이는 하이퍼 바이저보다는 모든 사용자 공간 호출을 중재하는 동일한 커널이기 때문에 다른 가상화 방법보다 적은 가상화 처벌을 제공 해야 합니다. 따라서 동일한 OS 버전이 필요한 처리가 많고 업데이트를 위해 동시에 재부팅 할 수있는 경우 LXC는 리소스 관리를 통해 모든 것을 안전하게 실행할 수있는 저렴한 방법을 제공 할 수 있습니다.


훨씬 더 설득력이 있습니다.
Nicholi

글쎄, 당신이 VMWare ESX를 잘못 특성화하고 있다고 확신한다는 것을 제외하고. 베어 메탈에서 실행되는 완전한 하이퍼 바이저입니다. 그것은 단지 리눅스 콘솔을 제시합니다. Wikipedia : "현재 ESX 버전 4.1부터 Linux 커널이 먼저 시작되고 [6] VMware의 vmkernel 구성 요소를 포함한 다양한 특수 가상화 구성 요소를로드하는 데 사용됩니다. 이전에 부팅 된이 Linux 커널은 첫 번째 실행 가상이됩니다 서비스 콘솔이라고합니다. " Novell Netware와 같이-부트 로더로 DOS를 사용하여 부팅 한 다음 NW 커널은 실행을위한 베어 메탈입니다.
mfinni

@mfinni "일반 영어"를 요구하는 사람들과 대화 할 때, 그와 같은 구별은 덜 중요합니다. ESX / ESXi와 Player는 여전히 완전 가상화이며, 차이점은 하이퍼 바이저가 앉아있는 금속에 얼마나 가까운 지에 있습니다.
sysadmin1138

5

LXC는 커널에서 시스템 / 프로세스를 분리하는 수단입니다. 시스템은 "컨테이너"에 잠겨있어 해당 컨테이너 외부의 어떤 것과도 상호 작용할 수 없습니다. 따라서 이름은 Linux Containers입니다.

많은 것들에 유용 할 수 있는데, 그 중 하나는 머신에서 실행되는 서비스를 격리시키는 것입니다. 이러한 서비스 중 하나가 손상되면 호스트 시스템 자체 (자체 LXC에서 실행되는 다른 서비스와 함께)에는 영향을 미치지 않습니다. 심지어 서로의 상호 작용에 대한 걱정없이 각 사용자에게 자신의 시스템에 대한 루트 액세스 권한을 부여하는 바보 같은 수단으로 사용될 수도 있습니다.

대부분의 다른 "공통"가상화는 하드웨어 장치를 에뮬레이션해야하기 때문에 리소스 사용에 많은 오버 헤드가 발생합니다. LXC는 하드웨어 장치에 대해 어떤 종류의 에뮬레이션도 필요하지 않습니다. 각 LXC에는 하드웨어에 대한 액세스가 제한적이거나 제한되어 있지 않기 때문입니다. 각 시스템은 호스트에서 "실행 중"이지만 컨테이너 외부에는 영향을 미치지 않습니다. 이러한 유형의 가상화를 OS 수준 가상화 (Google it)라고합니다. 이것은 본질적으로 Linux 컨테이너를 실행하는 데 거의 / 존재하지 않는 오버 헤드를 의미합니다. 따라서 특정 머신에서 수백 개의 LXC를 가질 수 있지만 "일반적인"가상 머신 소프트웨어를 사용하면 리소스가 매우 빨리 소모됩니다.

나는 실제로 Linux-Vserver에 더 익숙 하지만 이론은 거의 동일합니다.


3

그것을 이해하는 가장 간단한 방법은 chroot가하는 일을 배우는 것입니다. chroot를 사용하면 마치 마치 전체 시스템 인 것처럼 유닉스 계열 시스템의 폴더에 "로그인"할 수 있습니다. 다시 말해:

당신이 가지고 있다면:

 /
   /boot
   /etc
   /home
   ...

다음과 같이 some_new_install 디렉토리를 추가 할 수 있습니다.

 /
   /some_new_install
      /boot
      /etc
      /home
      /usr
      ...
   /boot
   /etc
   /home
   /usr
      ...

/ some_new_install에 로그인하십시오. 그런 다음 / some_new_install / etc는 새 / etc이며 원래 / etc는 숨겨져 있으며 (대부분) 액세스 할 수 없습니다. / usr / bin은 다른 프로그램을 사용하여 원본과 다를 수 있습니다. MySQL은 / ​​usr / bin / mysql에서 동일한 프로그램이지만 / var / lib / mysql에서 다른 데이터를 가질 수 있습니다.

파일 시스템이 가상화되었습니다. 원본 파일 시스템을 분할하여 리소스를 공유하고 해당 리소스를 다른 가상화 된 리소스와 격리시킵니다.

이것은 꽤 좋습니다. 하나의 추가 프로그램을 실행하기 위해 완전히 새로운 가상 유닉스 복사본을 실행하는 대신 가상 파일 시스템으로 이동하여 동일한 커널, 동일한 라이브러리 (심볼 링크를 사용한 경우) 등에서 실행할 수 있습니다. Xen 또는 VirtualBox와 같은 것.

문제는 MySQL과 같은 프로그램 중 하나가 방해를 받고 모든 CPU를 사용하고 디스크에서 스왑을 시작하면 파일 시스템 만 가상화되어 CPU가 아닌 나머지 시스템에 영향을 미칩니다. 또는 기본 디스크 성능. IP 주소와 포트도 가상화되지 않으므로 두 프로그램이 네트워크에서 정보를 보내면 동일한 IP에서 정보를 보내 충돌이 발생할 수 있습니다. 마찬가지로, mysql의 두 복사본이 포트에서 수신하려고하면 포트가 사용 중이기 때문에 두 번째는 실패합니다.

LXC는 파일 시스템뿐만 아니라 네트워크 IP / 포트 / 인터페이스, CPU, 메모리 사용량 등을 가상화하여이를 해결합니다.

LXC는 전체 가상 머신만큼 안전하지는 않지만 일반적으로 우수한 솔루션입니다. 결국 운영 체제는 리소스를 안전하게 공유하는 것입니다. 대부분의 경우 여러 OS를 실행하는 것이 어리석은 일입니다. 더 나은 격리 기능을 갖춘 더 나은 OS가 필요합니다. 이것이 LXC 및 유사한 도구가 제공하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.