VDI 서비스 – VM 서버 환경 (VM Host setup)

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 설정

hostname 설정

  • hostname은 myvdi번호 와 같이 설정

/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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다