2. 리눅스 가상 시스템(1) - 리눅스 가상 시스템

프라이마리모·2026년 6월 13일
post-thumbnail

가상 시스템

가상 기술(virtualization) 은 시스템 자원을 최대한 활용하고자 소프트웨어로 컴퓨터 사용 환경을 구현한 기술을 의미한다.
응용 프로그램, 서버, 데스크톱, 네트워크, 저장장치를 대상으로 하는 광범위한 기술인데, 여기서 가상 시스템은 가상 기술을 이용해 컴퓨터 하나에 여러 시스템을 독립적으로 운영하는 시스템으로 한정한다.

가상 시스템이 필요한 이유

  • 모든 시스템이 언제나 성능을 100% 활용하지는 않으므로 낭비되는 자원이 있기 마련이다. 가상 시스템은 시스템 자원을 효율적으로 쓸 수 있으며 확장이 용이하다.

  • 가상 시스템을 활용하면 고가의 서버 여러 대로 서비스를 제공하는 일을 서버 하나로 대신 할 수 있어 비용을 절감할 수 있다. 실제로 클라우드 서비스나 호스팅 서비스 대부분이 가상 시스템을 기반으로 동작한다.

  • 수십, 수백대의 장비를 제한된 인원으로 일일이 유지보수 하는 일은 결코 쉽지 않다. 가상 시스템을 도입하면 훨씬 적은 노력으로 시스템을 관리할 수 있다.

  • 시스템에 문제가 발생했을 때는 빠르게 문제 원인을 찾아 원래대로 복구해야 한다. 가상 시스템에서는 서비스 중단 없이 빠른 복구가 가능하다.

  • 리눅스를 다루는 기술을 익히는데 가상 시스템이 도움이 된다.


커널 가상 장치 KVM

일반적인 리눅스 시스템은 하드위어를 운영체제가 제어하고 운영체제 위, 사용자 영역에서 응용 프로그램이 돌아간다.
리눅스 가상 시스템은 가상 엔진이라고 표현하는 하이퍼바이저 위에 독립적인 시스템이 운영되는 환경이다.

가상 게스트 가상 게스트 가상 게스트
하이퍼바이저
하드웨어

하이퍼바이저

하이퍼바이저는 물리적인 시스템에 다수의 가상 운영체제가 동시에 실행될 수 있게 해주는 논리적인 플랫폼(시스템 또는 소프트웨어)이다. 하이퍼바이저에 따라 가상 기술도 다양한 방식으로 나뉜다.
리눅스에서는 KVM, VMware, Virtual PC 등이 사용 가능한데, 이 중 커널 가상 장치인 KVM을 활용하여 실습한다.

리눅스 가상 시스템의 구조

  • 호스트(host), 호스트 시스템(host system) : 가상 시스템을 운영하는 물리적인 시스템
  • 게스트(guest), 가상 게스트(virtual guest) : 호스트 시스템에서 운영되는 가상 장치

가상 게스트는 호스트 시스템과 독립된 환경으로 각각 다른 운영체제로 동작할 수 있다. 예를 들면, 우분투 위에 윈도우와 우분투를 동시에 운영할 수 있다.

호스트 시스템과 다른 환경에서 가상 게스트가 동작하려면 가상 게스트의 명령을 호스트 시스템이 이해할 수 있는 명령으로 바꾸어주는 에뮬레이터가 필요하다.
빠른 에뮬레이터(Quick EMUlager, QEMU)는 KVM이 사용하는 에뮬레이터로, 가상 게스트에서 호스트 시스템의 하드웨어를 제어할 수 있게 명령을 변환한다.


가상 시스템 설치하기

가상 기술 사용 가능 여부 확인하기

KVM은 인텔 VT, AMD-V 가상 기술을 지원하는 CPU에서만 사용할 수 있다. 최근 출시된 CPU는 대부분 가상 기술을 지원한다.
시스템 내에서는 CPU가 가상 기술을 지원하는지 CPU 정보파일 cpuinfo 에서 확인할 수 있다. 인텔 CPU는 vmx 플래그, AMD CPU는 svm 플래그가 활성 상태라면 가상 시스템을 설치할 수 있다.

grep 명령으로 CPU 정보를 보여주는 cpuinfo에서 vmx 또는 svm 플래그가 있는 행을 검색한다. -E는 문자열 vmx 또는 svm을 검색하는 확장 표현식을 허용하는 옵션이며, -c는 문자열이 포함된 행 수를 세는 옵션이다.

cpu 코어 개수가 0으로 표시되면 CPU가 가상 기술을 지원하지 않음을 의미한다. 이런 환경에서는 KVM이 동작하지 않으며, QEMU가 에뮬레이션만 제공한다.
가상 시스템이 아닌 에뮬레이션으로 가상 게스트의 모든 명령이 호스트 시스템에 맞게 변환되기 때문이 시스템 성능이 매우 느려질 수 밖에 없다.

가상 시스템 설치하기

가상 시스템 관련 패키지를 설치한다.

  • qemu-kvm : KVM 커널 모듈과 KVM에 최적화 된 QEMU
  • libvirt : 하이퍼바이저 관리 라이브러리
  • libvirt-clients : virsh를 비롯한 libvirt 라이브러리 도구
  • libvirt-daemon-system : libvirt 서비스를 제공하는 데몬 설정 파일
  • libvirt-bridge-utils : 가상 네트워크를 위한 브릿지 도구
profile
개발공부 요약노트

0개의 댓글