VM 서비스용 서버 환경 만들기
개인적으로 public cloud 에서 VM 1개를 사용 중에 있습니다.
2core, 4GB RAM, 128GB Disk를 사용하고, 매달 60$ 를 지급합니다. (2024년 Cloudway)
Debian Linux에 들어가, cpuinfo를 확인해보면, Skylake 기반입니다.
사무실에 32 physical core를 가진 cascadelake CPU 서버가 놀고 있어,
이것으로 VM 서비스가 가능한 환경을 꾸미기로 마음 먹었습니다.
32 pcore를 hyperthread를 켜고 (64 vcore) , 300% overcommit 을 적용한다면,
24개 8core VM을 만들 수 있습니다.
1개 창고에 박혀 있는 서버를,
24개 8core, 16GB, 500GB VM을 24개의 서버로 재탄생 시키는 것입니다.
OS설치
- RHEL 8.4 설치
- Software selection : GUI Server 선택
- Add on : debugging, development tools, system-tools, virtualization-client, virtualization-hypervisor, virtualization-tools
- 가상화 관련 3가지는 반드시 필요(virtualization-client, virtualization-hypervisor, virtualization-tools)
- 디스크 구성시 ext4 선택할것. /home 디렉토리는 파티션 구성하지 말것
- 계정은 root 와 사용자계정 둘다 필요하므로 둘다 등록
IP 설정
- 10G NIC인 ens3f0에 vlan 180을 tagged로 만들어 IP 설정
nmcli con add type vlan con-name ens3f0.180 dev ens3f0 id 180
nmcli con show
nmcli con mod ens3f0.180 ipv4.add 10.1.180.107/24 ipv4.gateway 10.1.180.1 ipv4.method manual
nmcli con up ens3f0.180
hostname 설정
- hostname은 myvdi번호 와 같이 설정
ostnamectl –transient –static set-hostname myvdi1
/home 파티션 없애기
- 일부 서버에 설치된 13M 공간 /home 파티션 내용 백업 후 삭제, 그리고 복원
- fstab에서도 home이 다시 마운트 되지 않도록 삭제
PV 삭제
- 이전 설치과정에서 생성된 엄청나게 많은 PV 들이 있는 서버가 존재하므로 삭제
- fdisk -l 이나 pvscan , pvdisplay 등 으로 확인
- pvremove 로 지워지지 않으면 vg 부터 지운 후 시도하기
[root@myvdi1]# pvremove /dev/nvme2n1p5 PV /dev/nvme2n1p5 is used by VG cgts-vg so please use vgreduce first. (If you are certain you need pvremove, then confirm by using --force twice.) /dev/nvme2n1p5: physical volume label not removed. [root@myvdi1]# vgremove cgts-vg ### 출력되는 리스트에 대해서 y 눌러서 모두 삭제 |
- vg 삭제 후 pv 삭제 시도하면 지워짐
[root@myvdi1]# pvremove /dev/nvme2n1p5 Labels on physical volume "/dev/nvme2n1p5" successfully wiped. [root@myvdi1]# pvscan PV /dev/nvme0n1p3 VG rhel lvm2 [475.35 GiB / 0 free] PV /dev/nvme1n1p1 VG rhel lvm2 [<476.94 GiB / 0 free] Total: 2 [<952.29 GiB] / in use: 2 [<952.29 GiB] / in no VG: 0 [0 ] |
디스크 2개를 하나로 합쳐서 VM 이미지 보관소로 사용
- 두개의 디스크를 하나의 LVM으로 만들어 /var/lib/libvirt/images 위치에 마운트 하는 과정임
1) fdisk 로 파티션 생성 -> 두개의 디스크에 대해 각각 수행
ex) fdisk /dev/nvme3n1
2) PV 생성 -> 2개의 디스크에 대해 각각 수행
ex) pvcreate /dev/nvme2n1p1 /dev/nvme3n1p1 → 2개 동시에 해도 됨
3) VG 생성 -> 2개의 pv에 대해 volume group으로 묶음
ex) vgcreate stg /dev/nvme2n1p1 /dev/nvme3n1p1
4) LV 생성 -> 1개만 만듬
ex) lvcreate -n storage -l 100%FREE stg -> -l은 대문자 I가 아니라 소문자 L임.
stg라는 pv name, 모든 공간을 할당, storage라는 logical name 할당
5) filesystem format -> 최종 사용할 볼륨인 LV가 생성되었으므로 포맷 필요
ex) mkfs.ext4 /dev/stg/storage
6) 마운트 및 재부팅시 반영되도록 fstab 에 추가
ex) mount /dev/mapper/stg-storage /var/lib/libvirt/images/
/etc/fstab 에 설정 추가
ex) /dev/mapper/stg-storage /var/lib/libvirt/images ext4 defaults 1 2
재부팅하여 잘 동작하는지 확인
bridge 설정
- vlan 에 IP가 있는 상태에서 세팅이라 ssh 통신이 끊겨 IPMI로 해야 할 수도 있는 작업임
- vlan i/f에 IP가 설정된 상태에서 bridge 설정하는 방법
다음과 같이 vlan i/f에 IP가 설정된 상태에서,
nmcli con add type vlan con-name ens3f0.180 ifname ens3f0.180 dev ens3f0 id 180 nmcli con mod ens3f0.180 ipv4.add 10.251.180.107/24 ipv4.gateway 10.251.180.1 ipv4.method manual nmcli con up ens3f0.180 |
- ssh 접속해서 브릿지를 연결하고자 할 때 다음 방법으로 진행한다.
nmcli con add type bridge ifname lbr-mgmt.180 con-name lbr-mgmt.180 nmcli con mod ens3f0.180 master lbr-mgmt.180 slave-type bridge nmcli con mod lbr-mgmt.180 ipv4.addr 10.1.180.107/24 ipv4.gateway 10.1.180.1 ipv4.method manual nmcli con up lbr-mgmt.180 nmcli con up ens3f0.180 |
- ens3f1 에 vlan 137 할당 without IP address
nmcli con add type bridge ifname lbr-mgmt.137 con-name lbr-mgmt.137 nmcli con add type vlan con-name ens3f1.137 ifname ens3f1.137 dev ens3f1 id 137 nmcli con mod ens3f1.137 master lbr-mgmt.137 nmcli con mod lbr-mgmt.137 ipv4.method disabled ipv6.method ignore nmcli con up lbr-mgmt.137 |
- 재부팅해서 문제없는지 확인
- 단순 bridge 와 vlan 생성 예 . 2개 NIC에 vlan 241을 가진 bridge를 각각 만듬 (without IP address)
브릿지를 잘못 연결하면 루프 생기므로 주의 또 주의하여 설정하도록 한다.
nmcli con add type bridge con-name lbr-mgmt.241 ifname lbr-mgmt.241 nmcli con add type vlan con-name ens3f0.241 ifname ens3f0.241 dev ens3f0 id 241 master lbr-mgmt.241 nmcli con mod lbr-mgmt.241 ipv4.method disabled ipv6.method ignore nmcli con up lbr-mgmt.241 nmcli con add type bridge con-name lbr-mgmt.241-1 ifname lbr-mgmt.241-1 nmcli con add type vlan con-name ens3f1.241 ifname ens3f1.241 dev ens3f1 id 241 master lbr-mgmt.241-1 nmcli con mod lbr-mgmt.241-1 ipv4.method disabled ipv6.method ignore nmcli con up lbr-mgmt.241-1 |
파일 삭제 시 확인할 수 있도록 설정
- root 및 admin의 .bashrc에 다음 내용 넣을것.
alias rm= 'rm -i' alias cp= 'cp -i' alias mv= 'mv -i' alias vi= 'vim' |
→ redhat 8.4 설치 시 alias vi=’vim’ 는 빠져 있으므로 추가할 것
vlan과 bridge 한번에 설정
nmcli con show nmcli con add type bridge ifname lbr-mgmt.240 con-name lbr-mgmt.240 ipv4.addr 10.1.240.25/24 ipv4.gateway 10.1.240.1 ipv4.method manual nmcli con add type vlan con-name enp4s0f0.240 ifname enp4s0f0.240 dev enp4s0f0 id 240 master lbr-mgmt.240 bridge link show ## bridge 연결상태 확인 nmcli con up enp4s0f0.240 nmcli con up lbr-mgmt.240 |