Archiv:2011/IT/Dokumentation/OVH-Grundinstallation
Grundinstallation
OVH-spezifische Vorbereitungen
Zuerst muss der Server über das OVH-Webinterface in den Rescue-Modus gesetzt werden. Dazu meldet man sich beim OVH-Manager an, wählt oben in der Leiste den Server aus, klickt links im Menü auf "Dienstleistungen", und im Hauptteil auf "Netboot". Im folgenden Konfigurationsmenü wählt man den Netboot "rescue-pro", gibt seine E-Mail-Adresse an, unter der man die Zugangsdaten für den Rescue-Modus erhalten will und bestätigt. Anschließend klickt man im Menü links wieder auf "Dienstleistungen" und dann auf "Reboot". Als Grund gibt man "Serverneuinstallation" ein und bestätigt. Sobald der server im Rescue-Modus ist, schickt er an die angegebene E-Mail-Adresse die Zugangsdaten. Das kann bis zu 10 Minuten dauern.
Partitionierung der Platten
Jetzt können wir die Festplatten "ganz normal" partitionieren: Zuerst löschen wir den Anfang der Festplatten, schreiben dann neue Master Boot Records und lesen die Partitionstabelle neu ein. Das ist leider oft genug mit einem Reboot verbunden.
rescue:~# dd if=/dev/zero of=/dev/sda count=512 bs=1M rescue:~# dd if=/dev/zero of=/dev/sdb count=512 bs=1M rescue:~# sfdisk --force /dev/sda <<EOF # partition table of /dev/sda unit: sectors /dev/sda1 : start= 63, size= 514017, Id=fd, bootable /dev/sda2 : start= 514080, size=1464629985, Id=fd /dev/sda3 : start= 0, size= 0, Id= 0 /dev/sda4 : start= 0, size= 0, Id= 0 EOF rescue:~# sfdisk --force /dev/sdb <<EOF # partition table of /dev/sdb unit: sectors /dev/sdb1 : start= 63, size= 514017, Id=fd, bootable /dev/sdb2 : start= 514080, size=1464629985, Id=fd /dev/sdb3 : start= 0, size= 0, Id= 0 /dev/sdb4 : start= 0, size= 0, Id= 0 EOF
Hier wird aller Wahrscheinlichkeit nach ein Reboot fällig:
rescue:~# reboot
Dann kurz warten, und wir haben wieder Post vom Server: Neues root-Passwort.
Nun erstellen wir das Software-Raid, die LVM-Partitionen und die Dateisysteme. Auf dem Raid für /boot
muss wegen grub
die Metadata-Version 0.90 sein, sonst kann der nicht auf /boot
installiert werden.
rescue:~# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 rescue:~# mdadm --create /dev/md1 --metadata=1.2 --bitmap=internal --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
Dannach initialisieren wir die Partition für LVM, indem wir ein LVM-Physical-Volume erstellen, dannach eine Volume-Group (raid) und die ersten Logical Volumes und erstellen die Dateisysteme.
rescue:~# pvcreate /dev/md1 rescue:~# vgcreate raid /dev/md1 rescue:~# lvcreate --size 2G --name blackpearl_root raid rescue:~# lvcreate --size 1G --name blackpearl_swap raid rescue:~# mke2fs -j -L blackpearl_root /dev/raid/blackpearl_root rescue:~# mke2fs -j -L blackpearl_boot /dev/md0 rescue:~# mkswap -L blackpearl_swap /dev/raid/blackpearl_swap
Eigenes debootstrap
notwendig?
Früher mussten Anpassungen speziell für das OVH-Rescue-System gemacht werden. Da OVH ein Sarge-Rescue-System verwendete, enthielt das natürlich keinen Lenny-fähigen debootstrap
und wir mussten einen neuen herunterladen und installieren. Dummerweise ist das root-Filesystem ein read-only NFS-Share und wir mussten das Paket per Hand nach /tmp
installieren, patchen und in den Pfad bringen:
rescue:~# cd /tmp rescue:/tmp# wget -q http://ftp.fr.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.20_all.deb rescue:/tmp# ar -x debootstrap_1.0.20_all.deb rescue:/tmp# tar xzf data.tar.gz rescue:/tmp# sed -i -e 's#DIR=/usr#DIR=/tmp/usr#' usr/sbin/debootstrap rescue:/tmp# export PATH=/tmp/usr/sbin:$PATH
Installieren des Zielsystems
Wir hängen nun die vorbereiteten Partitionen in /mnt
ein und starten das gepatchte debootstrap
:
rescue:~# mount /dev/raid/blackpearl_root /mnt/ rescue:~# mkdir /mnt/boot rescue:~# mount /dev/md0 /mnt/boot/ rescue:~# debootstrap --arch=amd64 lenny /mnt/ http://ftp.fr.debian.org/debian
Anschliessend hängen wir noch die Dateisysteme /proc
und /dev
um, damit wir innerhalb des Zielsystems auch auf Geräte und Prozesse zugreifen können. Anschliessend gehen wir in das Zielsystem:
rescue:~# mount -t proc proc /mnt/proc/ rescue:~# mount -o bind /dev/ /mnt/dev/ rescue:~# chroot /mnt/ /bin/bash
Konfiguration des Zielsystems
Ab jetzt sind wir im Zielsystem. Wir werden nun diverse Teile des Systems konfigurieren. Fangen wir mit der Zeitzone an, diese wurde bereits via debootstrap gesetzt, also müssen wir sie umsetzen und das System sich neu konfigurieren lassen:
rescue:/# echo "Europe/Berlin" > /etc/timezone rescue:/# dpkg-reconfigure -f noninteractive tzdata
Setzen wir gleich auch ein Passwort für root
rescue:/# passwd
Wir müssen auch noch die Partitionen eintragen. Dafür editieren wir die /etc/fstab
:
rescue:/# cat > /etc/fstab <<EOF proc /proc proc defaults 0 0 /dev/raid/blackpearl_root / ext3 errors=remount-ro 0 1 /dev/raid/blackpearl_swap none swap sw 0 0 /dev/md0 /boot ext3 defaults 0 2 EOF
Dann kümmern wir uns um das Datennetz. Wir setzen den Hostnamen und erstellen eine /etc/hosts
und /etc/network/interfaces
. Hier bitte auf die IP-Adressen, Gateways, Hostnamen etc aufpassen und die eigenen wählen!
rescue:/# echo blackpearl > /etc/hostname rescue:/# cat > /etc/hosts <<EOF 127.0.0.1 localhost 94.23.220.83 blackpearl.piratenpartei.de blackpearl # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts EOF rescue:/# cat >> /etc/network/interfaces <<EOF # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 94.23.220.83 netmask 255.255.255.0 network 94.23.220.0 broadcast 94.23.220.255 gateway 94.23.220.254 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 213.186.33.99 dns-search piratenpartei.de EOF
Anschließend konfigurieren wir apt. Da die OVH-Kisten in Frankreich stehen, ziehen sie vom französischen Debian-Mirror:
rescue:/# cat > /etc/apt/sources.list <<EOF deb http://ftp.fr.debian.org/debian lenny main contrib non-free deb http://security.debian.org lenny/updates main contrib non-free EOF
Installation von System-Paketen
Als erstes müssen wir aptitude
die Paketlisten updaten lassen, anschließend upgraden wir die benötigten Pakete:
rescue:/# aptitude update rescue:/# aptitude safe-upgrade
Die locales
sind noch nicht installiert, und um uns lästige Fragen zu ersparen, legen wir die Konfigurationsdateien bereits im Vorfeld an und installieren dannach:
rescue:/# cat > /etc/locale.gen <<EOF en_US.UTF-8 UTF-8 de_DE.UTF-8 UTF-8 en_GB.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8 EOF rescue:/# cat > /etc/default/locale <<EOF LANG=de_DE.UTF-8 LC_MESSAGES=en_US.UTF-8 EOF rescue:/# aptitude install locales
Wir müssen noch die LVM-Tools installieren, dass das System nach dem Neustart auf die LVM-Partition zugreifen kann:
rescue:/# aptitude install -y lvm2
Ausserdem muss noch mdadm
installiert werden, um auf die Raid-Partitionen zugreifen zu können. Dummerweise will der einen Mailer installieren, und zwar exim
. Das ist uns aber zu viel, wir bevorzugen den kleinen nullmailer
:
rescue:/# echo blackpearl.piratenpartei.de > /etc/mailname rescue:/# debconf-set-selections <<EOF nullmailer shared/mailname string blackpearl.piratenpartei.de nullmailer nullmailer/relayhost string mail.piratenpartei.de nullmailer nullmailer/adminaddr string EOF rescue:/# aptitude install nullmailer rescue:/# aptitude install mdadm
Weiter gehts mit dem Boot-Loader, ich bin ein grub
-Fan, darum kommt der drauf:
rescue:/# aptitude install -y grub
Achtung! Wenn /dev/md0
nicht komplett ist, scheitert folgender Befehl:
rescue:/# grub-install /dev/md0 rescue:/# grub <<EOF root (hd0,0) setup (hd0) setup (hd1) quit EOF
Dann installierten wir den Kernel, davor konfigurieren wir aber noch die Kernel-Image-Erstellung:
rescue:/# cat > /etc/kernel-img.conf <<EOF # Kernel image management overrides # See kernel-img.conf(5) for details do_symlinks = yes relative_links = yes do_bootloader = no do_bootfloppy = no do_initrd = yes link_in_boot = no postinst_hook = update-grub postrm_hook = update-grub EOF rescue:/# aptitude install -y linux-image-2.6-amd64
Installation der Administrations-Pakete
So, jetzt haben wir das neue System bootfertig, aber kommen noch nicht drauf. Dafür brauchen wir noch openssh-server
, den wir anschliessend absichern:
rescue:/# aptitude -y install openssh-server rescue:/# sed -i -e 's/^PermitRootLogin yes$/#&\nPermitRootLogin no/' -e 's/^UsePAM yes$/#&\nUsePAM no/' -e 's/^#PasswordAuthentication yes$/&\nPasswordAuthentication no/' /etc/ssh/sshd_config
Damit die Rechte für den Root-Account sauber getrennt werden, verwenden wir sudo
, das wir auch gleich konfigurieren:
rescue:/# aptitude install sudo rescue:/# sed -i -e 's/^root\tALL=(ALL) ALL$/&\ndyfa\tALL=(ALL) ALL\nsebi\tALL=(ALL) ALL\nchrit\tALL=(ALL) ALL\nunger\tALL=(ALL) ALL\njamasi\tALL=(ALL) ALL\nnhornung\tALL=(ALL) ALL/' /etc/sudoers
Um die Festplatten überwachen zu können, installieren wir noch smartmontools
, die wir auch noch aktivieren müssen:
rescue:/# aptitude install -y smartmontools rescue:/# sed -i -e 's/^#\(start_smartd=yes\)$/\1/' /etc/default/smartmontools
Damit die Uhrzeit auf dem Server synchron zut Atomzeit läuft, installieren wir noch einen NTP-Dämon. Aus Sicherheitsaspekten und benötigten Features benutzen wir openntpd
:
rescue:/# aptitude install openntpd
Es gibt noch einige kleine, aber sehr hilfreiche Tools, die wir ebenfalls noch installieren:
file
zeigt den Dateityp anhtop
ist ein komfortablerestop
iftop
zeigt die momentane Auslastung der Netzwerk-Schnittstellen anless
ist ein komfortablerer pager alsmore
locate
dient zum schnellen Auffinden von Dateinamenlshw
dient zur Anzeige der installierten Hardwarelsof
zeigt offene Dateien anmc
ist ein Norton-Commander-Klon, ein Dateimanagernetcat-openbsd
ist mächtiger alsnetcat-traditional
, welches wir gleich deinstallierenscreen
benutzt man, um Sitzungen oder Befehle auszuführen, die auch weiterlaufen, wenn man die Verbindung schließt; man kann sie später wieder aufnehmenstrace
ist ein Tool, das die ausgeführten Systemcalls eines Programms anzeigtsysstat
dient zur Anzeige von IO-Statistikentcpdump
benutzt man, um Netzwerkverkehr anzeigen zu können
rescue:/# aptitude install -y file htop iftop less locate lshw lsof mc netcat-openbsd netcat-traditional- screen strace sysstat tcpdump
Anlegen der User-Accounts
Nun müssen wir auch User-Accounts anlegen, sonst können wir uns nicht mehr einloggen, hier mal für 2 von der Leitung (auch gut für neuinstallationen):
rescue:/# useradd -c "Sebastian Mohr" -m -s /bin/bash sebi rescue:/# passwd sebi rescue:/# su - sebi sebi@rescue:~$ mkdir .ssh sebi@rescue:~$ cat > .ssh/authorized_keys <<EOF ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAjtzKxPXNIlHzao8WeojHHCFvixMhDEFgt/4HlC+5DO+Vzned23Ymg6vKLKot+VtCR5qbshHbmvfiqFkj6qahPtZdzsMg7Git2lMd88MgvzDI8ao9f4o6NrPrP7nOTR/mk8zKzRPF79O/u2Pz2bRLiuaIn8fOCi3mqsnmUqA3zene9Hn/stURTHin+elcewQt2Q66YmhersY2nulXL6PVQsW1MhstVy02lMvbbaxdHmeG0FJY/e+ibZt1CR2l5OOZ6ZmbpfN/14Do5ebqB0lOoOSwvnSgnB78pg6cFDa/k8ugUnCMndbprBgxvGDHSBQf7dmCm4Pi2XnH6dltBnZwraewG3RsxmndqA2dGtSG7mLn9TjxjJ9W4LMOndtts9HzMFDXT1CY/Izv4PsaC8s3rAsvR6bT8lSyRDVdYkwmD/YmoX8dnpiNphmdJVO/4WiHWkL0j+BYVxGrd3dZ7yNhUSgftdvuVF99zWWoO1atZlN7xMMP2sI4Dz5NJvVLCy4nmKSYoDiKZ0s06fKzFMAoAePaBNawSNSei5I2eih/VyLq+qUvEbYrAtPcvApPaOT22MjP24LNf1+WWhlB8Zii+8cWNsW+58Ze2+Ku9/RqlmGltC9a7n2zVevkmCV4JJ8TBBW66IKuInixW6qs9sFYXiBWGi3Edwc1SYpz56Rc6U9h0pZiQJze7H4RH/PqowNifjPMEhO8Ci7xB59zzx1jQECo6UHs+2PDnPWnP+V8oiusrr9wu+ONcy6aStD sebi@sinkpad EOF sebi@rescue:~$ exit rescue:/# useradd -c "Jan Simons" -m -s /bin/bash jamasi rescue:/# passwd jamasi rescue:/# su - jamasi jamasi@rescue:~$ mkdir .ssh jamasi@rescue:~$ cat > .ssh/authorized_keys <<EOF ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAx2olFDwlPhh1plmUn24IZBj86gq2SxiqKgkmHEFy3qLKr5ZxiwqbZgDXba7ThGmcTmTEPGg/MhHl2pbbKaQrPGCrKDbtdJA2+8A/l4MDWln92KANqedR9n2L1ubEzFf4LUxBRIYMcu9L8PgqtJKIXq8bVD/i99tyJlE9Tz1y6LU= jan@blood ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuQQc/FK9lI1ZGecCkvf8PPl4Y/N+NW2GB/N8XSSf+1FQmNqqbGN5XhBOmzBWnTmEIjIOQVVsz6NH/ItT90Xxa0Tgu5BbLUc8WKqxIp5VjQI4/WYhJ3t+xopMDIdGqH5mMWUQpcGmUU/8/wgemMILahbQJXIeE9dP+BLFxTZ0UCFYNiuTDWLQxYeg46Kyg6AxVdNyOo6xIZG75vFuAVwoZRw3Z1UFEfWb+i2vwels2/CWAhGSJ8iWASCjlJTJCN4rPJUPDuHUC9s8w27064xyD/IeHtRlPRh3NzDcAhlACRd6HTjyy75iqXLEeRf5CFBiGSmqXQke6RdWnRoyfZHDPw== jan@subito EOF jamasi@rescue:~$ exit
Aufräumen
Am Schluss räumen wir noch alles auf:
rescue:/# exit rescue:~# killall ntpd rescue:~# killall nullmailer-send rescue:~# killall mdadm rescue:~# umount /mnt/boot/ rescue:~# umount /mnt/dev/ rescue:~# umount /mnt/proc/ rescue:~# umount /mnt/
Und schalten im OVH-Manager wieder auf Festplatten-Boot, dannach das letzte Kommando:
rescue:~# reboot
Und dann kommt die neue Kiste hoffentlich bald wieder hoch ;-)
Installation der Dual-Server-Lösung
Für einen professionellen Betrieb wollen wir mehrere Netze einrichten:
- Externes Netz
- Öffentliche IP-Adressen, Dienste für Benutzer
- Internes Netz
- Interner Datenaustausch, z.B. für DB-Abfragen, Mail zwischen den Kisten, usw.
- Aus Performanzgründen sollte geroutet und nicht gebriged werden
- Storage-Netz
- Schaufelt die benötigten Daten zu den Kisten; hier kümmert es sich um die Synchronisation der VM-Platten zwischen den Kisten mit DRBD.
- Hier sollte jeder DRBD-Link einzeln verschlüsselt sein.
- Admin-Netz
- Administration und Installation der Rechner. Hier müssen DHCP-Anfragen verschickt werden und die VMs sollen unabhängig von dem eingesetzten Netz direkt erreichbar sein können.
- Hier muss ein gebridgdes Netz vorliegen.
Weiterhin haben wir uns für die Virtualisierungslösung KVM entschieden. Im Test von 3 verschiedenen Versionen hat sich kvm-72 bewährt.
Die Performanztests sind hier zu finden: IT/Dokumentation/OVH-Grundinstallation/Performanztests
bridge-utils
oder Verbindungen zwischen den VMs
Damit unsere virtuellen Maschinen sinnvoll miteinander reden können, benötigen wir eine Bridge für das Admin-Netz, auf der sich dann die entsprechenden tap-Devices der Netzwerkkarten der KVM-Instanzen tummeln. Dadurch können sie bereits DHCP-Anfragen beantworten, was für den Installations-Server wichtig wird.
Wir installieren dafür bridge-utils
und tragen dannach in der /etc/network/interfaces
zwei zusätzliche Bridges ein und aktivieren sie. Wichtig dabei ist, das forward delay herabzusetzen, sonst können die KVM-Maschinen nicht übers Netz booten:
sebi@blackpearl:~$ sudo aptitude install bridge-utils sebi@blackpearl:~$ cat <<EOF | sudo sh -c 'cat >> /etc/network/interfaces' # The administration network auto bradmin iface bradmin inet manual bridge_ports none bridge_fd 0 bridge_maxwait 0 bridge_stp on # The internal data network auto brdata iface brdata inet manual bridge_ports none bridge_fd 0 bridge_maxwait 0 bridge_stp on EOF sebi@blackpearl:~$ sudo ifup bradmin sebi@blackpearl:~$ sudo ifup brdata
Nun sollten wir noch netfilter (Kernel-Firewall) aus Sicherheits- und Effizienzgründen auf den Bridges abschalten und die Änderungen aktivieren:
sebi@blackpearl:~$ cat <<EOF | sudo sh -c 'cat > /etc/sysctl.d/bridge-netfilter-off.conf' net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 EOF sebi@blackpearl:~$ sudo /etc/init.d/procps restart
openvpn
oder Verbindungen zwischen den Servern
Damit sie auch mit den Maschinen auf dem anderen Host im selben Subnetz sind und nach einer Migration immer noch unter der selben IP-Adresse zu erreichen sind, müssen wir diese Brücken miteinander verbinden. Dazu benutzen wir OpenVPN im p2p-Modus (da nur zwei Maschinen), um eine sichere Verbindung zum anderen Server aufbauen zu können.
Also installieren wir erstmal openvpn:
sebi@blackpearl:~$ sudo aptitude -y install openvpn
Dannach erstellen wir ein kleines Hilfs-Script zum Hinzufügen der Interfaces zu den jeweiligen Brücken, die Konfigurationsdateien und die gemeinsamen Schlüssel:
sebi@blackpearl:~$ cat <<'EOF' | sudo sh -c 'cat >> /etc/openvpn/brctl-wrapper.sh' #!/bin/sh # $1: "addif", "delif" # $2: bridge-name # $3: interface-name brctl $1 $2 $3 ip link set up $3 EOF sebi@blackpearl:~$ sudo chmod 755 /etc/openvpn/brctl-wrapper.sh sebi@blackpearl:~$ cat <<EOF | sudo sh -c 'cat >> /etc/openvpn/bounty-blackpearl-admin.conf' local 94.23.220.83 remote 94.23.198.106 port 14139 dev tap persist-tun persist-key up '/etc/openvpn/brctl-wrapper.sh addif bradmin ' script-security 2 user nobody group nogroup comp-lzo secret bounty-blackpearl-admin_static.key EOF sebi@blackpearl:~$ cat <<EOF | sudo sh -c 'cat >> /etc/openvpn/bounty-blackpearl-data.conf' local 94.23.220.83 remote 94.23.198.106 port 41201 dev tap persist-tun persist-key up '/etc/openvpn/brctl-wrapper.sh addif brdata ' script-security 2 user nobody group nogroup comp-lzo secret bounty-blackpearl-data_static.key EOF sebi@blackpearl:~$ sudo openvpn --genkey --secret /etc/openvpn/bounty-blackpearl-admin_static.key sebi@blackpearl:~$ sudo openvpn --genkey --secret /etc/openvpn/bounty-blackpearl-data_static.key
Die .key
-Dateien müssen nun verschlüsselt auf den 2. Host übertragen werden. Für die Konfigurationsdateien auf dem 2. Host müssen nur die Parameter von "local" und "remote" vertauscht werden.
drbd-modules
oder Daten-Speicher-Syncronisation
Als erstes einmal installieren wir die DRBD-Module und die DRBD-Utilities
sebi@blackpearl:~$ sudo aptitude -y install drbd8-modules-2.6-amd64 drbd8-utils
Dann schreiben wir noch den gemeinsam genutzten Teil der Konfigurationsdatei für DRBD.
sebi@blackpearl:~$ cat <<EOF | sudo sh -c 'cat > /etc/drbd.conf' global { usage-count no; } common { syncer { rate 80M; } startup { wfc-timeout 120; degr-wfc-timeout 60; } } EOF
Zum Schluss starten wir noch DRBD über die init-Scripte, damit die Module geladen werden können.
sebi@blackpearl:~$ sudo /etc/init.d/drbd start
Beim nächsten Systemstart werden die automatisch ausgeführt.
kvm
oder Virtuelle Maschinen
Wir installieren kvm und libvirt ohne recommends, das spart uns einige Pakete, die das System sehr aufblähen würden:
sebi@blackpearl:~$ sudo aptitude -y --without-recommends install kvm libvirt-bin
Anschließend fügen wir die Nutzer der libvirt-Gruppe hinzu, so dass sie mit dem virt-manager
arbeiten können.
sebi@blackpearl:~$ sudo usermod -G libvirt dyfa sebi@blackpearl:~$ sudo usermod -G libvirt sebi sebi@blackpearl:~$ sudo usermod -G libvirt chrit sebi@blackpearl:~$ sudo usermod -G libvirt unger sebi@blackpearl:~$ sudo usermod -G libvirt jamasi sebi@blackpearl:~$ sudo usermod -G libvirt nhornung
Wir erweitern KVM um die Möglichkeit des PXE-Netz-Boots, einmal per Boot-ROM, einmal per Boot-CD.
sebi@blackpearl:~$ sudo wget http://rom-o-matic.net/gpxe/gpxe-0.9.9/contrib/rom-o-matic/build.php --post-data 'version=0.9.9&ofmt=ROM+binary+%28flashable%29+image+%28.rom%29&nic=virtio-net&pci_vendor_code=1af4&pci_device_code=1000&A=Get+Image' -O /usr/share/kvm/pxe-virtio.bin sebi@blackpearl:~$ sudo wget http://rom-o-matic.net/gpxe/gpxe-0.9.9/contrib/rom-o-matic/build.php --post-data 'version=0.9.9&ofmt=ISO+bootable+image+%28.iso%29&nic=virtio-net&pci_vendor_code=1af4&pci_device_code=1000&A=Get+Image' -O /root/gpxe-0.9.9-virtio-net.iso
KVM-Standard-Host mit Anmerkungen
XML Aufspannen.
<domain type='kvm'>
Domain benennen.
<name>changeme</name>
Wird generiert.
<uuid></uuid>
Benutzter Speicher; Ballooning (ändern von currentMemory
) führte zu Abstürzen.
<memory>524288</memory> <currentMemory>524288</currentMemory>
Anzahl der CPUs
<vcpu>1</vcpu>
Wir fahren den Gast mit 64-Bit (x86_64
) / 32-Bit (i686
) und booten von Platte (hd
) / CD-ROM (cdrom
) / PXE aus dem Netzwerk (network
).
<os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os>
Wir können ACPI und APIC und werden das auch benutzen!
<features> <acpi/> <apic/> </features>
Unser Betriebssystem kann mit mehreren Zeitzonen gut umgehen.
<clock offset='utc'/>
Verhalten nach Beendigung des KVM-Prozesses
<on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash>
Wir verwenden /usr/bin/kvm
fürs virtualisieren.
<devices> <emulator>/usr/bin/kvm</emulator>
Ein CD-Laufwerk am IDE-Bus. Können wir nach funktionierendem Netzboot weglassen.
<disk type='file' device='cdrom'> <source file='/path/to/image.iso'/> <target dev='hda' bus='ide'/> <readonly/> </disk>
Zwei Platten, am flotten virtio-Bus. changeme_disk
ist die System-Platte, changeme_srv
ist das Dateisystem mit den Daten, welches unter /srv
im Zielsystem gemountet wird. Siehe auch IT/Dokumentation/Namenskonventionen
<disk type='block' device='disk'> <source dev='/dev/raid/changeme_disk'/> <target dev='vda' bus='virtio'/> </disk> <disk type='block' device='disk'> <source dev='/dev/raid/changeme_srv'/> <target dev='vdb' bus='virtio'/> </disk>
Die Netzwerk-Interfaces, wieder virtio. Netzwerk-Boot ist nur von der ersten definierten Karte möglich. Boot-ROM unter rom-o-matic.net besorgen, PCI-ID: 1af4:1000. 'bridge'-Interfaces werden gleich auf eine Brücke gelegt, 'ethernet'-Interfaces bleiben im Host sichtbar und können direkt geroutet werden. Maximale Länge des device-Namens beachten!
<interface type='bridge'> <source bridge='bradmin'/> <target dev='changeme_adm'/> <model type='virtio'/> </interface> <interface type='bridge'> <source bridge='brdata'/> <target dev='changeme_int'/> <model type='virtio'/> </interface> <interface type='ethernet'> <script path='no'/> <target dev='changeme_ext'/> <model type='virtio'/> </interface>
Grafische Ein- und Ausgabe. type='tablet'
nimmt er nicht an. Nur Konsole (<console/>
) nimmt er auch nicht an.
<input type='mouse' bus='ps2'/> <graphics type='vnc' autoport='yes' keymap='de'/> </devices> </domain>
Bitte IT/Dokumentation/OVH-Grundinstallation/KVM-Erstellung beachten!