https://www.fiber-optic-tutorial.com/nas-vs-san-differences.html/nas-vs-san
https://www.vembu.com/blog/type-1-and-type-2-hypervisor/
https://docs.oracle.com/cd/E69402_01/html/E74916/archover.html
KVM1
KVM2
STORAGE
virtual network editor
KVM1 생성
disk: 20GB
power on this vm after creation 체크해제
메모리 6144mb
processors: core 1, processors 4
VT-x 체크
CD/DVD(autoinst.iso) 제거
usbcontroller, soundcard, printer 제거
network adapter: vmnet10
network adapter 2: vmnet1
network adapter 3: vmnet2
KVM2도 같은 방식으로 생성
(간혹 Clone을 했을 때 인터페이스 문제가 발생하기도 함)
STORAGE도 같은 방식으로 생성
disk 120GB
RAM 2048 mb
processors: core 1, processors 2
VM power on
install centos7
date/time: seoul
[KVM1, KVM2]
software selection: server with GUI
[STORAGE]
software selection: minimal installation
installation destination -> i will continue partitioning
swap: 4096, /boot: 1024, /: 15 GB, /cloud: 나머지
[KVM1]
network & hostname
ens32 (인터넷 연결용)
ens33 (스토리지 연결, 마이그레이션)
ens34 (관리용, ssh 연결)
begin installation
root password 설정
user creation -> make this user administrator 체크
KVM2와 STORAGE도 마찬가지 방식으로 설정
[kvm1/kvm2]
ifconfig
ping www.google.com
[storage]
ip addr show
ip addr list
ping www.google.com
[kvm1]
ping 211.183.3.102 -c 3
ping 172.16.1.102 -c 3
ping 172.16.2.102 -c 3
ping 211.183.3.100 -c 3
ping 172.16.1.100 -c 3
ping 172.16.2.100 -c 3
yum -y update && yum -y install net-tools curl vim git wget
vim ~/.bashrc
alias vi='vim'
-> 한 줄 추가
su
.bashrc 는 해당계정이 처음 로그인 할때 읽어들이는 파일이다. 만약 파일의 내용이 변경되었다면 이를 현재 환경에 적용하기 위해서는 1. 재 로그인(su) 2. .bashrc 파일(source ~/.bashrc)을 현재 환경에 적용시키는 방법이 있다.
방화벽: 서버에서 발생한 트래픽, 서버로 들어오는 트래픽, 서버를 통과하는 트래픽에 대한 보안 설정이 가능하다. (allow, deny)
네트워크 매니저: 일반적으로 워크스테이션용 OS에서 자동으로 wifi를 연결하거나 ip 주소를 변경했을 때 이를 설정 파일에 즉시 적용하고 재활성화시키는 기능이 있어 일반 사용자들에게는 편리한 도구이다.
SELinux: 서버 내부 자원으로의 접근에 대한 보안 설정을 담당한다. 일반적으로 애플리케이션들의 기본 경로 등을 변경하는 작업을 하지 못하도록 차단한다. KVM에서 이미지의 기본 저장 경로는 /usr/lib/...에 있다. 우리는 이를 외부에있는 /cloud를 사용해야 하므로 별도의 디렉토리와의 마운트가 필요하다. 기본적으로 SELinux는 이를 차단한다.
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@kvm1 ~]# systemctl status firewalld | grep Active
Active: inactive (dead)
[root@kvm1 ~]# systemctl status NetworkManager | grep Active
Active: inactive (dead) since Mon 2022-08-01 13:48:37 KST; 41s ago
[root@kvm1 ~]# getenforce
Permissive
참고: https://velog.io/@ptah0414/Linux-22-07-21-TIL#인터페이스-이름-변경ens32---eth0
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
-> 한 줄 수정
[root@kvm1 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm1 network-scripts]# ls ifcfg-*
ifcfg-ens32 ifcfg-ens33 ifcfg-ens34 ifcfg-lo
[root@kvm1 network-scripts]# cat ifcfg-ens32 | grep IPADDR
IPADDR=211.183.3.101
[root@kvm1 network-scripts]# vi ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=211.183.3.101
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
위와 같이 수정
[KVM2]
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=211.183.3.102
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
위와 같이 수정
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
ens33과 ens34도 마찬가지 방식으로 각각 eth1, eth2로 변경하기
[KVM1/KVM2]
yum -y install libvirt
yum -y install qemu-kvm
yum -y install virt-install
yum -y install virt-manager
yum -y install openssh-askpass
yum -y install libguestfs-tools
이제 우리는 storage에 있는 /cloud를 kvm1, kvm2의 /remote에서 마운트하여 사용할 예정이다.
https://velog.io/@ptah0414/Linux-22-07-20-TIL#nfs 참고
yum -y install nfs-utils
vi /etc/hosts
172.16.1.101 kvm1
172.16.1.102 kvm2
172.16.1.100 storage
vi /etc/exports
/cloud kvm1(rw,sync,no_root_squash)
/cloud kvm2(rw,sync,no_root_squash)
no_root_squash -> 원격지에 있는 사용자가 공유 디렉토리에서 파일을 만들었을 경우 서버 입장에서 해당 파일을 누가 만든 것으로 간주할 것인가?
만약 root_squash라고 하면 nfsnobody가 만든 것이다.
하지만 no_root_squash라고 하면 root가 만든 것이다.
systemctl enable nfs-server
systemctl start nfs-server
chmod 777 /cloud
[kvm1/kvm2]
yum -y install nfs-utils
[kvm1/kvm2]
vi /etc/hosts
172.16.1.101 kvm1
172.16.1.102 kvm2
172.16.1.100 storage
[kvm1/kvm2]
mkdir /remote
showmount -e storage
mount -t nfs storage:/cloud /remote
[kvm1]
touch /remote/test.txt
[kvm2]
[root@kvm2 ~]# ls /remote
test.txt
[kvm1/kvm2]
vi /etc/fstab
storage:/cloud /remote nfs defaults 0 0
-> 한 줄 추가
reboot
[root@kvm1 ~]# df -h | grep /cloud
storage:/cloud 101G 156M 101G 1% /remote
[kvm1/kvm2]
vi /etc/libvirt/qemu.conf
442 user = "root"
443
444 # The group for QEMU processes run by the system instance. It can be
445 # specified in a similar way to user.
446 group = "root"
442, 446 주석 제거
systemctl enable libvirtd
systemctl restart libvirtd
virtual machine manager -> file -> add connection
[KVM1]
connect to remote host 체크
hostname: kvm2
autoconnect 체크
yes 입력
root pw 입력
kvm2와 연결 설정되었음
[KVM2]
connect to remote host 체크
hostname: kvm1
autoconnect 체크
yes 입력
root pw 입력
kvm1과 연결 설정되었음
iso
-> 설치용 디스크
qcow2
-> volume(디스크)
-> os가 이미 설치되어있음
[kvm1]
cd /remote
wget http://mirror.kakao.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
[root@kvm1 remote]# virt-install --name test1 \
> --vcpus 1 \
> --ram 1024 \
> --cdrom=/remote/vyos-1.1.8-amd64.iso \
> --disk /remote/test1.qcow2,size=5 \
> --network network:default \
> --graphics vnc,port=5901 \
> --noautoconsole
KVM1에 test1 머신 생성되었음
[KVM1]
KVM2에서도 KVM1의 test1 머신을 확인할 수 있음
[KVM2]
[KVM1]
동작 중인 상태에서 kvm2로 migrate할 것임
test1 우클릭 -> migrate
advanced option -> address: kvm1, allow unsafe 체크 -> migrate
KVM2로 넘어간 것을 확인할 수 있음
[KVM1]
[KVM2]
KVM2에 있는 test1을 다시 KVM1으로 migrage해보기
[KVM2]
test1 우클릭 -> migrate
advanced option -> address: kvm2, allow unsafe 체크 -> migrate
KVM1으로 넘어간 것을 확인할 수 있음
[KVM1]
[KVM2]
[root@kvm1 remote]# ls
test1.qcow2 vyos-1.1.8-amd64.iso
-> iso로 설치하면서 qcow2 파일이 생성되었음
-> 이 qcow2를 base image로 다른 인스턴스들을 생성할 수 있음
(인스턴스들을 생성할 때 public key를 넣는 것이 좋음)
-> iso는 template용으로 쓰기에 적합하고, 클라우드에서 사용하기에는 적합하지 않음
-> 클라우드에서는 qcow2를 쓰는 것이 적합함
vrish 명령어
[root@kvm2 ~]# virsh list --all --name
test1
[root@kvm2 ~]# for vm in $(virsh list --all --name)
> do virsh destroy $vm ; done
Domain test1 destroyed
전체 종료나 삭제 명령은 없다.
실습 환경 종료하기
kvm1 -> kvm2 -> storage 순으로 종료
실습 환경 실행하기
storage -> kvm1 -> kvm2 순으로 실행
kvm1/kvm2에서 mount 정보 확인
systemctl status libvirtd
getenforce -> disable로 나와야 함
커널업데이트(yum 이용) -> https://nirsa.tistory.com/64