bxm's IT Story

Cloud #1 (KVM-Linux의 가상머신) 본문

가상화/KVM

Cloud #1 (KVM-Linux의 가상머신)

bxmsta9ram 2021. 8. 24. 11:36

## Linux 새로 생성(KVM) ##

[New Virtual Machine] - [Linux] - [CentOS7] - [KVM으로 생성]

 


## KVM(Kernel Based Virtual Machine) ##

- 운영체제 가상화 기술은 물리 호스트가 서로 다른 작업 부하를 제공하면서도 이 작업 부하들을 각각 격리할 수 있다.

 격리된 운영체제를 컨테이너라고 부른다. 

 

- 컨테이너 기반 가상화의 장점은 호스트 운영체제가 다른 운영체제(가상머신)의 시스템 호출 인터페이스를 에뮬레이션

  할 필요가 없다는 것이다. 인터페이스가 존재하지 않기 때문에, 이런 가상화에서는 다른 운영체제는 수용될 수 없다.

 

## Host OS와 Guest OS를 에뮬레이션 해주는 것을 Hypervisor라고 한다.

    Host OS 안에 다른 OS(Guest OS)를 집어넣는 것

## Docker는 Host OS가 없는데 이건 Docker 시간에 따로!


KVM]

su

lsmod | grep kvm

## 기본적으로 리눅스에서는 KVM 모듈이 내장되어 있다. 이 컴퓨터의 CPU는 Intel 꺼다~! 라는게 나옴.

 

modprobe kvm kvm_inter 

## 만약 load가 안되었으면, 수동으로 모듈이 load가 된다.


사용할 수 있는 물리적 자원보다 더 많은 가상 자원을 할당하는 방법을 'Over Commit'이라고 한다.

CPU 집약적인 작업을 실행하는 경우, vCPU를 Over Commit 하는 것은 잘못된 생각이다. 

lscpu 명령으로 cpu 토폴로지를 확인할 수 있다.

 

lscpu

## CPU의 모든 정보가 나타난다. L1, L2, L3 캐시까지 나타남.

 

또한 기본 yum 저장소가 시스템에서 활성화 되었는지 확인하려면 아래의 명령어를 사용한다.

yum repolist


##  KVM(가상화 패키지) 설치 ##

서버 또는 워크스테이션을 가상화 호스트로 변환하는 첫번째 단계로서 다음의 패키지를 설치한다.

yum -y install qemu-kvm libvirt virt-install virt-manager

설치 완료.

 

위와 같은 방법으로 설치하는 방법도 있고, 아래와 같은 명령어를 통해 설정할 수도 있다.

yum groupinstall 명령을 사용해 KVM 가상화 환경을 설정하는데 필요한 필수 패키지와 선택적 패키지를 설치할 수 있다

yum groupinstall "virtualization" -y

libvirt나 qemu-kvm 같은 핵심구성 요소와 함께 guestfs-browser, libguestfs-tools, python-libguestfs, virt-top     패키지를 설치한다. 근데 첫번째 방법으로 설치하는 방법을 권장.

 

yum -y install guestfs-browser libguestfs-tools python-libguestfs virt-top

이 방법으로도 실행이 되었다.


## libvirt 서비스 시작 ##

- KVM 가상화 패키지를 설치한 후 해야할 첫번째 일은 libvirt 서비스를 시작하는 것이다.

  libvirt 서비스를 시작하자마자 qemu-kvm 바이너리와 상호작용할 수 있는 풍부한 API가 제공된다.

  virsh나 virt-manager 같은 클라이언트는 API를 사용해 qemu-kvm과, 가상머신 라이프사이클을 관리한다.

  활성화하고 서비스를 시작하려면 다음 명령어를 실행한다.

  

  systemctl enable libvirtd && systemctl start libvirtd

## &&(AND 연산)

 

  현재 KVM의 핵심 Kernal인 libvirtd의 Version을 알고싶다면,

  libvirtd --version

libvirtd Version이 4.5.0임을 알 수 있다.

 

   virt-manager

## Linux 버전 VMWare임. 우리가 IOS용 파일(앞으로 Fedora를 이용)이 있으면 서로 Network를 연결할 수 있음. 

## Linux에서의 Network

 


## 시스템의 가상화 기능 검증 및 이해

- 가상머신을 만들기 전에 시스템의 유효성을 검사하고, KVM 가상화 호스트가 되기 위한 모든 필수 조건을 충족하는지

  확인하고, 해당 가상머신의 기능을 이해하는 것은 중요한 일이다.

- 이 정보를 알면 시스템에서 호스팅할 수 있는 가상머신의 수와 구성을 계획하는데 도움이 된다.

   virt-host-validate : 루트 권한으로 실행하며 KVM 기능의 온전성을 검사해, 호스트가 KVM 가상화를 사용하여

                                libvirt 하이퍼바이저 드라이버를 실행할 수 있게 구성되었는지 확인한다.

 

 

  ② virsh domcapabilities : libvirt 버전을 기준으로 qemu-kvm의 기능을 설명하는 xml 문서를 표시한다.

                                     가상디스크의 유형, 할당할 수 있는 vCPU의 수 등을 확인할 수 있다.

 

 

## virsh : virsh(Virtualization Shell)

  - 리눅스 시스템에서 VM과 하이퍼바이저를 관리하는 명령행 인터페이스다. 이 명령어는 libvirt 관리 API를 사용하고,

    그래픽 사용자 인터페이스인 virt-manager와 웹 기반 인터페이스 김치 프로젝트(웹 기반)의 대안으로 작동한다.

   ③ virsh nodeinfo : 시스템 하드웨어 아키텍처, CPU 토폴로지, 메모리 크기 등을 출력한다.

       virsh domcapabilities | grep -i max : 가상머신에 제공할 수 있는 최대 vCPU 정보

 

       virsh domcapabilities | grep diskDevice -A 5

 ## disk, cdrom, floppy disk, lun(기타 장치) 이런 것들을 쓸 수 있다.


## virt-manager ##

virt-manager는 libvirt를 통해 가상머신을 관리하는 파이썬 기반 데스크톱 사용자 인터페이스이다.

## [virt-manager] 또는 ["시작프로그램"->"시스템 도구"->"가상머신 관리자"]

 

스토리지 풀은 virt-manager 또는 virsh를 통해 생성할 수 있다. xml 파일은 /etc/libvirt/storage에 저장된다.

default 풀의 이미지 저장소를 다음과 같이 바꿀 수 있다.

vi /etc/libvirt/storage/default.xml

  ##<path>/varlib/libvirt/images</path> => <path>/vms</path>

      T가 바꿔놨었는데 동작을 하지 않음. 

  ## KVM도 실제로는 별거 아님. 근데 왜 KVM KVM 하냐면 돈 안들이고 서버를 구축할 수 있으니까!




## 실습 - virt-manager를 통해서 Fedora와 CentOS간에 통신이 되게끔 해보자 ##

KVM]

shutdown -h now

 

## 종료시킨 뒤에, 하드디스크를 추가해보자. [Hard disk] - [40GB 추가] 후 다시 실행.


KVM]

ls dev | more

## sdb가 방금 새로 추가한 40GB 짜리 하드디스크이다.

 

 

## 파티션 분할(나누기)

fdisk /dev/sdb

 

fdisk /dev/sdb

## p를 누르면 목록확인인데 sdb1이라고 새로 만들어진 것을 확인할 수 있음.

 


## 포맷

mkfs -t ext4 /dev/sdb1


## 마운트 시키기

cd /

mkdir /ioslib

mount /dev/sdb1 /ioslib

 

df -h

## 현재 뭐가 마운트 되었는지 확인할 수 있음. 현재 40GB짜리가 마운트 되었음을 확인할 수 있음.

 

 

## 하지만 껐다 켜면 마운트된 것이 사라진다. 편집을 해주자.

vi /etc/fstab

## 쭉~ 내려서 내용 추가하기 (ex4 형태로, defaults_자동 마운트 되라. 0이면 재부팅시 덤프 생성X, 1이면 O)

                                                               덤프 = 복사본

## 0이면 검사 안하고, 1이면 최우선순위로 검사를 하겠다. 그리고 루트 검사하고 나를 검사해달라고 하는 것은 2임.


## 재부팅한 후 자동마운트가 되었는지 확인.

df -h

그대로 Mount가 되어 있는 것을 확인할 수 있다.

 

## 브릿지로 바꾸기.

systemctl restart network

브릿지가 되지 않음. 

 

[Edit] - [Virtual Network Editor] - [change settings]

 

 

systemctl restart network

ifconfig

브릿지로 연결이 되었다.

 


vi /etc/sysconfig/selinux

원래 재부팅을 해야지 효과가 발생하는데, 재부팅을 안하고도 효과를 발휘하려면 아래의 명령어를 입력해야 한다.

setenforce 0

 

firewall-config

## 런타임 / 영구적에서 FTP 체크

 

yum -y install vsftpd

설치가 완료되었다.

 

systemctl start vsftpd.service

systemctl enable vsftpd.service

 

vi /etc/vsftpd/vsftpd.conf

## 12번째, 16번째, 19번째 확인

## 29번째 앞에 #(해시태그) 지우기

## 33번째 앞에 #(해시태그) 지우기

 

cd /var/ftp

chown ftp:ftp ./pub

chmod 777 /var/ftp/pub

## 권한 변경

 

ifconfig

## IP 조회 후 10.10.11.23 인 것을 확인.

 

 

HostPC] - ## Fedora, win701 옮기기

 

[알드라이브]

정상적으로 진입하였다.
알드라이브 에러 계속 뜨면 systemctl restart vsftpd.service 이것도 해보기.

 

 

cd ./pub

ls -l

## Fedora와 Windows7Pro가 뜬다.

 

ls /

mv ./* /ioslib

ls -l /ioslib

## 이제 리눅스용 VMWare는 얼마나 잘 돌아가는지 KVM을 활용해서 깔아보자.


vi /etc/libvirt/storage/default.xml

## 들어가서 Default Path 확인.

 

## virt-manager 구동

스토리지 풀은 virt-manager 또는 virsh를 통해 생성할 수 있다. xml 파일은 /etc/libvirt/storage에 저장된다.

xml 파일은 /etc/libvirt/storage에 저장된다. default 풀의 이미지 저장소를 다음과 같이 바꿀 수 있다.

vi /etc/libvirt/storage/default.xml

=> <path

 

virt-manager

 

## 가상 네트워크

  1) NAT 기반 가상 네트워크 (8번의 NAT를 뜻함.)

  2) 라우팅 기반 가상 네트워크 (브릿지에 해당)

  3) 고립형 가상 네트워크 (VMNet 1~13에 해당)

 

  virsh net-list --all

활성 및 비활성 가상 네트워크를 모두 나열하는데, --all 이 지정되지 않은 경우 활성 가상      네트워크만 나열된다.

      ## GUI로 보려면 위의 virt-manager 가상 네트워크에서 볼 수 있다.

  

  - 기본 네트워크

  virsh net-info default

virsh 명령을 사용해 동일한 세부 정보를 볼 수 있다.

 

 

  vi /etc/libvirt/qemu/networks/default.xml

default 네트워크의 상태 정보


기본 네트워크를 시작하는 명령의 일부는 다음과 같다.

- 가상 네트워크 설정 파일은 : /etc/libvirt/qemu/networks/ 에 xml 파일로 저장된다.

'default' 네트워크의 경우, /etc/libvirt/qemu/networks/default.xml 이다.

 

- virsh 명령 중 net-destroy는 가상 네트워크를 중지하고, net-start는 가상 네트워크를 시작한다.

  가상 머신이 가상 네트워크를 사용해 활성 상태일 때, 가상 머신의 네트워크 연결이 끊어지기 때문에

  이 명령을 실행하지 않아야 한다.

아래 명령어를 입력하기 이전의 virt-manager 상황

 

  virsh net-destroy default

비활성으로 바뀌었다.

 

  virsh net-start default

다시 활성화 되었다.


## Storage

- Storage 탭을 사용하면 여러가지 풀을 구성하고 상태를 모니터링할 수 있다. 또한 가상 머신 디스크 이미지를

  저장하는 저장소이다.

- 기본 경로는 '/var/lib/libvirt/images' 이다.

 

 


## OS 설치 ##

##  virt-install --name WIN7 --/IOSLIB/[Win7Pro 이름...] 이런 방식이 있다~

## 위의 방법이 짜증나니 GUI 방식으로 편하게 하자.

이런 식으로 저장소를 만들 수 있다.

 

 

방금 전 볼륨을 만든 것과 다르게, 3개의 볼륨이 기본적으로 깔려 있는 것을 확인할 수 있다.

 

 

 

## Virtual Machine 안에 또 Virtual이므로 가상의 가상임. 메모리를 늘려보자.

최고치인 3GB로 변경.
얘한테 너무 많이 주면 리눅스가 버벅거리니까 768로 설정.
Windows 설치 창이 나온다. 아래처럼 키보드 탭을 이용하여 설치 후 종료

 

 

VNC 서버로 바꾸고 적용. 그리고 다시 키면 마우스가 떨리지 않는다.
인터넷까지 되는 것을 확인할 수 있다!! 

오 늘 은   여 기 서   끝 !

일시정지 해놔버리기~




[2021-08-25 이어서]

## 네트워크와 스토리지

 터널을 의미하는 'TUN'은 네트워크 계층 장치를 시뮬레이트하며, IP 패킷 같은 OSI 기본 모델의 3계층에서 작동한다.

TAP은 링크 계층 장치를 시뮬레이트하고, 이더넷 프레임과 같은 OSI 기본 모델의 2계층에서 작동한다.

TAP은 네트워크 브리지를 만드는데 사용되고, TUN은 라우팅에 사용된다.


## tester 장치 추가 ##

KVM]

## 브리지 모듈이 커널에 로드되어 있는지 확인하는 방법

lsmod | grep bridge

 

 

## tester라는 브리지(스위치)를 만드려면 다음과 같은 명령어를 사용하면 된다.

brctl addbr tester     ==> brctl 명령은 bridge-utils 패키지에 의해 제공된다.

 

 

## 브리지(스위치)가 만들어졌는지 확인해보자.

brctl show

8000.xxxxxxxxxxxxxxxx ==> 8000(32768 스위치의 우선순위값).xxxxxxxxxxxxxxxx(MAC 주소)


## 아직 tester 가상포트에 연결된 인터페이스가 없다. test 브리지의 네트워크 정보를 확인하려면 ip 명령을 사용한다.

ip link show tester

네트워크의 정보를 볼 수 있다.

 

 

## 리눅스 브리지 네트워크 설정을 확인하고 구성하는 ifconfig도 사용할 수 있다. ifconfig가 상대적으로 읽고 이해하기

    쉽지만, ip 명령과 같이 많은 기능은 제공하지 않는다.

ifconfig tester

 

 


## TAP 장치 생성 ##

## tester 리눅스 브리지는 이제 준비가 완료되었다. TAP 장치를 생성하여 추가해보자.

## 스위치를 만들어도 바로 되는 것이 아니라, 이렇게 TAP(포트)를 만들어서 사용해야 한다!!

lsmod | grep tun

3계층 장비인 TUN이 1개가 있다.

 

 

## VM-VNIC라는 TAP 장치를 만드려면 다음과 같은 명령어를 사용한다.

ip tuntap add dev vm-vnic mode tap

ip link show vm-vnic


## tester(스위치)에 vm-vnic(포트) 추가 ##

## 이제 tester라는 브리지와, vm-vnic라는 TAP 장치가 준비되었다. tester에 vm-vnic를 추가해보자.

brctl addif tester vm-vnic

brctl show


## vm-vnic은 tester 브리지에 추가된 인터페이스임을 알 수 있다.

    이제 vm-vnic은 가상 머신과 tester 브리지 간의 인터페이스로 작동할 수 있다.

    가상 머신은 이 브리지에 추가된 가상머신과 통신할 수 있다.

여기에 연결한 가상 머신들은 서로 통신할 수 있다.

 


## vm-vnic TAP 장치 및 tester 브리지 제거해보기 ##

## ①-①) tester 브리지에서 vm-vnic TAP 장치를 제거해보자.

brctl delif tester vm-vnic

brctl show tester

 

 

## ①-②) 아래와 같은 방법으로 ip 명령을 사용해 TAP 장치를 제거할 수도 있다.

ip tuntap del dev vm-vnic mode tap

brctl show tester


## 마지막으로 tester 브리지를 제거한다.

brctl delbr tester

brctl show tester

tester 브리지가 날아간 것을 확인할 수 있다.



## lbvirt를 사용한 가상 네트워킹 ##

virt-manager

이런식으로 가상 네트워크를 만들 수 있다.

 

 

KVM]

cat /etc/libvirt/qemu/networks/isolated.xml

 

 

 

## 이렇게 만든 다음에, XML 파일을 사용하여 네트워크를 정의하려면 다음과 같은 명령어를 사용한다.

## net-define을 사용해 네트워크를 정의하면, 구성파일은 /etc/libvirt/qemu/networks/에 가상 네트워크와 동일한

    이름의 xml 파일로 저장된다.

virsh net-define /etc/libvirt/qemu/networks/isolated.xml

정의가 되었음.

 

 

## 네트워크가 정의되면 net-list 명령을 사용해 가능한 모든 네트워크를 나열할 수 있다.

virsh net-list --all

만든 다음에 정의를 하면, 이렇게 네트워크들이 만들어진 것을 확인할 수 있다.

 

 

## 리눅스 브리지의 세부사항을 보려면 다음 명령에 표시된 대로 net-dumpxml 옵션을 사용한다.

virsh net-dumpxml isolated

isolated에 사용된 브리지는 virbr1이고, range는 이렇다.(DHCP 돌아간다는 것임)

아까 cat /etc/libvirt/qemu/networks/isolated.xml 명령어를 통해서 나온 결과값이랑 똑같은데 그건 xml 파일 그대로

보여주는 것이고, dumpxml은 네트워크 정보의 세부사항을 모두 다 보여주는 것임.


## libvirt 서비스가 시작될 때 자동으로 가상 네트워크를 시작하려는 경우 Autostart 옵션을 선택한다.

    virsh를 사용하는 경우, virsh net-autostart isolated라 한다.

 

## 가상 네트워크 활성화 및 비활성화 확인 ## 

virsh net-destroy isolated

virsh net-list --all

 

virsh net-start isolated

virsh net-list --all


## 가상 네트워크 인터페이스 카드 추가 ##

## ① GUI 방식으로 인터페이스 카드 추가

virt-manager

네트워크 소스 : isolated 선택
장치 모델 virtio 선택 후 적용.

 

## ② 명령어를 통한 인터페이스 카드 추가

centos7.0-2 실행 후, 호스트 Centos에서

virsh attach-interface --domain centos7.0-2 --source isolated --type network --model virtio --config --live

 

## 확인은 아래의 명령어를 통해 하면 된다. 

brctl show virbr1

 

 

ifconfig

독립형 네트워크인 isolated가 virbr1이라는 인터페이스를 사용하는데 IP는 100.1을 사용한다.




## 2. 라우팅 기반 가상 네트워크 ##

virt-manager

만들어졌다!!

 

 

vi /etc/libvirt/qemu/networks/routed.xml

## 아까는 cat을 썼는데 지금은 vi를 사용함. 그리고 forward 구문 한 줄 추가


## 네트워크 정의 (아까와 순서 똑같음) ##

virsh net-define /etc/libvirt/qemu/networks/routed.xml

routed 이름의 네트워크가 routed.xml로부터 정의된다. 이제부터 네트워크를 쓰겠다는 의미임.

 

virsh net-start routed

virsh net-autostart routed

 

 

virsh net-list --all

routed가 활성화 된 것을 확인.

 

 

 

## ① GUI로 인터페이스 카드 추가.

 

 

## ② 명령어를 통한 인터페이스 카드 추가

## centos7.0-2 vm에 nic 장착
virsh attach-interface --domain centos7.0-2 --source routed --type network --model virtio --config --live

 


## 가상 네트워크 편집 ## ★★하지말자. 나중에 에러남.★★

## 라우트 기반 가상 네트워크를 편집해서 사용 가능한 모든 인터페이스로 가상 머신의 패킷을 전달할 수 있게 해보자.

   가상 가상 네트워크를 편집하기 전에 먼저 중지해야 한다.

 

virsh net-destroy routed

virsh net-list --all

비활성화 된 것을 확인.

 

## 편집 모드

virsh net-edit routed

 

virsh net-start routed

편집이 완료 되었다.



KVM-WIN701]

## IP를 200대역으로 받는지만 확인해보자. 드라이버가 없다면서 뭐 아무것도 설치가 안된다.

바꾸고 다시 해보기.

## 뭔가 계속 안된다.


KVM]

종료-수정-재정의-시작

virsh net-destroy routed

vi /etc/libvirt/qemu/networks/routed.xml

## route 다시 넣어주기.

 

virsh net-define /etc/libvirt/qemu/networks/routed.xml

virsh net-start routed

 

KVM-WIN701]

ipconfig /all

## 200.1로 되어있는 것을 확인하였음.

 

route print

## Default가 생겼음.

 

 

## NAT일 때는 외부인 10.0.0.1로 Ping이 가고,

    Router일때는 Routing 기능이 있어서 다른 네트워크와 통신이 된다.

ping 192.168.100.1

 

 

 

## Routed 상태로 인터넷이 되게 하려면 랜카드 마이그레이션을 한 뒤에 실행해야함.

    Fedora를 설치한 뒤에 마이그레이션 작업을 수행해 보겠다. 일단 WIN7은 종료.

   


## 별도의 VM Image를 생성하여 관리하는 방법 ##

KVM] 

## 종료한 뒤에 50GB짜리 하드디스크 새로 생성

shutdown -h now

vi /etc/libvirt/storage/default.xml

path 경로를 /vms로 수정.

## 디렉토리 생성

mkdir /vms

 

 

50GB 짜리 하드디스크 새로 생성.

 

ls /dev

 

## fdisk 해야함. 

fdisk /dev/sdc

 

 

 

## fdisk 했으면 이제 포맷해야함.

mkfs -t ext4 /dev/sdc

 

 

 

## 마운트해야함

mount /dev/sdc /vms

 

## 재부팅되어도 자동 마운트 될 수 있게 설정

vi /etc/fstab

 

systemctl get-default

 

 

df -h       

sdc 70GB(원래는 50GB인데 잘못줌 ㅋㅋ..), sdb1   40GB  2개 나오는지 확인.

 

 

 

## Fedora 설치 ##

인터넷이 연결되는 것 까지 확인.

 

## 복제하면 UUID값이 그대로 복제가 되기 때문에 문제가 생김. fed2도 똑같이 만들어주기.

fed1과 fed2를 정상적으로 설치하였고, 제대로 실행이 되는 것을 확인하였다.


 


## KVM 가상화를 위한 소프트웨어 정의 네트워킹 ##

- yum을 통한 EPEL(yum의 업그레이드 버전) 설치

- Open vSwitch(리눅스 기반 가상 스위치) 설치와 설정 ==> 앞으로 무조건 쓸 일 있음!!!

 

* EPEL(Extra Packages of Enterprise Linux)

  레드햇에서 제공하는 별도의 패키지 저장소 (주로 레드햇 계열인 RHEL, CentOS, Fedora 용도)

 

KVM]

yum install -y epel-release

 

yum install -y openvswitch pridge-utils

계속 에러가 뜨길래 보니까 아래의 명령어를 통해 저장소를 먼저 업데이트 해주고나서 해야함.

 

 

## 저장소를 먼저 업데이트

yum install -y epel-release https://www.rdoproject.org/repos/rdo-release.rpm

설치 완료.

 

 

yum install -y openvswitch bridge-utils

설치 완료.


## /etc/logrotate.d/openvswitch

    Open vSwitch로 그 파일인 /var/log/openvswitch/*.log의 로그 순환을 제어한다. 기본적으로 로그는 압축된 후

    매일 순환된다.

 

## /etc/openvswitch/conf.db

    는 실제로 구성파일이 아니라 Open vSwitch가 구성을 저장하고 검색하는데 사용되는 데이터베이스이다.

 

## /etc/openvswitch/system-id.conf

    uuidgen을 사용하는 Open vSwitch 시작 스크립트에 의해 생성되며, 컨트롤러에서 여러대의 시스템을

    구별하기 위해 사용된다.

 

## /etc/sysconfig/openvswitch

    Open vSwitch를 위한 환경 설정 파일이다. 이 파일에 설정된 구성 매개변수는 Open vSwitch 데몬의 환경 변수

   역할을 한다.


## 이제 Open vSwitch를 설치했으니 실행을 해보자.

KVM]

systemctl start openvswitch

systemctl enable openvswitch

 

systemctl status openvswitch

 

 

## 서비스가 시작되면 필요한 Open vSwitch는 커널 모듈을 로드하고, Open vSwitch 데이터베이스 생성이나 데몬 실행      같은 초기화 시작 루틴을 수행한다. 데이터베이스는 다음 위치에 해당 스키마를 사용해 만들어진다.

    /usr/share/openvswitch/vswitch.ovsschema

 

## Openvswitch 서비스 로그에 액세스하려면 다음 명령을 실행한다.

journalctl -u openvswitch

(로그를 볼 수가 있음.)

 

## ovsdb-server와 ovs-vswitchd의 로그파일은 /var/log/openvswitch 디렉토리에 저장된다.

 

## openvswitch.service를 시작하면 datapath를 전환하는데 필요한 커널 모듈을 로드해야 한다. 페도라에서 OVS

    커널 모듈의 이름은 openvswitch다. 루트에서 다음 명령을 실행해 수동으로 로드할 수 있다.

modprobe openvswitch

이 모듈을 로드해야만 Open vSwitch가 정상적으로 동작한다.

 

 

## Open vSwitch 커널의 자세한 정보를 보려면 아래의 명령어를 사용하면 된다.

modinfo openvswitch

 

 

ovs 하고 탭 2번 눌러보기.

## ovs를 쓰려면 기존의 NetworkManager.service를 중지시켜야 한다.

systemctl disable NetworkManager.service

systemctl start network.service

systemctl enable network.service

 

 

## OVS-vstcl 명령을 이용한 Open vSwitch 브리지 구성

    (어제 스위치를 만들 때는 brctl 명령어를 사용했었는데, OVS는 ovs로 시작, vswitch001이라는 스위치 만들기!!)

ovs-vsctl add-br vswitch001

ovs-vsctl show

이제 Fedora1, 2를 가지고 이 Switch에 집어 넣을것임.

브리지 생성시 시스템은 브리지의 이름과 일치하는 이름을 가진 내부 인터페이스를 생성한다.

ifconfig 명령으로 확인할 수 있다. (브리지 이름과 같은 포트를 자동으로 생성함)

ifconfig vswitch001

 


## 네트워크 스크립트를 사용한 vSwitch 브리지 구성 ##

## Fedora 1,2 집어 넣어보기.

1) Open vSwitch 브리지에 대한 구성파일을 만든다.

   /etc/sysconfig/network-scripts 디렉토리에 저장한다.

vi /etc/sysconfig/network-scripts/ifcfg-vswitch002

직접 기입하고, 저장하고 나가기.

## "OVSBridge" 매개변수는 DEVICE 항목에 적힌 이름(vswitch002)으로 OVS 브리지를 생성한다는 뜻이다.


2) 이제 이 인터페이스를 vswitch002 OVS 브리지에 추가하기 위해 /etc/sysconfig/network-scripts/ifcfg-ens32 

   파일을 변경한다.

vi /etc/sysconfig/network-scripts/ifcfg-ens32


3) 네트워크 서비스 재시작 후, ovs-vsctl show 명령을 사용해 Open vSwitch 브리지 구성이 다음과 같은지 확인.

systemctl restart network


## 확인 작업

ovs-vsctl show

이 스위치에 CentOS 랜카드가 꼽혔다는 뜻이다.

 

route add -net 10.0.0.0/8 dev vswitch002

## 인터넷 되게 하겠다는 뜻임. 10.0.0.0/8 비트는 vswitch002로 가라.


## KVM VM과 OVS 연결 ##

virsh net-list                                     

## 현재 네트워크 리스트를 보겠다. (isolated, routed, default 3개)

 

virsh net-destroy default                    ## KVM 설치하면 기본 네트워크가 default인데 이건 NAT임. 이 default

                                                          기능을 정지시키고 Fedora 기능을 가져오겠다.

 

virsh net-autostart --disable default     ## default 네트워크가 자동 시작되는 것을 방지하겠다.

                                                           auto-start가 안되게 하겠다.

 

virsh dumpxml fed1                            ## xml 파일을 보여달라. 앗.. 근데 너무 많이 보여줘 ㅠㅠ.. 다른 명령어로!!

virsh dumpxml fed1 | grep -i 'interface type' -A 5   

## interface type이라는 말만 5줄 보여달라는 뜻. ## fed1은 default 네트워크 소속이며, 브리지는 virbr0이다.

 

 

virsh domiflist fed1

이렇게 나오게 된다.

 

 

## 'brctl show' 명령은 virbr0가 리눅스 브리지인 것을 확인해 준다.

brctl show

## 아까 virtl 0를 disabled 해놨기 때문에 보이지 않는다.

 

 

 

Fedora 1] - 재부팅 후 IP 뭐 받았는지 확인해보기.

 

KVM]

## 가상 머신을 리눅스 브리지에서 vswitch002 OVS 브리지로 마이그레이션하고, OVS 브리지의 해당 포트 이름을

    fed_vp01로 지정하려면 VM을 종료하고 더넷 인터페이스에 대한 XML 구성을 편집해야 한다.

 

## Fedora 1 종료 후 : 종료 안하고 하면 저장 안된다.

virsh edit fed1


## 이제 가상머신을 시작해보자.

virsh start fed1

 

Fedora 1]

IP 10.10.31.248 (10.10 대역 받았음!! ㅎㅎ)

 

ping 10.0.0.1

## 이제 인터넷도 된다는 뜻이다.

 

KVM]

## 위의 작업을 한번에 다음과 같이 끝낼 수 있다.

virt-xml fed1 --edit --network virtualport_type='openvswitch',source=vswitch002,target=fed_vp01

 

## 그렇다면 Fed2도 똑같이 넣어보자.

virt-xml fed2 --edit --network virtualport_type='openvswitch',source=vswitch002,target=fed_vp02

 

 

ovs-vsctl show

드디어 떴다!! 페도라 안끄고 하면 에디트 편집부터 저장 안되서 개고생했음..

## 원래 페도라 2도 했어야 했는데 우리 귀염둥이 페도라가 말도 없이 날아가버렸음 ^^..





 

## 지금까지는 난해하고 힘든 작업들이었는데, 가장 쉽고 실용적인 방법은 OVS 브리지를 가리키는 libvirt 네트워크를         만드는 것이다.

1) libvirt 설정은 xml 파일에 있기 때문에, 네트워크 xml 파일을 만든다.

KVM]

cd /etc/libvirt/qemu

vi ./vswitch003.xml

## .xml 파일은 거의 /etc/libvirt/qemu에 넣음.

 

## 네트워크 정의

virsh net-define ./vswitch003.xml

 

## 네트워크 시작

virsh net-start vswitch003

 

2) xml 파일이 준비되면 libvirt 네트워크를 정의하고, 호스트 부팅 시에 자동으로 시작하게끔

    설정하고 네트워크를 작동시킨다.

virsh net-define /etc/libvirt/qemu/vswitch003.xml           -- 네트워크 정의

virsh net-start vswitch003

virsh net-autostart vswitch003

 

virsh net-list

이제 vswitch003 네트워크가 잡히게 된다. 이제 Fedora를 여기다가 집어넣으면 된다.

 

 

vswitch003번 말고 vswitch001번에다가 넣자 그냥 ... T ...

## 네트워크를 만들었으니 브리지를 만들어야 한다. (아 안만들어져 개빡쳐 아... 만들어진거였음 ㅎㅎ)

ovs-vsctl add-br vswitch003

 

ovs-vsctl add-port vswitch003 fed_vp01

ovs-vsctl show

## 이러면 이미 Fed가 002에 들어가 있기 때문에 지우고 나서 넣어야 한다.

 

ovs-vsctl del-port vswitch002 fed_vp01

ovs-vsctl add-port vswitch003 fed_vp01