traveler_JH 2023. 2. 16. 02:10

리눅스환경에서 가상머신을 설치하고 관리하는 명령어

정의된 XML로 부터 가상 머신을 생성하고 종료 삭제 한다.

  • 사내 개발용 서버에서 libvirt와 qemu를 이용하여 VM을 배포
    • libvirt xml 형식을 이용하여 VM을 설정을 관리

명령어 도움말

  1. virsh-help : 도움말 보기
  2. virsh list : 현재 실행중인 가상머신 목록 확인
      • all : 종료된 가상 머신을 포함 하여 확인
  1. virt-viewer {VM NAME} : 가상머신 접속명령어
  • {VM NAME} 대신 가상머신의 이름을 지정하면 된다.
  1. virt-install : 가상 머신을 생성하는 명령어
    • KVM설치
      • install 시에는 KVM 이 설치되어있어야한다.
        • KVM : Kenel - based Virtual Machine
          • 리눅스에서 동작하는 가상화 솔루션
          • 리눅스 커널의 mainline에 포함된 정식 커널 모듈 중 하나
          • 설치 환경 확인 : CPU에서 하드웨어 가상화 기능이 제공 되어야 설치후 사용이 가능하다.
          • 확인 명령어 egrep -c '(vmx|svm)' /proc/cpuinfo
            • 0 : 하드웨어가 가상화 기능을 제공하지 않는다.
            • 1 or 그 이상의 값 : 하드웨어 가상화 기능을 제공 (BIOS에서 가상화 기능이 활성화 되어있는 지 확인필요)
          • 설치명령어 :
            • sudo apt-get install qemu-kvm libvirt-daemon-system virtinst bridge-utils cpu-checker
          • 권한 추가
            • 사용자 권한으로 가상머신을 생성, 삭제 등 관리하기 위해서 권한을 추가
            • sudo adduser $USER kvm
          • 사용 가능 한지 테스트
            • kvm-ok
            • INFO: /dev/kvm exists KVM acceleration can be used
            • 위와 같이 나오면 성공적으로 KVM 설치 완료
    • Bridge 설정
      • Bridge란?
        • 네트워크 세그먼트를 연결해주는데 사용되는 인터페이스
        • 내부 가상 네트워크와 인터넷 공용망을 연결하여 내부 네트워크에서도 인터넷을 연결 할 수 있도록 하는데 주로 사용 KVM과 Xen 등의 Hyper visor 사용에 필요한 네트워크 설정
        • Netplan을 용하여 네트워크를 설정
      • Netplan 브릿지 설정
        • 네트워크 인터페이스 확인
          • ipconfig
          eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                  inet 192.168.229.229  netmask 255.255.248.0  broadcast 192.168.231.255
                  inet6 fe80::43d0:3ef6:c756:b1bd  prefixlen 64  scopeid 0x20<link>
                  ether c8:5a:cf:08:c9:70  txqueuelen 1000  (Ethernet)
                  RX packets 7210647  bytes 1017638338 (1.0 GB)
                  RX errors 0  dropped 1  overruns 0  frame 0
                  TX packets 350202  bytes 101923200 (101.9 MB)
                  TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
                  device interrupt 16  memory 0xf1100000-f1120000
          
        • Netplan 브릿지 설정
          • /etc/netplan/01-network-manager-all.yaml
          • cat /etc/netplan/01-network-manager-all.yaml # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager
        (base) ➜ vm_test git:(master) ✗ virsh net-define /tmp/br0.xml Network br0 defined from /tmp/br0.xml(base) ➜ vm_test git:(master) ✗ virsh net-autostart br0 Network br0 marked as autostarted
        • netplan 적용
          • sudo netplan apply
      • (base) ➜ vm_test git:(master) ✗ virsh net-start br0 Network br0 started
    • virt-install에서 지원되는 주요 옵션
      • 설정과 관련된 일반적인 옵션
        • — connect URI : libvirt URI 에서 지원되는 URI로 Hypervisor에 접속
        • — name NAME : 가상머신의 이름
        • —vcpus VCPUS : 가상머신에서 사용될 vCPU 의 갯수
        • —memory MEMORY : 가상머신에서 사용될 메모리 크기
      • 가상 머신 설치 관련 옵션
        • — cdrom CDROM : 설치 미디어 또는 설치 ISO 파일 경로
        • — boot BOOT : 부팅할 장치옵션을 지정
      • 장치 설정관련 주요 옵션
        • — disk DISK : 디스크 정보로, 다양한 옵션과 함께 사용 가능
        • — network NETWORK : 가상머신의 네트워크 인터페이스 옵션
        • — graphics GRAPHICS : 가상머신의 디스플레이 출력 설정 옵션
    • test
      sudo virt-install \\
      --name=jeonghyeon_test \\
      --ram=4096 \\
      --disk path=/home/jeonghyeon/piolink/vm_test/test1.img,size=10 \\
      --vcpus=2 \\
      --graphics=none \\
      --console=pty,target_type=serial \\                               
      --location '<http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/>' \\
      --extra-args 'console=ttyS0,115200n8 serial'
      
    • 스토리지 : 10 GB vcpu : 2 guest OS : CeontOS 07 GUI 옵션 없이 text mode로 guest OS 설치
  2. virsh suspend {VM NAME} : 가상 머신 정지
  3. virsh resume {VM NAME} : 정지된 가상머신 재실행
  4. virsh shutdown {VM NAME} : 가상머신 종료
    • 현재 실행중인 가상머신을 종료하기위해서 실행
  5. virsh undefine {VM NAME} : 가상머신 삭제
    • 가상머신 삭제
  6. virsh edit {VM NAME} : 가상 머신 수정
    • 하드웨어등의 사양을 수정하기 위해서 실행