KVM 복습하기1(nfs)

양승현·2022년 8월 7일

kvm

목록 보기
4/4

powerputty 오류

  • powerputty 접속시 아래와 같은 퍼블릭 키 이슈가 나와 다음과 같이 해결하였습니다.
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic).

  • vi /etc/ssh/sshd_config에 접속하여 63라인을 no에서 yes로 변경해주고 수정 후 systemctl restart sshd를 해주었습니다. 이 후 비밀번호를 통해 접속하였습니다.

KVM

공유 저장소 생성하기

  • storage는 /cloud
  • kvm1/2는 /remote

1. yum -y install nfs-utils

  • 서버의 역할을 하게되는 storage 뿐만 아니라 클라이언트 역할을 하는 kvm1/2에 설치하게 되면 storage는 서버를 동작 시키면되고 클라이언트로 동작하게하여 마운트하게 한다.

2. vi /etc/exports

  • /cloud kvm1(rw,sync,no_root_squash)
/cloud  kvm1() - 클라우드 디렉터리를 kvm1번에게
rw - 읽고쓰도록 권한을 주고
sync - 동기화되도록하게 
no_root_squash - kvm1번의 root 계정이 storage에서도 root로 동작할 수 있게끔한다.
  • /cloud kvm2(rw,sync,no_root_squash)
/cloud  kvm2() - 클라우드 디렉터리를 kvm2번에게
rw - 읽고쓰도록 권한을 주고
sync - 동기화되도록하게 
no_root_squash - kvm2번의 root 계정이 storage에서도 root로 동작할 수 있게끔한다.

3. chmod 777 /cloud/

  • kvm1/2에게 데이터에 대한 작성(읽기,쓰기)이 가능하도록 권한을 부여한다.
[root@storage ~]# systemctl start nfs-server

서버 동작

[root@storage ~]# systemctl enable nfs-server

서버 부팅시 자동으로 활성화

4. kvm1,2에 /remote 공유 디렉터리 생성 및 마운트

[root@kvm1 ~]# mkdir /remote
[root@kvm2 ~]# mkdir /remote
  • 같은 이름을 가진 remote 디렉터리를 생성해야 한다.
[root@kvm1 ~]# mount -t nfs storage:/cloud /remote
[root@kvm2 ~]# mount -t nfs storage:/cloud /remote
  • storage에 있는 /cloud 디렉터리를 kvm1,2에 있는 /remote 디렉터리와 마운트 되게 한다.
[root@kvm1 ~]# mount | grep /remote

[root@kvm2 ~]# mount | grep /remote

  • 마운트가 잘 되었는지 다음과 같이 확인한다.

  • 파일을 공유하는지 확인한다.

5. 마운트 정보를 재부팅해도 유지 될수 있도록 설정

  • vi /etc/fstab 디렉터리에 접속하여 파일 수정
[root@kvm1 ~]# vi /etc/fstab
[root@kvm2 ~]# vi /etc/fstab
  • kvm1/2가 재부팅을 하더라도 파일의 정보를 공유할 수 있도록 설정해준다.

가상 머신의 영역XML(computing) + disk(vm 머신들의 데이터 저장 공간)

  • kvm1 - storage에 kvm1이 사용할 volume(Disk)를 먼저 만들어 놓고 kvm1에는 xml 파일을 생성해서 연결한다
  • kvm2 - storage에는 가상머신 설치를 진행하면서 동시에volume(Disk)를 만들어 놓는다.

1. qemu-img create -f qcow2 /remote/centos1.qcow2 10G

[root@kvm1 ~]# qemu-img create -f qcow2 /remote/centos1.qcow2 10G
[root@kvm2 ~]# qemu-img create -f qcow2 /remote/centos2.qcow2 10G

  • /remote 아래에 /centos1.qcow2의 이름으로 10G 크기로 볼륨을 생성한다.

2.1 인스턴스 설치 [kvm1]

[root@kvm1 ~]# virt-install --name centos1 --vcpus 1 --ram 1024 --disk /remote/centos1.qcow2 --network network:default --graphics vnc,port=5901 --location /remote/centos7.iso --noautoconsole
--name centos1 -> 가상 머신의 이름을 centos1로 한다.
--vcpus 1 -> cpu 수는 1개이다.
--ram 1024 -> rma은 1기가이다.
--disk /remote/centos1.qcow2 -> 디스크는 /remote아래에 있는 centos1이다.
--network network:default -> 기본 네트워크 사용
--graphics vnc,port=5901 -> 설치후 그래픽 환경은 vnc포트(5900)를 사용하고 포트포워딩을 할 경우 port 번호를 5901로 할당한다.(할당하지 않을 경우 자동으로 포트 번호를 할당해준다.)
--location /remote/centos7.iso -> contos7.iso 미디어를 통해 설치를 진행한다.
--noautoconsole -> 자동으로 콘솔을 연결하는 것은 필요하지 않기에 다음과 같이 설정한다.

2.2 인스턴스 설치 [kvm2]

[root@kvm2 ~]# virt-install --name centos2 --vcpus 1 --ram 1024 --disk /remote/centos2.qcow2 --network network:default --graphics vnc,port=5902 --location /remote/centos7.iso --noautoconsole

OR
[root@kvm2 ~]# virt-install --name centos2 --vcpus 1 --ram 1024 --disk /remote/centos2.qcow2,format=qcow2,size=10 --network network:default --graphics vnc,port=5902 --location /remote/centos7.iso --noautoconsole
--name centos2 -> 가상 머신의 이름을 centos2로 한다.
--vcpus 1 -> cpu 수는 1개이다.
--ram 1024 -> rma은 1기가이다.
--disk /remote/centos1.qcow2 -> 디스크는 /remote아래에 있는 centos1이다.
--network network:default -> 기본 네트워크 사용
--graphics vnc,port=5902 -> 설치후 그래픽 환경은 vnc포트(5900)를 사용하고 포트포워딩을 할 경우 port 번호를 5902로 할당한다.(할당하지 않을 경우 자동으로 포트 번호를 할당해준다.)
--location /remote/centos7.iso -> contos7.iso 미디어를 통해 설치를 진행한다.
--noautoconsole -> 자동으로 콘솔을 연결하는 것은 필요하지 않기에 다음과 같이 설정한다.

2.3 TEST

  • network & hostname 설정
  • 자동으로 시작되도록 Automatically 설정 체크
  • IPv4 method 설정은 Automatic으로 설정
  • IP 확인
  • root/user 설정

3. 호스트가 재부팅이 될 때 호스트에 연결된 centos도 같이 재부팅하게 하기

  • 다음과 같은 명령어로 인스턴스 상태 확인 해보면
    호스트 안의 가상 머신은 재부팅이 되지 않는다.
[root@kvm1 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     centos1                        shut off
  • 호스트가 재부팅이 될 때 호스트 안에 설치된 가상 머신은 재부팅이 되지 않는다. 그렇기 때문에 다음과 같은 설정을 해주어 호스트 안 가상 머신도 재부팅 하게 해준다.
[root@kvm1 ~]# virsh autostart centos1
[root@kvm2 ~]# virsh autostart centos2
  • centos 실행
[root@kvm1 ~]# virsh start centos1
[root@kvm2 ~]# virsh start centos2

4.1 네트워크 & 기본구조 확인 하기

  • centos1 구조 확인
[root@kvm1 ~]# virsh dumpxml centos1
  • centos1 default 네트워크 확인
[root@kvm1 ~]# virsh net-dumpxml default
<name>default</name>
  <uuid>2e48078a-fa70-49d9-8a02-a2d200e71664</uuid>
 <forward mode='nat'>   ---> default network는 nat을 제공한다.
    <nat>
      <port start='1024' end='65535'/>  ---> 연결된 가상머신들은 1024~65535 사이의 포트를 사용해 외부와 연결한다.
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/> ---> 연결된 스위치는 virbr0에 연결된다.
  <mac address='52:54:00:bf:a3:3b'/>
  <ip address='10.10.10.1' netmask='255.255.255.0'>  ---> 해당 스위치는 10.10.10.1의 IP를 가지고 있고
    <dhcp>
      <range start='10.10.10.201' end='10.10.10.239'/>  ---> 연결된 가상머신들은 201에서 239 사이의 IP를 할당 받는다.
    </dhcp>
  </ip>
  • centos1 구조 편집하기
[root@kvm1 ~]# virsh edit centos1

4.2 kvm1/2 default 네트워크 편집하기

[root@kvm1 ~]# virsh net-edit default
[root@kvm2 ~]# virsh net-edit default

  • 네트워크 종료
[root@kvm1 ~]# virsh net-destroy default
[root@kvm2 ~]# virsh net-destroy default
  • 네트워크 시작
[root@kvm1 ~]# virsh net-start default
[root@kvm2 ~]# virsh net-start default
  • ifconfig로 변경 내용 확인
[root@kvm1 ~]# ifconfig
[root@kvm2 ~]# ifconfig

4.3 가상머신 centos1/2 재시작

  • 가상머신 centos1/2 재시작
[root@kvm1 ~]# virsh reboot centos1
[root@kvm2 ~]# virsh reboot centos2
  • 가상머신 centos1/2 IP 확인
[root@kvm1 ~]# virsh domifaddr centos1
[root@kvm2 ~]# virsh domifaddr centos2
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:a7:2f:74    ipv4         10.10.10.81/24

migrate

  • centos migrate 해보기

새로운 네트워크(스위치) 생성하고 인스턴스와 연결하기

1. 새로운 네트워크(스위치) private.xml 생성하기

  • 파일 생성
[root@kvm2 ~]# touch private.xml
[root@kvm2 ~]# virsh net-edit default
[root@kvm2 ~]# vim private.xml

  • 가상 네트워크 설정 파일 private.xml를 바탕으로 새로운 가상 네트워크를 정의
[root@kvm2 ~]# virsh net-define private.xml
[root@kvm2 ~]# virsh net-list --all

  • 가상 네트워크 시작
[root@kvm2 ~]# virsh net-start private2
  • 가상 네트워크 자동으로 시작
[root@kvm2 ~]# virsh net-autostart private2

  • 가상 네트워크 변경
[root@kvm2 ~]# virsh attach-interface --domain centos2 --type network --source private2 --model virtio --config --live
  • 위와 같이 가상 네트워크를 생성하여 변경해주어야 centos1/2가 서로 migrate가 가능하다.

0개의 댓글