0부터 시작하는 KVM 공부 - 실습 환경 구축 < 세부 설정 및 패키지 설치 >

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

1. 설치 후 네트워크 확인

모든 가상 머신은 root 로 로그인 해주자

  • kvm 1 / kvm 2 에서 확인

    • ip 확인 및 www.google.com 으로 ping
  • storage

    • ip addr show : ip addr list
    • www.google.com 으로 ping
  • kvm 1 에서 확인

    • kvm 2 와 storage 의 모든 ip 에 ping

통신이 잘 기능한다

2. 구성한 환경

  • KVM 과 Storage 사이의 연결은 Ip 를 통해 연결하므로, VMnet 10 을 사용할 수 도 있지만, 이는 중요한 Data 통신을 해야하므로, 외부에서 접근할 위험을 방지하고, 또한 VMnet 10 은 외부 사용자들도 사용하므로, 대역폭으로 인한 KVM 과 Storage 사이의 통신 오류를 방지하기 위해 독립적인 VMnet 1 을 사용하여 연결한다

  • SSH 연결은 172.16.2 대역을 통해 접속 해야 한다

3. SSH 연결 확인 및 패키지 설치

  • SSH 연결이 완료 됬으면, yum -y update && yum -y install net-tools curl vim git wget 을 실행해주자

4. .bashrc 에 vim 설정

  • .bashrc 에 들어가서 alias 를 통해 vim 의 별칭을 vi 로 설정하자
  • 위와 같이 설정을 추가하자
  • .bashrc 는 해당 게정이 처음 로그인할 때 읽어들이는 파일이다. 만약, 파일의 내용이 변경 되었다면, 이를 현재 환경에 적용하지 위해서는 재 로그인 ( su ) 를 하거나, .bashrc 파일 ( source ~/.bashrc ) 을 현재 환경에 적용시키는 방법이 있다

5. 방화벽 & 네트워크 매니저 & SElinux 설정

  • 이 3 가지를 모두 중지 및 비활성화 시킬 것 이다
    • 중지는 지금 즉시 중지 시키는 것. 재부팅하면 다시 켜진다
    • 비활성화는 재부팅시에도 중지되게 하는 것

" 방화벽 " : 서버에서 발생한 트래픽 , 서버에 들어오는 트래픽 , 서버를 통과하는 트래픽에 대한 보안 설정이 가능하다. 일반적으로, allow 와 deny 를 통해 설정 한다

  • systemctl stop firewalld ; systemctl disable firewalld

" 네트워크 매니저 " : 일반적으로 워크 스테이션 용 OS 에서 자동으로 WIFI 를 연결하거나, IP 주소를 변경했을 때, 이를 설정 파일에 즉시 적용하고, 재 활성화 시키는 기능이 포함되어 있어, 일반 사용자들에게는 편리한 도구이다

  • 우리는 서버를 관리하는 입장이므로, 이를 꺼주자
  • systemctl stop NetworkManager ; systemctl disable NetworkManager

" SElinux " : 서버 내부 자원으로의 접근에 대한 보안 설정을 담당한다. 일반적으로 애플리케이션들의 기본 경로등을 변경하는 작업을 하지 못하도록 차단한다

  • KVM 에서 이미지의 기본 저장 경로는 /usr/lib/... 에 있다. 우리는 이를 외부에 있는 /cloud 를 사용해야 하므로, 별도의 디렉터리와의 mount 가 필요하다. 기본적으로 이러한 작업을 SElinux 는 차단한다. 따라서, 우리는 이를 꺼줘야 한다
  • setenforce 0
  • sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

가상 머신 3 개 모두 설정해주자

6. 인터페이스 ens 32 이름 변경

  • kvm 1 과 kvm 2 의 인터넷에 연결되고, 공인 주소가 할당된 ens 32 의 이름을 eth 0 으로 바꿔주자

  • vi /etc/default/grub 을 열고 다음과 같이 수정하자

  • 이는 bios 와 net 의 이름을 가지고, 자동으로 인터페이스의 이름을 설정하는 것 을 OFF 한 것 이다

  • 위 디렉터리로 들어가 파일을 확인하고, 이름을 바꿔주자

  • 확인까지 해주자

  • 다음 파일을 편집기로 열어주자

    • BOOTPROTO : 부팅시 자동으로 실행될 PROTOCOL
    • UUID : 각 디바이스 별로 정해져있는 Unique 한 주소. UUID 를 지워도, 자동으로 생성되기에, 지우자

  • kvm2 도 설정해주자

7. 변경 내용을 부팅시 읽어들이는 Kernel 에 적용

  • 위 코드를 통해 kvm 1 , kvm 2 에 적용해주자
  • 재부팅 해주자

8. ens 33 , ens 34 파일 수정

  • 각각 eth 1 과 eth 2 로 수정하고, 커널에 적용시켜야 한다. 이후, 재부팅 해줘야 한다
  • 파일 이름을 변경해주자
  • ens33 을 eth1 로 설정
  • 파일 이름 변경
  • ens34 를 eth2 로 설정
  • 변경 사항을 Kernel 에 적용
  • 설정이 끝났으면 재부팅 해주자

9. KVM 설치

yum -y install libvirt qemu-kvm virt-install virt-manager openssh-askpass libguestfs-tools 

  • 위 코드를 입력하여 KVM 을 설치해주자
    • libvirt : KVM 데몬 ( 실제 이름은 libvirtd 이므로 systemctl start libvirtd 를 통해 시작한다 )
    • qemu-kvm : vm 의 kernel 의 os 가 다르면, kvm 과 직접 통신이 안되므로, 이를 해석하는 기능이 필요하다. qemu-kvm 은 이 vm 의 kernel 과 host의 kernel 사이에 배치되어 둘 사이의 코드 변환을 해주는 모듈 이다
    • virt-install : 가상 머신 설치를 위한 cli 도구. 이는 가상 shell 인 virsh 를 이용하여, KVM 에게 명령을 전달한다. 즉 ) virt-install -> virsh -> libvirtd 순으로 전달한다
    • openssh-askpass : 독립적인 호스트에서는 필요하지 않다. 두 대 이상의 호스트가 연결되어 있고, 각 호스트에 있는 가상 머신을 타 호스트로 마이그레이션 하고자 하는 경우, 이를 승인하기 위한 도구가 필요하다. 이를 담당하는 것이 openssh-askpass 이다. 결국 vm 의 이동은 ssh 를 이용하는 것 이다
    • libguestfs-tools : 일반적인 iso 파일을 이용하여 가상 머신을 설치하는 것이 아니라, virt-customize, virt-builder 를 이용하여 필요한 볼륨을 생성하고자 하는 경우, 기본 이미지에 대한 수정이 가능해야 하는데, 이를 담당하는 것이 libguests-tools 에 포함되어 있다. 여가에 virt-customize , virt-resize , virt-builder 와 같은 커스텀용 도구들이 포함되어 있다

10. STORAGE 에 NFS 설정

  • 이제 우리는 storage 에 있는 /cloud 를 kvm1 , kvm2 의 /remote 에서 mount 하여 사용할 예정 이다
  • nfs-utils 를 설치해주자. utils 에 서버와 클라이언트용 도구가 모두 포함되어 있다
  • hosts 파일을 열어주자
  • 파일에 다음과 같이 추가해주자. 각 주소에 대한 이름들을 추가한 것 이다

cloud 디렉터리 설정

  • exports 파일을 편집기로 열어주자
  • 위와 같이 설정한다. host 에 Ip 주소를 등록했기에, Ip 주소를 따로 작성하지 않아도 된다
  • cloud 디렉터리의 퍼미션을 777로 변경해주자

nfs-server 활성화

  • nfs-server 를 활성화하고, 시작시키자

11. KVM 1 & KVM 2 에 NFS 설정 및 Mount

  • 아래의 과정을 각각 해주자

    1. nfs-utils 설치하기
    2. vi /etc/hosts 파일에 아래의 내용입력하기

      172.16.1.101 kvm1
      172.16.1.102 kvm2
      172.16.1.100 storage

    3. 로컬에 /remote 디렉토리 생성하기
    4. mount 를 이용하여 storage:/cloud 에 있는 디렉토리를 로컬의 /remote 에 마운트 시킨다.
    5. kvm1 에서 /remote 에 생성한 test.txt 파일을 kvm2 에서 ls /remote 했을 때 볼 수 있어야 한다
    6. 재부팅 이후에도 위에서 설정한 마운트 정보를 계속 유지되어야 한다!!
  • 먼저, nfs-utils 를 설치하자

  • 다음으로 hosts 파일을 수정하자

  • 로컬에 remote 디렉터리를 생성하자

  • mount 시켜주자

  • txt 파일을 만들어서 잘 mount 됬는지 확인하자

  • 이 mount 는 재부팅시 해제되므로, 부팅시 자동으로 mount 되게 설정하자

  • fstab 파일을 편집기로 열어주자

  • 위와 같이 설정해주자

    • 차례대로 마운트 해줄 곳, 마운트 할 곳, 타입, 속성, 파일 시스템 체크 여부, Dump 사용 여부 이다
profile
멋진 엔지니어가 될 때까지

1개의 댓글

comment-user-thumbnail
2022년 8월 1일

감사합니다

답글 달기