생성되어 있는 인스턴스에 대한 관리와 관련된 명령어
1. 인스턴스 목록 확인
- virsh list --all 명령어로 실행 중이거나 중지된 모든 가상 머신(인스턴스) 의 목록을 확인할 수 있습니다.
virsh list --all
2. 인스턴스 시작
- virsh start vm 명령어로 중지된 가상 머신을 시작할 수 있습니다.
- vm은 실제 인스턴스의 이름으로 교체되어야 합니다.
virsh start vm
3. 인스턴스 종료
- virsh destroy vm 명령어로 실행 중인 가상 머신을 강제로 종료할 수 있습니다. 이 명령어는 인스턴스를 강제 종료시키며, 종료 시 데이터를 잃을 수 있으므로 신중히 사용해야 합니다.
virsh destroy vm
4. 인스턴스 재부팅
- virsh reboot vm 명령어로 가상 머신을 재부팅할 수 있습니다.
- vm은 재부팅할 인스턴스의 이름입니다.
virsh reboot vm
5. 인스턴스 삭제 및 볼륨 제거
- virsh undefine vm --remove-all-storage 명령어를 사용하면 가상 머신을 삭제하고, ****연관된 모든 저장소(디스크 볼륨)****를 함께 삭제할 수 있습니다.
- 이 명령어는 가상 머신의 정의를 제거하고, 관련된 디스크 볼륨도 삭제합니다.
virsh undefine rocky17 --remove-all-storage
- rocky17 가상 머신이 삭제되고, 그와 관련된 디스크 볼륨(hda와 /remote/Rocky8.qcow2)도 제거된 것을 확인할 수 있습니다.
이미지 수정과 관련된 도구들
1. virt-customize
- 기능: 이미지를 수정하는 데 사용되는 도구입니다. 이 도구를 통해 이미지 내부의 설정을 변경하거나 소프트웨어를 설치하는 등의 작업을 할 수 있습니다.
- 제약: 이미지 크기를 늘리는 것은 불가능합니다. 즉, 이미지의 용량을 증가시키고 싶다면 virt-resize를 사용해야 합니다.
- 사용 예시:
- 패스워드 지정
- 파일 복사
- 추가 소프트웨어 설치
- 초기화면에서 실행될 명령어 지정 등
virt-customize -a image.qcow2 --password root:password
virt-customize -a image.qcow2 --install vim,git
2. virt-resize
- 기능: 이미지를 크기 변경할 수 있는 도구입니다. 이 도구를 사용하면 이미지의 크기를 확장할 수 있습니다.
- 제약: 이미지를 늘릴 때만 사용하며, 이미지를 축소하는 기능은 제공하지 않습니다.
virt-resize --expand /dev/sda1 image.qcow2 expanded_image.qcow2
3. virt-builder
- 기능: 온라인에서 이미지를 다운로드한 후, 이를 수정하는 도구입니다. virt-builder는 이미지를 가져와서 virt-customize를 사용해 이미지를 수정하거나, virt-resize를 이용해 볼륨 크기 조정도 할 수 있습니다.
- 속도: 인터넷을 통해 이미지를 다운로드하고 수정 작업을 하므로, 속도가 느릴 수 있습니다.
virt-builder ubuntu-20.04 --root-password password:root --install vim
virt-customize
가상 머신 이미지를 사용자 맞게 커스터마이즈할 수 있는 도구입니다. 이 도구를 사용하면, 이미 만들어진 이미지에 다양한 설정을 추가하거나, 패키지 설치, 파일 업로드, 명령어 실행 등을 자동화할 수 있습니다.
virt-customize 주요 기능 및 옵션 설명
- 루트 패스워드 지정
- 루트 계정의 비밀번호를 설정할 수 있습니다.
- image.qcow2 이미지에 루트 패스워드를 test123으로 설정합니다.
- virt-customize --root-password password:test123 -a /path/to/image.qcow2
- 웹서버 설치 및 자동 실행 설정
- 웹서버(예: httpd)를 이미지에 설치하고, 인스턴스가 부팅되면 자동으로 실행되도록 설정할 수 있습니다.
- -first-boot: 가상 머신이 처음 부팅할 때 실행할 명령어를 지정합니다. 예를 들어, 웹서버를 시작하는 명령을 설정할 수 있습니다.
- virt-customize --first-boot "systemctl start httpd" -a /path/to/image.qcow2
- -run-command: 이미지를 부팅한 후 실행할 명령어를 지정합니다. 예를 들어, 웹서버를 자동으로 시작하도록 설정하는 명령입니다.
- virt-customize --run-command "systemctl enable httpd" -a /path/to/image.qcow2
- 파일 업로드
- 로컬에 있는 파일을 이미지 내의 특정 위치로 업로드할 수 있습니다. 예를 들어, 로컬에서 준비한 index.html 파일을 업로드하려면:
이 명령은 로컬에 있는 index.html 파일을 이미지 내의 /var/www/html/index.html로 업로드합니다.
- ```bash virt-customize --upload /path/to/index.html:/var/www/html/index.html -a /path/to/image.qcow2 ```
- 패키지 설치
- 가상 머신 이미지 내에 필요한 패키지를 미리 설치할 수 있습니다. 예를 들어, 웹서버 설치를 위한 패키지 설치는 다음과 같이 할 수 있습니다.
이 명령은 httpd 패키지를 이미지 내에 설치합니다.
- ```bash virt-customize --install httpd -a /path/to/image.qcow2 ```
- 인스턴스 처음 부팅 시 실행할 명령어
- -first-boot 옵션은 인스턴스가 처음 부팅될 때 한 번만 실행되는 명령어를 지정합니다. 예를 들어, 웹서버를 시작하는 명령어를 지정할 수 있습니다.
- virt-customize --first-boot "systemctl start httpd" -a /path/to/image.qcow2
Bridge 이용하기: 가상 네트워크 구성 및 인스턴스 설치
- Bridge 네트워크 설정 준비
- 먼저, /etc/sysconfig/network-scripts/ 디렉토리로 이동하여, 기존의 ens160 네트워크 설정 파일을 br0 브리지 인터페이스로 복사합니다.
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens160 ifcfg-br0
- ifcfg-ens160 파일 수정
- ens160 네트워크 인터페이스의 설정에서 브리지 인터페이스를 사용하도록 수정합니다. BRIDGE=br0를 추가하여 브리지 인터페이스 br0를 사용하도록 합니다.
cat ifcfg-ens160
# 수정된 내용:
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
BRIDGE=br0
- ifcfg-br0 파일 설정
- br0 브리지 인터페이스의 IP 주소, 서브넷, 게이트웨이 등을 설정합니다. 이 파일에서 IP 주소와 네트워크 설정을 정의합니다.
cat ifcfg-br0
# 설정 예시:
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=211.183.3.102
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
- 네트워크 서비스 재시작
- 설정한 네트워크 변경을 반영하기 위해 NetworkManager를 재시작하고, nmcli 명령어를 사용해 네트워크를 껐다가 다시 켭니다.
systemctl restart NetworkManager
nmcli net off && nmcli net on
- 가상 머신 이미지 복사 및 수정
- /remote 디렉토리에서 Rocky-8 이미지를 복사하고, virt-customize 명령어를 사용해 이미지에 루트 패스워드를 설정합니다.
cp /remote/Rocky-8-GenericCloud-Base.latest.x86_64.qcow2 /remote/myrocky1.qcow2
virt-customize -a /remote/myrocky1.qcow2 --root-password password:test123
- 가상 머신 생성 및 브리지 네트워크 설정
- virt-install 명령어를 사용하여 myrocky1이라는 이름의 가상 머신을 생성하고, 브리지 네트워크(br0)를 설정합니다.
virt-install --name myrocky1 --vcpus 1 --ram 1024 --disk /remote/myrocky1.qcow2 --import --network bridge:br0 --graphics none --noautoconsole
- 가상 머신 콘솔 접속
- virsh console 명령어를 사용하여 생성된 가상 머신(myrocky1)의 콘솔에 접속합니다.
virsh console myrocky1
가상 머신 생성 및 설정 과정
- virt-builder 명령어로 이미지 생성 및 설정
virt-builder centosstream-9 --format qcow2 --size 8G -o /remote/mycentos9.qcow2 --root-password password:test123 --install httpd --upload /remote/index.html:/var/www/html/index.html --firstboot-command 'setenforce 0' --firstboot-command 'systemctl start httpd' --selinux-relabel
- -format qcow2: 이미지를 qcow2 형식으로 생성.
- -size 8G: 생성할 이미지의 크기를 8GB로 설정.
- o /remote/mycentos9.qcow2: 생성된 이미지를 /remote/mycentos9.qcow2 경로에 저장.
- -root-password password:test123: 루트 패스워드를 test123으로 설정.
- -install httpd: httpd 웹 서버를 설치.
- -upload /remote/index.html:/var/www/html/index.html: 로컬의 index.html 파일을 가상 머신의 /var/www/html/index.html로 업로드.
- -firstboot-command 'setenforce 0': 가상 머신 첫 부팅 시 SELinux 모드를 0 (비활성화)로 설정.
- -firstboot-command 'systemctl start httpd': 첫 부팅 시 httpd 서비스를 시작.
- -selinux-relabel: SELinux 정책에 맞게 이미지 내 파일 시스템을 재레이블.
- virt-builder 명령어를 사용하여 CentOS Stream 9 기반의 가상 머신 이미지를 생성하고, 여러 설정을 추가합니다.
- virt-install 명령어로 가상 머신 생성
virt-install --name myrocky2 --vcpus 2 --ram 2048 --disk /remote/mycentos9.qcow2 --import --network bridge:br0 --graphics none --noautoconsole
- -name myrocky2: 가상 머신의 이름을 myrocky2로 지정.
- -vcpus 2: 2개의 가상 CPU를 할당.
- -ram 2048: 2GB의 RAM을 할당.
- -disk /remote/mycentos9.qcow2: /remote/mycentos9.qcow2 이미지를 사용하여 디스크를 설정.
- -import: 기존 이미지를 가져와서 사용.
- -network bridge:br0: br0 브리지 네트워크를 사용하여 네트워크 연결.
- -graphics none: 그래픽을 사용하지 않음 (헤드리스 모드).
- -noautoconsole: 자동으로 콘솔을 연결하지 않음.
- virt-install 명령어를 사용하여 mycentos9.qcow2 이미지를 기반으로 myrocky2라는 가상 머신을 생성하고 설정합니다.
Compute 노드에 저장소 설정 및 Open vSwitch 설치 과정
- OpenStack 저장소 추가
dnf -y install <https://repos.fedorapeople.org/repos/openstack/archived/openstack-yoga/rdo-release-yoga-1.el8.noarch.rpm>
- OpenStack Yoga 저장소를 추가하기 위해, 아래 명령어를 사용하여 저장소 RPM 파일을 설치합니다:
- 기존 저장소 파일 백업
cd /etc/yum.repos.d/
mv Rocky-* /remote
ls
- 백업된 파일 목록:
- advanced-virtualization.repo
- messaging.repo
- rdo-release.repo
- ceph-pacific.repo
- nfv-openvswitch.repo
- rdo-testing.repo
- 기존의 문제 없는 저장소 파일들을 백업하기 위해 /etc/yum.repos.d/ 디렉토리로 이동 후, 저장소 파일들을 /remote로 이동시킵니다.
- 저장소 경로 수정
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/*
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/*
- 기존의 저장소 파일에서 baseurl 경로를 변경하고, mirrorlist를 주석 처리하여 경로를 변경합니다. 아래 명령어를 사용하여 모든 저장소 파일에서 경로를 수정합니다:
- 백업한 저장소 파일 복원
mv /remote/*.repo .
ls
- 복원된 저장소 파일 목록:
- advanced-virtualization.repo
- Rocky-BaseOS.repo
- Rocky-Plus.repo
- ceph-pacific.repo
- Rocky-Debuginfo.repo
- Rocky-PowerTools.repo
- messaging.repo
- Rocky-Devel.repo
- Rocky-ResilientStorage.repo
- nfv-openvswitch.repo
- Rocky-Extras.repo
- Rocky-RT.repo
- rdo-release.repo
- Rocky-HighAvailability.repo
- Rocky-Sources.repo
- rdo-testing.repo
- Rocky-Media.repo
- Rocky-AppStream.repo
- Rocky-NFV.repo
- /remote 디렉토리에 백업된 저장소 파일들을 원래 위치로 복원합니다:
- Open vSwitch 설치
dnf -y install openvswitch libibverbs
- Open vSwitch와 관련된 패키지들을 설치합니다:
- Open vSwitch 상태 확인 및 실행
systemctl status openvswitch
systemctl start openvswitch
- Open vSwitch가 정상적으로 동작하는지 확인하고, 필요 시 서비스를 시작합니다.