KVM, 가상 머신, 컨테이너 및 전용 하드웨어는 서로 다른 운영 경계를 설명합니다. 프로젝트에 필요한 경계를 선택하고, 제공되는 기능을 확인하며, 해당 환경 내에서 소프트웨어를 유지 관리하십시오.
가상 머신은 게스트 환경입니다
가상 머신은 프로세서, 디스크 및 네트워크 인터페이스와 같은 가상화된 하드웨어를 갖춘 운영 체제를 제공합니다. 물리적 호스트는 이러한 게스트를 가능하게 하는 기계를 실행합니다. VPS은 명시된 리소스 할당과 고객이 사용할 수 있는 운영 환경을 갖춘 가상 서버를 기반으로 구축된 호스팅 제품입니다. 모든 가상 CPU 뒤에 물리적 머신이 있다고 상상하지 말고 할당을 제안의 일부로 읽으십시오.
전용 서버는 프로젝트에 물리적 머신 경계를 제공합니다. 하나의 운영 체제를 실행하거나 하드웨어와 배포가 해당 설계를 지원할 때 자체 가상 머신을 호스팅할 수 있습니다. 이는 리소스 소유권과 관리를 변경하지만 소프트웨어 취약점, 업데이트 작업 또는 백업 필요성을 제거하지는 않습니다. 실제 격리 또는 용량 요구 사항에서 경계를 선택하십시오.
KVM은 가상화 기술을 식별합니다
KVM은 Linux 커널에서 가상화 지원을 제공합니다. QEMU는 머신 모델을 제공하고 KVM를 가상화 가속기로 사용할 수 있으며, libvirt와 같은 관리 소프트웨어는 게스트 구성과 수명 주기를 구성할 수 있습니다. 이러한 구성 요소는 환경이 어떻게 구축될 수 있는지 설명합니다. KVM 문자는 CPU 스케줄링, 스토리지 성능 또는 서비스 가용성을 지정하지 않습니다.
가상화 문서는 때때로 호스트 플랫폼과의 관계에 따라 Type 1 및 Type 2 하이퍼바이저를 구분합니다. 호스팅 결정에는 라벨보다 게스트 경계, 유지 관리 책임 및 노출된 하드웨어를 아는 것이 더 유용합니다. 필요한 게스트 운영 체제와 드라이버가 지원되는지 물으십시오. 소프트웨어 프로젝트에서 설명하는 기능이 모든 제공자의 제품에서 자동으로 활성화되는 것은 아닙니다.
게스트 제어와 호스트 제어를 혼동하지 마십시오
게스트 내부의 루트 또는 관리자 접근을 통해 해당 게스트를 관리할 수 있습니다. 물리적 하이퍼바이저, 다른 테넌트 또는 가능한 모든 호스트 기능에 대한 접근을 제공하지는 않습니다. 중첩 가상화, 장치 패스스루 및 특수 네트워크 설정은 명시적인 지원이 필요합니다. 노트북에서 사용할 수 있는 기능이 호스팅 환경에서 동일하게 노출될 것이라고 가정하고 VPS을 선택하지 마십시오.
실제 요금제의 CPU, 메모리, 스토리지, 네트워크 및 라이선스를 비교하십시오. 배포 후 대표적인 작업으로 애플리케이션의 지연 시간과 리소스 압박을 관찰하십시오. 가상화 기술은 제공자 정책에 따라 기본 하드웨어 리소스를 공유하면서 유용한 격리 경계를 만들 수 있습니다. 게스트 라벨이나 전용 라벨은 측정과 완전한 운영 사양을 대체하지 않습니다.
| 경계 | 프로젝트가 관리하는 것 | 확인할 기능 |
|---|---|---|
| 가상 머신 | 게스트 OS 및 그 서비스 | 지원되는 OS, 드라이버 및 노출된 기능 |
| 컨테이너 | 프로세스 및 이미지 구성 | 커널 기능, 한도 및 마운트 범위 |
| 전용 서버 | 선택한 물리적 머신 환경 | 하드웨어 및 가상화 요구 사항 |
컨테이너는 환경 내에서 프로세스를 구성합니다
컨테이너는 일반적으로 호스트 커널을 공유하면서 프로세스와 해당 리소스를 그룹화합니다. 가상 머신은 게스트 커널을 실행합니다. 운영 체제와 런타임이 의도한 구성을 지원할 때 VPS 내에서 컨테이너를 실행할 수 있습니다. 이 조합은 게스트의 보안 유지 관리나 복구 계획을 대체하지 않고 종속성을 더 쉽게 패키징할 수 있습니다.
Docker의 리소스 통제에는 의도적인 설정이 필요합니다. 기본적으로 런타임은 각 컨테이너에 CPU 및 메모리 한도를 설정하지 않습니다. 리소스 사용을 제한하고 불필요한 권한이나 호스트 마운트를 피하십시오. 가능한 경우 신뢰 요구 사항이 다른 워크로드를 분리하십시오. 호스트와 이미지를 유지 관리하십시오. 컨테이너 이미지를 시작하기 쉽다는 이유로 자동 보안 결정으로 취급하지 말고 검증해야 하는 소프트웨어로 취급하십시오.
셸은 인터프리터이지 서버 자체가 아닙니다
터미널은 상호 작용 표면을 제공하고, 셸은 명령을 해석하고 프로그램을 시작합니다. Linux에서는 Bash가 일반적인 셸이며, 다른 셸은 다른 구문과 대화형 기능을 제공합니다. 스크립트는 예상하는 인터프리터를 대상으로 해야 합니다. 로그인 셸을 변경한다고 해서 모든 애플리케이션의 인터프리터가 변경되거나 다른 셸용으로 작성된 스크립트가 호환되는 것은 아닙니다.
셸 입력은 프로그램이 인수를 받기 전에 확장, 리다이렉션 및 명령 치환을 거칠 수 있습니다. 파일 이름이나 사용자 데이터로 유지 관리 명령을 구성하기 전에 이러한 처리를 이해하십시오. 신뢰할 수 없는 입력을 실행 가능한 명령 텍스트에 넣지 말고, 인수를 올바르게 인용하며, 자동화 작업에는 프로그램의 구조화된 인터페이스를 선호하십시오. 기록, 로그 및 프로세스 인수에는 민감한 값이 남을 수 있으므로 애플리케이션에 적합한 비공개 자격 증명 메커니즘을 사용하십시오.
선택한 경계를 운영하십시오
전달 후에는 게스트 OS, 접근 경로 및 복구 메커니즘을 확인하십시오. 업데이트를 적용하고, 제한된 관리 계정을 만들고, 프로젝트에 필요한 서비스만 노출하십시오. 중요한 데이터를 이전하기 전에 소규모 배포를 테스트하십시오. 재구축에 필요한 런타임, 이미지 및 구성을 기록하십시오. 경계는 애플리케이션 상태를 복구할 수 있는지 여부를 알려주지 않습니다.
SwissOctet 비교를 사용하여 워크로드와 운영 환경에 따라 Vector, DeskLink 또는 Metal 범위를 추려보십시오. 주문을 준비하기 전에 특수 기능을 확인하십시오. 런북에서 운영 체제 작업, 애플리케이션 작업 및 공급자 작업을 구분하십시오. 명확한 경계는 구성할 수 있는 것과 문의해야 하는 것을 알려주고 마이그레이션 및 복원을 위한 실용적인 경로를 유지하므로 유용합니다.
실용 체크리스트.
- 게스트 접근과 호스트 접근을 구분하십시오.
- 특수 하드웨어 및 가상화 요구 사항을 확인하십시오.
- 하이퍼바이저 레이블이 아니라 전체 구성을 측정하십시오.
- 컨테이너 제한 및 권한을 구성하십시오.
- 의도한 셸을 사용하고 명령 입력을 보호하십시오.
중요한 세부 사항.
KVM는 전용 물리 CPU 코어를 받는다는 의미입니까?+
아니요. KVM는 가상화 기술을 나타냅니다. 제품의 CPU 할당 및 리소스 정책을 별도로 확인하십시오.
컨테이너가 게스트 유지 관리를 대체할 수 있습니까?+
아니요. 호스트 환경, 컨테이너 런타임 및 이미지 모두 유지 관리, 적절한 권한 및 복구 계획이 필요합니다.
터미널과 셸은 같은 것입니까?+
아니요. 터미널은 인터페이스를 제공합니다. 셸은 해당 인터페이스 내에서 명령 입력을 해석하고 프로그램을 실행합니다.
출처로 이동하세요.
이 참고 자료는 이 가이드의 기술 개념을 뒷받침합니다. 프로덕션 시스템을 변경하기 전에 최신 문서를 확인하세요.
- KVM 프로젝트: 커널 가상 머신 www.linux-kvm.org
- QEMU: 시스템 에뮬레이션 소개 www.qemu.org
- Docker: 리소스 제약 docs.docker.com
- GNU Bash: 셸 확장 www.gnu.org
SwissOctet의 편집 지침. 예시는 설명용입니다. 서비스 사양, 사용 가능한 옵션 및 계약 조건은 별도로 확인해야 합니다.