본문 바로가기
Study/CS

[Linux] 가상화

by _royJang 2022. 8. 9.

가상화 개요

1) 가상화 배경

  • 1960년대에 가상화 개념이 처음 등장하였지만 하드웨어의 성장으로 2000년대에 이르러서야 주목받음

2) 가상화 종류

  • 서버 가상화
    • 가장 일반적인 가상화 기술
    • 서버를 가상의 머신으로 만들어 사용
    • CPU나 메모리 등을 논리적으로 나누어 사용하여 리소스 활용률을 높이는 기술
    • 소프트웨어가 필요
  • 네트워크 가상화
    • 네트워크 방화벽과 보안 장비들을 모두 가상머신으로 구현 가능
    • 하나의 통합된 여러 개의 물리적 환경의 장치들을 가상으로 쪼개어 사용 가능
    • 네트워크를 더욱 유연하고 빠르게 제공가능
    • NFV(Network Function Virtualization), SDN(Software Defined Network)가 있음
  • 스토리지 가상화
    • 디스크 RAID처럼 여러 개의 물리적인 드라이브를 하나의 논리적 드라이브처럼 사용하는 기술
    • 디스크를 효율적으로 사용 가능
    • 확장 가능
  • 컨테이너 가상화
    • 호스트 운영체제에서 논리적 구역을 만들어 서로 독립적인 애플리케이션(컨테이너)을 실행하는 기술
    • 서버 가상화보다 리소스를 효율적으로 사용 가능
    • 빠른 배포 가능

서버 가상화

1) 서버 가상화 개요

  • 가상 머신을 생성할 때 사용하는 가장 일반적인 가상화
  • CPU나 메모리와 같은 시스템 자원을 나누어주는 파티셔닝 기실이 필요
  • 소프트웨어, 하드웨어 파티셔닝이 있으며 현재는 소프트웨어 파티셔닝을 주로 사용
  • 소프트웨어 파티셔닝은 소프트웨어를 사용하여 가상 머신에게 시스템 자원을 할당하게 되는데 이 역할을 하는 소프트웨어를 하이퍼바이저라 함

2) 하이퍼바이저

  • 호스트가 소프트웨어 파티셔닝을 할 수 있게 만들어주는 소프트웨어
  • 가상 머신의 리소스 관리 및 리소스간 접근 방지 기능을 함
  • VMware, Xen, VirtualBox, KVM이 있음

리눅스 컨테이너

1) 리눅스 컨테이너 개요

  • 컨테이너 가상화 기술을 사용
  • 애플리케이션이나 이에 필요한 라이브러리 및 설정파일 등이 포함
  • 가상 머신과 다르게 가상화 계층이 없고 커널이 별도로 존재하지 않아 가볍고 실행 속도가 빠름
  • 도커가 개발된 이후로 활발히 사용

2) 사용하는 기술

  • cgroup(Control group)
  • namespace

3) cgroup

  • 프로세스 또는 쓰레드를 그룹화 하여 관리하는 기능과 시스템 리소스의 사용을 제한
  • 서로 다른 컨테이너에 영향을 주지않도록 막아주는 역할을 함

4) namespace

  • 다수의 오브젝트를 격리하는데 사용
  • 다른 namespace에서 동일한 PID 사용 가능