안녕하세요? OMV 캇픽 프론트엔드를 사용해 보면서 시행착오를 공유합니다.
아래의 OMV Extras 에 있는 cockpit 입니다.
1. Web UI 접근하기
일단 Cockpit 시스템을 접근하려면 IP:9090 으로 접근해야합니다.
접근하면 아래의 계정 입력창이 나오고 root / 비번 으로 로그인 하시면 됩니다.
컨테이너야 docker 기반으로 CLI 로 쓰는게 더 편하다 보니 실제로 사용하지는 않습니다만, 이때 WebUI 기반으로 가상머신을 사용할 수 있는 부분이 있습니다.
기본적으로 설정은 다 되어 있습니다. 남은 용량 부분은 / 경로의 남은 용량을 가지고 오게 되어 있어서 docker 경로를 하드디스크로 옮기더라도 용량 반영이 되지 않습니다.
아무래도 차후에 수정이 되지 않을까 하네요. 아니면 직접 webui 소스를 고치는 방법 밖에 없어 보입니다.
가상머신 부분입니다. 아래와 같이 CreateVM 을 통해서 작업이 가능합니다.
2. 가상머신 생성 시, 용량 부족 문제 해결하기
한편, 가상머신을 생성할 때 아래와 같은 설정을 할 수 있습니다. 매우 간단한 설정만 가능한데요. 이때 저장용량이 부족하다는 메시지를 보게 됩니다.
pool 용량이 부족하다는 에러인데 이 경로는 본래 아래의 경로로 되어 있습니다.
/var/lib/libvirt/images
상기 경로를 다른 곳으로 이동해주기 위해서 아래의 설정파일을 건들이시면 경로 이동이 가능합니다.
root@openmediavault:~# vim /etc/libvirt/storage/default.xml
8 <pool type='dir'>
9 <name>default</name>
10 <uuid>71309211-18fd-4d34-959a-eff7b7857486</uuid>
11 <capacity unit='bytes'>0</capacity>
12 <allocation unit='bytes'>0</allocation>
13 <available unit='bytes'>0</available>
14 <source>
15 </source>
16 <target>
17 <path>/sharedfolders/libvirt/images</path>
18 </target>
19 </pool>
기본적으로 설정된 pool 이 dir 임으로 상기 path 만 수정하고 libvirt 를 재시작하면 되겠습니다.
root@openmediavault:~# service libvirtd status
● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-11-18 12:56:01 KST; 5h 15min ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 876 (libvirtd)
Tasks: 24 (limit: 32768)
Memory: 46.9M
CGroup: /system.slice/libvirtd.service
├─ 876 /usr/sbin/libvirtd
└─12288 /usr/bin/qemu-system-x86_64 -name guest=win7,debug-threads=on -S -object secret,id=masterKey0,for
3. 브릿지 어댑터 설정하기
기본적으로는 virsh 명령을 통해 net-attach ~~~~.xml 로 활성화를 해야합니다만, 일단 브릿지 설정은 그 설정이 없이 바로 할 수 있습니다.
기본 default net 설정을 없애지 않아도 활용이 가능함으로 없애는 부분은 생각하지 않고 진행해 보도록 하겠습니다.
일단, 브릿지 어댑터를 생성하기 위해서는 systemd-networkd 를 활용하는 것으로 debian10 부터 바뀌었음으로 그것을 활용하여 설정을 반영해 보겠습니다.
root@openmediavault:/etc/systemd/network# apt install bridge-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
bridge-utils is already the newest version (1.6-2).
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.
root@openmediavault:/etc/systemd/network# cat bridge.netdev
[NetDev]
Name=br0
Kind=bridge
상기와 같은 방법으로 생성을 해줍니다. 기본적으로 올라오는 네트워크 이더넷이 enp2s0로 가정한 파일입니다.
리부팅을 하면, 아래와 같이 br0가 잘 올라와있는 것을 알 수 있으며, 혹시 랜덤 MAC으로 설정이 되어 공유기쪽에서 받던 아이피가 아닐 수 있습니다.
이때 이전 IP로 접근이 되지 않아서 발생하는 당황스러움을 억제하시길 바랍니다.
root@openmediavault:/etc/systemd/network# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.56 netmask 255.255.255.0 broadcast 192.168.0.255
ether 4e:bf:3a:e0:43:dc txqueuelen 1000 (Ethernet)
RX packets 532696 bytes 549099230 (523.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 321515 bytes 171368425 (163.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:66:f0:dc:bb txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 443 bytes 28824 (28.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:e0:4c:68:46:33 txqueuelen 1000 (Ethernet)
RX packets 1021471 bytes 1162751947 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 787547 bytes 272264270 (259.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 101618 bytes 223013393 (212.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 101618 bytes 223013393 (212.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vetha0261f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 92:32:71:50:77:e8 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 202 (202.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether fe:54:00:4d:92:a1 txqueuelen 1000 (Ethernet)
RX packets 401445 bytes 96330610 (91.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 498619 bytes 599920428 (572.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@openmediavault:/etc/systemd/network# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.4ebf3ae043dc no enp2s0
vnet0
4. 가상 머신에 브릿지 어댑터 설정하기
일단 default.xml 파일로 네트워크가 생성이 되었을 것입니다.
혹시 default.xml 파일로 생성이 되지 않았다면, 그리고 로그가 dnsmasq 로 에러가 난다면, 아래의 조치를 취하시길 바랍니다.
root@openmediavault:/etc/systemd/network# apt install dnsmasq
Reading package lists... Done
Building dependency tree
Reading state information... Done
dnsmasq is already the newest version (2.80-1).
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.
상기 명령으로 네트워크를 다시 시작해 주시면 가상머신이 시작될 것입니다.
시작이 된 후, 브릿지 어댑터로 바꿔끼려면 아래의 명령을 줍니다.
root@openmediavault:/etc/systemd/network# virsh edit win7
67 <controller type='pci' index='0' model='pci-root'/>
68 <controller type='ide' index='0'>
69 <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
70 </controller>
71 <interface type='bridge'>
72 <mac address='52:54:00:4d:92:a1'/>
73 <source bridge='br0'/>
74 <model type='virtio'/>
75 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
76 </interface>
77 <serial type='pty'>
78 <target type='isa-serial' port='0'>
79 <model name='isa-serial'/>
80 </target>
81 </serial>
interface type 에 bridge 라고 주시고 source bridge 설정만 해주시면 정상 작동을 할 것입니다.
이후 가상머신을 shutdown 했다가 시작하고 설정 파일을 다시 열어보면 랜덤 MAC 이 부여되어 있을 것입니다.
model type 의 경우 지정을 하지 않으면 본래 랜카드의 r8169 드라이버가 사용되고, 성능이 저하될 수 있어서 virtio 로 설정을 따로 하였습니다.
5. 가상머신 브릿지 어댑터 교체 후, 인터넷 안됨 문제 해결
이 부분은 debian10 부터 사용하는 netfilter 와 관련이 있습니다.
아래의 sysctl 설정으로 해결을 해줍니다.
root@openmediavault:/etc/systemd/network# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
상기 명령어로 설정이 반영되는 것을 확인할 수 있습니다.
6. virtio 드라이버 설치를 위한 ISO 파일 교체
virsh 명령으로 명령쉘로 이동하여 아래와 같이 change-media 옵션을 사용합니다.
root@openmediavault:/etc/systemd/network# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # domblklist win7
Target Source
------------------------------------------------------
hda /sharedfolders/libvirt/images/win7-1.qcow2
hdb /sharedfolders/data/virtio-win-0.1.171.iso
virsh # change-media win7 hdb --eject
Successfully ejected media.
virsh # domblklist win7
Target Source
------------------------------------------------------
hda /sharedfolders/libvirt/images/win7-1.qcow2
hdb -
virsh # change-media win7 hdb /sharedfolders/data/
ko_windows_7_starter_k_with_sp1_x86_dvd_u_678554.iso virtio-win-0.1.171.iso
virsh # change-media win7 hdb /sharedfolders/data/ko_windows_7_starter_k_with_sp1_x86_dvd_u_678554.iso --insert
Successfully inserted media.
virsh # domblklist win7
Target Source
------------------------------------------------------------------------------------
hda /sharedfolders/libvirt/images/win7-1.qcow2
hdb /sharedfolders/data/ko_windows_7_starter_k_with_sp1_x86_dvd_u_678554.iso
virsh #
하기에 실행중인 가상머신에 반응이 왔습니다.
Cockpit 에서는 Console 을 지원하며 웹 기반으로 VNC SPICE 를 통해 콘솔 작업이 가능합니다.
정상적으로 가상머신에서 확인하면 ISO 이미지가 바뀌었음을 알 수 있습니다. 상기 글은 이미 있는 상태에서 설치 이미지로 바꿔 본 것으로 virtio iso 이미지를 아래에서 받아서 잘 넣어주시길 바랍니다.
장치관리자에서 장치 선택 후 수동설치를 통해 잡아주시면 됩니다. 한가지 PCI 장치라고 안잡히는 드라이버가 있는데 이는 Balloon 드라이버로써 CD 에서 찾아서 설치해 주시면 잘 작동합니다.
7. 잠시 써본 후기...
생각보다 처음은 어렵습니다. 아직 WebUI 에서 모든 컨트롤이 되지 않기 때문에 조금 어려울 수 있으나, virsh 가 굉장히 직관적으로 만들어져 있어서.. 정말 좋은 것 같습니다.
명령어 기반이라서 어려울 수 있지만, 반면에 확실하게 커스텀적으로 작성이 가능하고 마음대로 가능하다는 장점이 있습니다.
docker 도 portainer 라는 좋은게 있지만, 저는 그냥 shell 에서 작업하는 이유도 그런 이유일까 합니다.
VirtualBox 보다는 약간 빠르다는 느낌이 듭니다만, 알고보면 어차피 리눅스용 Virtualbox 도 KVM 기반인데 속도차이가 날까? 이런 의문도 생깁니다.
혹시 처음 시작에 어려움을 겪으시는 부분이 있다면 이 글로 많은 부분이 해소되었으면 좋겠습니다.
감사합니다.
'서버 > 리눅스 서버' 카테고리의 다른 글
Visual Studio Code Server 설치하기 (codeserver) (0) | 2019.11.23 |
---|---|
Chrome Remote Desktop Headless 설치하기 (2) | 2019.11.18 |
[s905x2]Beelink GTminiA Armbian 설치 부터 끝장까지!! (5) | 2019.10.19 |
V2Ray 설치하기 (중국 만리장성 뚫기) (2) | 2019.09.29 |
TVH 스트리밍 QOS 스크립트 (리눅스 네트워크 대역폭 제한 / wondershaper) (0) | 2019.09.15 |
댓글