0부터 시작하는 KVM 공부 - 가상 머신을 생성해보자

Jaehong Lee·2022년 8월 1일
2
post-thumbnail

1. KVM 설정

  • kvm을 root 의 권한으로 실행하게 설정하자
  • 다음 파일을 편집기로 열어주자
  • 위 두 부분 주석 제거
  • 저장하고, KVM 을 재실행해주자

2. 가상 머신 & 인스턴스 를 생성하는 방법

1. iso 파일로 가상 머신 설치

  • 설치용 Disk 인 iso 파일을 이용해 가상 머신을 설치한다
  • Template 용 으로는 적절하다

2. qcow2 이미지 파일을 이용하여 인스턴스 배포하기

  • qcow2 파일 자체가 volume ( 디스크 ) 이며, os가 이미 설치되어 있다

3. 가상 머신 생성해보기

이미지 파일 다운 받기

  • remote 디렉터리에 wget 을 통해 다운 받자

KVM 1 과 KVM 2 연결

  • KVM 1 & KVM 2 에서 VMM 을 켜주자
  • 다음을 눌러주자
  • KVM 2 에 연결할 것 이기에 다음과 같이 설정한다. 이는 hosts 파일에 이미 등록했기에 가능하다. yes 2 번과 password 를 입력해주자

가상 머신 생성

  • 우리는 NAT 스위치를 사용한다. default 네트워크는 NAT 를 사용하는 스위치 이므로 default 로 설정한다
  • graphics 는 설치하는 환경을 GUI 에서 볼 수 있게 해주는 옵션이다. 우리는 vnc 를 통해 원격 접속하여 확인할 것 이다
    • 원격 접속 방법
      • CLI 환경 : SSH
      • GUI 환경 : vnc, spice
virt-install -n test1 \
  --ram 1024 \
  --vcpus 1 \
  --cdrom /remote/vyos-1.1.8-amd64.iso \
  --os-type linux \
  --os-variant debian10 \
  --network network=default \
  --graphics vnc \
  --hvm \
  --virt-type kvm \
  --disk path=/remote/test1.qcow2,size=5 \
  --noautoconsole
  • 위 코드를 통해 생성하면 된다
    • 이때, 디스크인 qcow2 파일과 컴퓨팅 영역인 xml 영역이 생긴다. 이 qcow2 파일을 통해 인스턴스를 배포하면 기존의 xml 파일 대신, 인스턴스 배포시 생성한 xml 영역이 qcow2 파일에 붙는다
    • 생성된 xml 파일과 qcow2 파일은 따로 저장된다. 따라서 migration 이 가능하다

  • KVM2 에서 KVM1 에 연결했으므로, KVM1 에서 동작중인 가상 머신을 확인 가능 하다
  • 실행도 가능 하다

4. VM MIGRATION 을 해보자

  • MIGRATE 를 해보자
  • 위와 같이 설정하고, MIGRATE 를 하면, KVM2 로 MIGRATE 된다
  • 위와 같이 잘 넘어가졌다. 이는 두 KVM 이 연결된 상태이기에 이와같이 live MIGRATION 이 가능하다

5. qcow 2 를 이용한 배포란

  • 가상 머신 설치 방법은 여러개의 가상 머신을 만들때 일일이 다 설치해야 하므로, 클라우드 환경에서 배포하는데 적절한 방법은 아니다. 허나, 이 방법은 Template 용 으로는 적절하다
  • Template 용 으로 사용할 qcow 2 파일이 생성됬다. 우리는 Cloud 이미지를 복사하여 인스턴스를 배포해줄 수 있다. 이 qcow 2 파일은 디스크에 OS 가 설치된 파일이므로, 여기에 XML 파일을 붙여서 배포하면 된다
  • 단, 배포시 이 Cloud 이미지에는 password 가 존재하지 않으므로, 여기에 key 를 넣어줘야 한다

6. 가상 머신 조작 명령

  • 실행 중인 가상 머신을 확인하고, 실행 중인 가상 머신을 종료시키자
    • virsh list --all : 동작중이거나 중지중인 모든 가상머신의 리스트를 확인할 수 있다
    • virsh destroy ~ : 가상 머신을 종료시킨다

  • --name 을 사용하면 이름만 출력한다
  • --name 과 반복문을 사용하여, 실행중인 모든 가상 머신을 종료시킬 수 있다. 이렇게 종료하는 이유는 전체 종료나 전체 삭제 명령이 없기 때문이다
  • 삭제를 위해서는 반드시 종료되있는 상태여야 한다. --remove-all-storage 를 통해 디스크도 함께 삭제해주자

7. 실습 환경 실행 및 종료

종료

  • kvm 1 & kvm 2 종료 -> storage 종료

실행

  • storage 실행 -> kvm 1 & kvm 2 실행

반드시 NFS 서버가 먼저 실행되고, 마지막에 종료 되야 한다

실행시에는 MOUNT 정보와 libvirtd 상태 , SElinux 상태를 확인하자

8. qcow 2 와 xml

  • 오늘 생성한 qcow 2 는 기존의 qcow 2 와 같은 파일이다

  • qcow 2 파일은 표준 포맷이다

  • 이 qcow2 는 볼륨이다. 우리는 생성할때 지정한 cpu와 ram 등의 컴퓨팅 자원은 별도의 xml 파일로 생성되었다. 이 xml 파일과 이 qcow2 파일이 합쳐져야 가상 머신이다

  • 위에서 migrate 를 할때, 이 xml 파일이 다른 kvm 서버에 옮겨져서 가상 머신을 생성한 것 이다. 이는 qcow 2 파일을 NFS 서버를 통해 공유 스토리지에 저장하여 두 서버가 공유하기에, xml 파일이 옮겨지면, 해당 xml 파일의 Disk 위치를 kvm 서버에서 확인하고, 공유 storage 의 qcow 2 파일과 연결하여 가상 머신을 migrate 한 것 이다

  • 그렇다면, qcow 2 파일을 통해 배포한다면, 기존에 설정한 xml 파일을 제거하고, 새 xml 파일을 붙이는 것 인가

    • 이 qcow2 파일을 이용해 배포하면, 새 xml 파일이 생성된다. 기존 xml 파일은 삭제되지 않으며, 이를 삭제하려면 undefine 을 해서 삭제해야 한다. virt-install 등을 통해 새 컴퓨팅 자원을 정의하면, 새 xml 파일이 생성되며, disk 의 위치를 이 qcow 2 파일로 지정한다. 이를 통해 인스턴스가 배포된다
  • 그렇다면, 하나의 qcow 2 파일에 대해 다수의 xml 파일이 연결되어 다수의 가상 머신이 하나의 디스크를 공유할 수 있는가?

    • 그건 안된다. 이 방식이 허용되면, 다수의 가상 머신이 하나의 디스크를 공유하기 때문에, 한 쪽에서만 점유하도록 해줘야 한다
profile
멋진 엔지니어가 될 때까지

0개의 댓글