KVM, OpenvSwitch, VLAN unter Ubuntu
Notwendiges Wissen:
Installation von Ubuntu / Debian
Netzwerk einrichten
VLAN
Versionen:
check Version | Version | |
Ubuntu |
cat /etc/lsb-release |
DISTRIB_DESCRIPTION=Ubuntu 14.04.4 LTS |
qemu-kvm | kvm --version | QEMU emulator version 2.3.0 (Debian 1:2.3+dfsg-5ubuntu9.2~cloud0) |
virsh | virsh --version | 1.2.16 |
open v switch | ovs-vsctl --version | ovs-vsctl (Open vSwitch) 2.4.0 |
VLAN Einstellungen
VLAN 20 | Internet | |
VLAN 21 | Management Network | 192.168.7.x/24 |
VLAN 24 | DMZ | 192.168.66.x/24 |
VLAN 26 | User Networtk | 192.168.26.x/24 |
KVM einrichten
KVM Tauglichkeit prüfen
grep -E '^flags.*\b(vmx|svm)\b' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc rep_good nopl nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi flexpriority ept xsaveopt
## für Intel-Prozessoren modprobe kvm modprobe kvm_intel ## für AMD-Prozessoren modprobe kvm modprobe kvm_amd
dmesg | grep kvm
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000000] kvm-clock: cpu 0, msr 0:1fff5001, primary cpu clock
[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[ 0.000000] kvm-stealtime: cpu 0, msr 1fc0e600
[ 0.158174] clocksource: Switched to clocksource kvm-clock
Repo
sity hinzufügen
add-apt-repository cloud-archive:liberty
apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot
KVM in einer virtuellen Maschine betreiben (KVM nested)
Überprüfung, ob Nested KVM aktiviert ist
bei einem Intel-Prozessor:
cat /sys/module/kvm_intel/parameters/nested
bei einem AMD-Prozessor:
cat /sys/module/kvm_amd/parameters/nested
Dort sollte ein "Y" stehen
Wenn dort ein "N" steht, muss man das entsprechende KVM-Modul entfernen und dann mit dem Parameter nested=1
neuladen.
bei einem Intel-Prozessor:
rmmod kvm_intel modprobe kvm_intel nested=1
bei einem AMD-Prozessor:
rmmod kvm_amd modprobe kvm_amd nested=1
Unter umständen kann man das laden von dem Kernel Modul automatisieren.
vi /etc/modprobe.d
/99-kvm.conf
bei einem Intel-Prozessor:
options kvm-intel nested=1
bei einem AMD-Prozessor:
options kvm-amd nested=1
AppArmor abschalten
service apparmor stop update-rc.d -f apparmor remove
modinfo kvm_intel | grep -i nested
parm: nested:bool
KVM CPU Informationen auslessen
virsh capabilities | virsh cpu-baseline /dev/stdin
<cpu mode='custom' match='exact'>
<model fallback='forbid'>SandyBridge</model>
<vendor>Intel</vendor>
<feature policy='require' name='invtsc'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='pcid'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='est'/>
<feature policy='require' name='smx'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='acpi'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='vme'/>
</cpu>
Für KVM nested wird nur die vmx extensions benötigt.
<cpu match='exact'> <model>core2duo</model> <feature policy='require' name='vmx'/> </cpu>
Installation Packages libvirt-bin, KVM
apt-get -y install novnc
libvirt-bin sasl2-bin openvswitch-switch openvswitch-datapath-dkms qemu-kvm vlan
vi /etc/default/libvirt-bin
change
libvirtd_opts="-d -l"
vi /etc/libvirt/libvirtd.conf
uncomment the line
listen_tls = 0 listen_tcp = 1
Start the daemon libvirtd
service libvirt-bin restart
Benutzer für libvirt hinzufügen
Hinzufügen von dem Benutzer "admin" mit den Option "-a libvirt" mit dem saslpasswd2 Kommando .
saslpasswd2 -u local -a libvirt admin Password: xxxxxx Again (for verification): xxxxxx
Auflisten von dem angelegeten Bentuzer
sasldblistusers2 -f /etc/libvirt/passwd.db
admin@vlocal:userPassword
Ausnahme ufw Firewall hinzufügen
vi /etc/ufw/applications.d/libvirtd
[Libvirt] title=Virtualization library description=Open port for WebVirtMgr ports=16509/tcp
hinzufügen
ufw allow from any to any app Libvirt
Test connection
direkte Anmeldung:
virsh -c qemu:///system nodeinfo
Anmeldung mit IP
virsh -c qemu+tcp://192.168.7.97/system nodeinfo
Please enter your authentication name: admin@virt01@local
Please enter your password:
CPU model: x86_64
CPU(s): 1
CPU frequency: 3200 MHz
CPU socket(s): 1
Core(s) per socket: 1
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 1017184 KiB
Virtual Machine Manager einrichten
Openvswitch Network
Bridge erstellen
ovs-vsctl add-br br-uplink ovs-vsctl add-port br-uplink eth0
<network>
<name>ovs-net-v26</name>
<forward mode='bridge'/>
<bridge name='br-uplink'/>
<virtualport type='openvswitch'/>
<portgroup name='v26' default='yes'>
<vlan >
<tag id='26'/>
</vlan>
</portgroup>
</network>
virsh net-define --file vlan26.xml virsh net-start ovs-net-v26 virsh net-autostart ovs-net-v26
Test Instance erzeugen
Download Disk Image
wget -P /var/lib/libvirt/images/ http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
Storage Pool erzeugen
vi storage.xml
<pool type="dir">
<name>virtimages</name>
<target>
<path>/var/lib/libvirt/images</path>
</target>
</pool>
virsh pool-define storage.xml
virsh pool-start virtimages
virsh pool-autostart virtimages
Create Instance
löschen von der Anzeige und neu erstellen
Artikelaktionen