
리눅스 응용분야는 기술 이름을 나열하기보다 가상머신은 게스트 운영체제와 커널까지 분리하고, 컨테이너는 호스트 커널을 공유하면서 namespace로 보이는 범위를 나누고 cgroup으로 자원을 관리하며, 클라우드는 이런 자원을 API와 자동화로 제공하는 운영 모델로 구분하면 됩니다.
KVM은 Linux 커널의 가상화 기능, QEMU는 가상 머신과 장치 모델을 제공하는 사용자 공간 프로그램, OCI는 컨테이너 이미지·실행 형식의 상호운용 규격입니다. 임베디드 분야에서는 필요한 커널·드라이버·루트 파일시스템을 목표 장치에 맞게 구성하며 Android와 Yocto가 서로 다른 활용 예가 됩니다.
연재 전체와 앞선 11개 항목은 2026 리눅스마스터 2급 전체 학습지도에서 확인할 수 있습니다.
응용 기술 핵심 비교표
| 분야 | 핵심 구조 | 리눅스 역할 | 대표 학습어 |
|---|---|---|---|
| 가상머신 | 가상 하드웨어 위에 게스트 OS·게스트 커널 실행 | KVM 가속, QEMU 장치 모델, 호스트 운영 | 하이퍼바이저, vCPU, 게스트 |
| 컨테이너 | 호스트 커널 공유, 프로세스 격리와 자원 제한 | namespace, cgroup, 보안 기능 제공 | 이미지, 런타임, 컨테이너 |
| 클라우드 | 컴퓨팅·저장소·네트워크를 API와 자동화로 제공 | 대규모 호스트·VM·컨테이너의 기반 | IaaS, 탄력성, 자동화 |
| 임베디드·모바일 | 목표 장치에 맞춘 커널·드라이버·사용자 공간 | 다양한 CPU·장치 지원과 맞춤 빌드 | 보드 지원, 크로스 컴파일, 루트 파일시스템 |
1. 가상머신: KVM과 QEMU 역할 구분
KVM(Kernel-based Virtual Machine)은 Linux 커널이 하드웨어 가상화 확장을 이용해 가상 CPU 실행과 VM 제어 API를 제공하도록 합니다. 사용자 공간 프로그램은 보통 /dev/kvm 인터페이스를 통해 VM과 vCPU를 만들고 제어합니다.
QEMU는 CPU·메모리·디스크·네트워크 카드 같은 가상 머신 모델을 제공하고 여러 아키텍처를 에뮬레이션할 수 있습니다. Linux 호스트에서 KVM을 가속기로 함께 사용하면 게스트 코드를 하드웨어 가상화로 실행하면서 QEMU가 장치와 사용자 공간 관리를 맡을 수 있습니다.
| 구분 | KVM | QEMU |
|---|---|---|
| 위치 | Linux 커널 가상화 서브시스템·모듈 | 사용자 공간 시스템 에뮬레이터 |
| 주요 역할 | 하드웨어 가속 VM·vCPU 실행 인터페이스 | 가상 머신·장치 모델, 디스크·네트워크 백엔드 |
| 단독 사용 | 완전한 사용자용 VM 관리 화면은 아님 | TCG로 에뮬레이션 가능, KVM을 가속기로 사용 가능 |
# 현재 커널과 가상화 환경을 조회
uname -r
systemd-detect-virt
# KVM 장치 노출 여부와 모듈 확인
if test -e /dev/kvm; then echo 'KVM device available'; else echo 'KVM device not exposed'; fi
lsmod | grep '^kvm' || true
/dev/kvm이 없다고 CPU가 가상화를 지원하지 않는다고 즉시 단정할 수는 없습니다. BIOS/UEFI 설정, 커널 구성, 모듈, 권한, 이미 가상화된 환경의 중첩 지원을 함께 확인해야 합니다.
2. 컨테이너: 프로세스 격리와 자원 관리
컨테이너는 일반적으로 별도 게스트 커널을 부팅하지 않고 호스트 커널 위의 프로세스로 실행됩니다. namespace는 프로세스 ID, 마운트, 네트워크, 사용자 등 각 프로세스가 보는 시스템 자원의 범위를 격리하고, cgroup은 프로세스를 계층으로 묶어 CPU·메모리·I/O 같은 자원의 사용량을 배분·제한·관찰합니다.
| 기능 | 질문 | 예 |
|---|---|---|
| namespace | 이 프로세스가 무엇을 볼 수 있는가? | PID, mount, network, user, UTS, IPC 격리 |
| cgroup | 이 프로세스가 자원을 얼마나 쓰는가? | CPU 시간, 메모리, I/O, 프로세스 수 관리 |
| 보안 통제 | 무엇을 할 수 있는가? | capabilities, LSM, seccomp, 읽기 전용 마운트 |
# 현재 시스템의 namespace 종류와 일부 항목 확인
lsns | sed -n '1,12p'
# 현재 셸 프로세스의 cgroup 소속 확인
cat /proc/self/cgroup
# cgroup v2 마운트 여부 확인
findmnt -t cgroup2
namespace와 cgroup만 사용했다고 자동으로 완전한 보안 경계가 되는 것은 아닙니다. 커널을 공유하므로 권한 최소화, 시스템 호출 제한, 이미지 출처·서명, 보안 업데이트, 호스트 보호를 함께 적용해야 합니다.
3. OCI: 이미지와 실행 규격
OCI(Open Container Initiative)는 특정 상용 제품 하나가 아니라 컨테이너 생태계의 상호운용을 위한 공개 규격을 관리합니다. Image Specification은 컨테이너 이미지의 구성과 메타데이터 형식을, Runtime Specification은 압축 해제된 filesystem bundle을 어떻게 실행할지 정의합니다.
- 레지스트리나 로컬 저장소에서 OCI 이미지의 manifest·config·layer를 가져옵니다.
- 이미지를 풀어 root filesystem과 실행 설정을 포함한 runtime bundle을 준비합니다.
- OCI 호환 런타임이 bundle의 설정에 따라 격리된 프로세스를 시작합니다.
이미지는 실행 전의 불변 패키지이고, 컨테이너는 그 이미지와 설정으로 시작된 실행 인스턴스입니다. OCI는 형식을 규정하지만 여러 호스트의 배치·복구·확장까지 모두 담당하는 오케스트레이터는 아닙니다.
4. 클라우드와 가상화는 같은 말이 아님
가상화는 물리 자원을 논리적으로 분리·추상화하는 기술이고, 클라우드는 컴퓨팅 자원을 네트워크와 API를 통해 요청하고 자동 할당·회수·확장하는 서비스·운영 모델입니다. 클라우드는 VM을 많이 사용하지만 베어메탈이나 컨테이너 서비스를 제공할 수도 있습니다.
| 용어 | 중심 질문 | 예 |
|---|---|---|
| 가상화 | 한 물리 시스템의 자원을 어떻게 격리·추상화하는가? | KVM 가상머신 |
| 클라우드 | 자원을 어떻게 주문·자동화·확장·과금하는가? | API 기반 인스턴스·스토리지 |
| 오케스트레이션 | 여러 실행 단위를 어떻게 배치·복구·확장하는가? | 컨테이너 스케줄링·롤링 업데이트 |
5. 임베디드·모바일에서의 리눅스
임베디드 리눅스는 PC 배포판을 그대로 복사하는 것이 아니라 목표 CPU와 보드, 부팅 방식, 장치 드라이버, 저장공간·메모리 제약에 맞춰 커널과 사용자 공간을 구성합니다. Yocto Project는 특정 완성 배포판이라기보다 맞춤 Linux 기반 시스템을 만들기 위한 메타데이터·도구·참조 배포 구성을 제공하는 프로젝트입니다.
Android도 Linux 커널을 기반으로 하지만 사용자 공간 프레임워크와 응용 실행환경은 일반적인 GNU/Linux 데스크톱 배포판과 다릅니다. 따라서 “Android는 Linux 커널을 사용한다”와 “Android가 일반 Linux 배포판과 완전히 같다”는 문장을 구분해야 합니다.
- 모바일: 전원관리, 보안, 장치 드라이버, 앱 프레임워크와 결합
- 네트워크 장비: 라우팅·방화벽·관리 서비스의 기반
- 자동차·IoT: 보드별 드라이버와 실시간·안전 요구를 고려한 구성
- 슈퍼컴퓨팅: 대규모 병렬 작업, 스케줄러, 고속 네트워크를 지원하는 운영 기반
6. 시험용 연결 지도
- VM 질문: 게스트 커널이 따로 있는가, KVM과 QEMU 역할은 무엇인가?
- 컨테이너 질문: 호스트 커널을 공유하는가, namespace와 cgroup은 각각 무엇을 제한하는가?
- OCI 질문: 이미지·runtime bundle·실행 컨테이너의 순서는 무엇인가?
- 클라우드 질문: 가상화 기술 자체인가, API·자동화·탄력적 제공 모델인가?
- 임베디드 질문: 목표 하드웨어에 맞춰 커널·드라이버·루트 파일시스템을 어떻게 구성하는가?
자주 틀리는 5가지
- “KVM과 QEMU는 같은 프로그램이다” → KVM은 커널 가상화 기능, QEMU는 사용자 공간 머신·장치 모델입니다.
- “컨테이너마다 항상 별도 커널이 부팅된다” → 일반적인 Linux 컨테이너는 호스트 커널을 공유합니다.
- “이미지와 컨테이너는 같은 상태다” → 이미지는 실행 전 패키지, 컨테이너는 실행 인스턴스입니다.
- “cgroup이 파일·네트워크 가시성을 격리한다” → 가시성 격리는 namespace, 자원 배분·제한은 cgroup이 중심입니다.
- “클라우드는 곧 가상머신이다” → 클라우드는 자동화된 자원 제공 모델이며 VM·컨테이너·베어메탈을 포함할 수 있습니다.
셀프체크 5문항
- KVM과 QEMU의 역할을 각각 설명하세요.
- 가상머신과 일반 Linux 컨테이너의 커널 사용 차이는 무엇인가요?
- namespace와 cgroup이 답하는 질문을 각각 한 문장으로 쓰세요.
- OCI 이미지가 실행 컨테이너가 되기까지의 큰 흐름은?
- Android·Yocto를 리눅스 응용분야에서 어떻게 구분해야 하나요?
정답 확인
- KVM은 커널의 하드웨어 가상화 인터페이스, QEMU는 가상 머신·장치 모델을 제공하는 사용자 공간 프로그램입니다.
- VM은 게스트 커널을 별도로 실행하고, 일반 컨테이너는 호스트 커널을 공유하며 프로세스를 격리합니다.
- namespace는 무엇이 보이는지, cgroup은 자원을 얼마나 쓰고 배분받는지를 제어합니다.
- 이미지의 manifest·config·layer를 받아 filesystem bundle로 풀고 OCI 런타임이 설정에 따라 프로세스를 시작합니다.
- Android는 Linux 커널 기반 모바일 플랫폼이고, Yocto는 목표 장치용 맞춤 Linux 시스템을 만드는 프로젝트·도구 체계입니다.
12편 전체 학습지도로 돌아가려면 리눅스마스터 2급 전체 학습지도를 확인하세요.
공식 자료
- KAIT 리눅스마스터 2급 출제기준: 응용분야
- Linux Kernel: KVM 공식 문서
- QEMU 공식 문서: System Emulation과 KVM 가속
- namespaces(7): Linux namespace 개요
- Linux Kernel: cgroup v2 공식 문서
- OCI Image Format Specification
- OCI Runtime Specification
- Android Open Source Project: Kernel overview
- Yocto Project 공식 개요
이 글은 2026년 7월 11일 기준 KAIT 범위와 Linux Kernel·QEMU·OCI·Android·Yocto의 1차 문서를 확인해 작성했습니다. 응용분야는 기술 변화가 빠르므로 제품 이름보다 VM·컨테이너·클라우드·임베디드의 구조와 역할을 중심으로 갱신합니다. 명령은 현재 환경을 조회할 뿐 VM이나 컨테이너를 생성·변경하지 않으며, 문제는 자체 제작했습니다.
'학위공부 > IT 자격증' 카테고리의 다른 글
| 2026 리눅스마스터 2급 ⑪ 인터넷 활용|네트워크·포트·서비스 설정 (0) | 2026.07.12 |
|---|---|
| 2026 리눅스마스터 2급 ⑩ X 윈도|구조·데스크톱 환경·DISPLAY 정리 (0) | 2026.07.12 |
| 2026 리눅스마스터 2급 ⑨ 장치 설정|/dev·저장장치·주변장치 정리 (0) | 2026.07.11 |
| 2026 리눅스마스터 2급 ⑧ 소프트웨어 설치|RPM·DNF·APT·dpkg 차이 (0) | 2026.07.11 |
| 2026 리눅스마스터 2급 ⑦ 에디터|vi·Vim 모드와 검색·치환·저장 명령 (0) | 2026.07.11 |