<> = Erstellung einer Linux-VServer Instanz = /!\ Diese Anleitung enthält die Konfiguration für ein echtes System, mit allergrößter Wahrscheinlichkeit müssen einige bis alle Daten angepasst werden. /!\ Es ist empfehlenswert, vor der Benutzung dieser Anleitung diese einmal vollständig zu lesen. /!\ /!\ /!\ Ein Teil dieser Anleitung wurde mit Debian Etch erstellt, es wurden zwar alle Teile für Debian lenny angepasst, es ist dennoch nicht auszuschließen, dass nicht alle Kommandos in dieser Form funktionieren wie gewünscht. Vorsicht ist geboten. /!\ /!\ /!\ == vorbereitende Schritte == Das Dateisystem der VServer wird standardmäßig unterhalb von ''/var/lib/vservers/'' erzeugt, soll die neue VServer-Instanz eine eigene Partion, logical volume, etc. bekommen, ist diese dort zu mounten, der mountpoint muss dem ''Hostname'' (ohne Domain) der neuen Instanz entsprechen. {{{ mkdir /var/lib/vservers/garfield mount /dev/... /var/lib/vservers/garfield }}} /!\ Da bei der Erzeugung die Instanz gestartet wird ist darauf zu achten, daß deren IP nicht in Benutzung ist, z.B. in einem alten VServer, der migriert werden soll. Wird kein Routing-Protokoll wie OSPF (Paket ''quagga'') benutzt muss dafür gesorgt werden, daß entsprechende Routen auf dem VServer-Host und den Gateways existieren. == Erzeugen der Instanz == Im nächsten Schritt wird jetzt die VServer-Instanz erzeugt: {{{ newvserver --vsroot /var/lib/vservers/ --context 5142 --hostname garfield --domain prima.de --ip 83.97.51.42/32 --dist lenny --mirror http://lou.ping.de/debian/ --interface eth0 }}} Anmerkungen zu den Optionen: * Die Netzmaske der Instanz ist normalerweise ''/32'', es sei denn, es soll ein IP-Bereich in die Instanz geroutet werden. * Der Kontext muss für jeden VServer eindeutig sein, es bietet sich die Benutzung der Konketanation der letzten beiden Oktette der IP des VServers an. Die Erzeugung verläuft interaktiv. Jetzt wird die Instanz gestartet: {{{ vserver garfield start vserver garfield enter }}} Das erste Kommando startet die Instanz, mit dem zweiten wechselt man in den Kontext der Instanz um weitere Konfigurationen vorzunehmen. == Konfiguration der neuen VServer-Instanz == Abschließend sind sinnvollerweise noch ein paar Pakete zu installieren und zu konfigurieren. Da bei der Erzeugung root ohne Passwort konfiguriert und kein Benutzer anlegt wird, sollte dieses zuerst nachgeholt werden: {{{ passwd adduser fnord }}} Ausserdem ist es recht sinnvoll, einen ssh Server zu installieren, da sonst nur vom VHost auf den gerade erzeugten VServer zugegriffen werden kann: {{{ apt-get install openssh-server vi /etc/ssh/sshd_config PermitRootLogin no /etc/init.d/ssh restart }}} Außerdem müssen noch einige Limits angepasst werden, da der VServer-Host bereits einige Limits setzt und es innerhalb eines VServers nicht zulässig ist, limits zu erhöhen. Dazu sind in der Datei {{{ /etc/security/limits.conf }}} die Zeilen {{{ * soft sigpending 8192 * hard sigpending 8192 * soft msgqueue 819200 * hard msgqueue 819200 }}} hinzuzufügen. Alternativ kann die Verwendung von pam_limits deaktiviert werden, dazu sind die drei Dateien {{{ /etc/pam.d/cron /etc/pam.d/login /etc/pam.d/ssh }}} zu modifizieren. Dabei ist die Zeile {{{ session required pam_limits.so }}} auszukommentieren bzw. zu entfernen. Da in der Standardinstallation die Konfigurationsdatei für Limits {{{/etc/security/limits.conf}}} nur deaktivierte Beispiele enthält entsteht durch o.g. Modifikation kein Nachteil. == automatischer Start == Um die Instanz beim Systemstart automatisch starten zu lassen sind folgende Schritte notwendig: {{{ echo 'default' > /etc/vservers/garfield/apps/init/mark chown 0:0 /etc/vservers/garfield/apps/init/mark chmod 0644 /etc/vservers/garfield/apps/init/mark }}} == Kombination von Xen und VServer == Es ist möglich und sinnvoll, einen VServer-Host innerhalb einer Xen-DomU (siehe [[Software/Xen-DomU]]) zu installieren, dabei ist es möglich, die Partitionen für die Instanzen als virtuelle Partitionen zu erzeugen und die realen Partitionen oder logical volumes in der Xen-Dom0 zu verwalten. Dazu müssen folgende zusätzliche Schritte ausgeführt werden: === in der Dom0 === Um eine virtuelle Partition an die DomU weiter zu reichen kann wie folgt vorgegangen werden: {{{ lvcreate -L 5G -n garfield.prima.de VSERVER vi /etc/xen/griff.prima.de.cfg disk = [ ..., 'phy:VSERVER/garfield.prima.de,xvdc1,w' ] xm block-attach griff.prima.de phy:VSERVER/garfield.prima.de /dev/xvdc1 w }}} Mit diesen Kommandos wird ein neues logical volume erzeugt und der DomU (''griff.prima.de'') als ''xvdc1'' bekannt gemacht. Der Xen-DomU-Code im Standard-Kernel unterstützt leider die Verwendung von virtuellen IDE oder SCSI Geräten nicht mehr, damit wird die Zahl der virtuellen Geräte auf 240 (16 Geräte mit jeweils 15 Partitionen) begrenzt. Der Aufruf von ''xm block-attach'' macht das Gerät in der DomU bekannt, ohne diese neu starten zu müssen, der Eintrag in der Konfigurationsdatei sorgt dafür, daß das Gerät auch nach einem Neustart bekannt gemacht wird. === in der DomU === Innerhalb einer DomU ist es notwendig, das Paket ''libc6-xen'' zu installieren, dieses wird aber von den VServer-Skripten nicht installiert. Damit das Paket automatisch installiert wird, muss eine Zeile in ''/etc/vservers/newvserver-vars'' eingefügt werden: {{{ INSTALL_PACKAGES="$INSTALL_PACKAGES libc6-xen" }}} Die Verwendung von ''hvd'' Geräten setzt den Einsatz von ''udevd'' zwingend voraus, der folgende Absatz ist deshalb nur der Vollständigkeit halber noch enthalten. Wurde die Xen-DomU ohne ''udevd'' erzeugt, wird für das oben via ''xm block-attach'' bekannt gemacht Gerät kein Eintrag unterhalb von ''/dev'' erzeugt. Es kann aber der passende Eintrag unterhalb von ''/dev/.static/dev/'' verwendet werden, um die virtuelle Partition zu formatieren und zu mounten: {{{ mkfs.ext3 /dev/.static/dev/hda1 mount /dev/.static/dev/hda1 /var/lib/vservers/garfield }}} Bei einem Neustart der DomU wird für das Gerät ein Eintrag unterhalb von ''/dev'' erzeugt, sodaß dieser für den Eintrag in ''/etc/fstab'' benutzt werden kann und sollte: {{{ /dev/hvdc1 /var/lib/vservers/garfield ext3 defaults 0 0 }}} === Vergrößerung einer VServer-Partition === Mittels {{{ lvextend -L15G /dev/VSERVER/garfield.prima.de }}} wird zuerst das logical volume vergrößert. Leider leitet Xen diese Änderung aber nicht in die DomU weiter, deshalb muss das Vergrößern des Filesystems ebenfalls in der Dom0 geschehen. ==== in der DomU ==== ===== Schritt 1: VServer stoppen ===== {{{ vserver garfield.prima.de stop }}} ===== Schritt 2: Partition unmounten ===== {{{ umount /dev/hvdc1 }}} ==== in der Dom0 ==== ===== Schritt 3: Xen device nummer ermitteln ===== {{{ grep griff /var/log/xen/xend.log | grep garfield | grep DevController }}} Die Ausgabe endet etwa mit {{{ /local/domain/0/backend/vbd/1/771 }}} Die '''771''' ist die gesuchte Nummer. /!\ Xen v4 In Xen v4 lässt sich die Device-ID auf diese Art ermitteln: {{{ xenstore-ls | grep -B1 snorg }}} Die Ausgabe sieht etwa so aus: {{{ frontend = "/local/domain/3/device/vbd/51735" params = "/dev/ping10-data/snorg.ping.de" }}} Die '''51735''' ist hier die gesuchte Nummer. ===== Schritt 5: Xen Domain-ID ermitteln ===== {{{ xm list griff.prima.de }}} Die Nummer in der Spalte '''ID''' ist die gesuchte Nummer (hier 1). ===== Schritt 6: Device von der DomU entfernen ===== {{{ xm block-detach 1 771 }}} Hier die beiden in Schritt 4 und Schritt 5 ermittelten Zahlen einsetzen. ===== Schritt 7: Filesystem vergrößern ===== {{{ resize2fs /dev/VSERVER/garfield.prima.de }}} ===== zuletzt ===== Wie oben bereits beschrieben mitteln '''xm block-attach''' das Device wieder mit der DomU verbinden , im Innern mounten und den VServer wieder starten. == VServer-Setup bei PING == Zur Vereinfachung des Setup gibt es für de Serverkombination '''ping02.ping.de''' (Dom0) und '''griff.prima.de''' (DomU) zwei Skripten, die das Setup stark vereinfachen. === ping02.ping.de === ==== nächstes freies Blockdevice finden ==== {{{ grep xvd /etc/xen/griff.prima.de.cfg }}} * Devicenummern gehen von 1 bis 15 * Device xvda für das System frei lassen * Wenn keine Nummern in xvdb mehr frei sind, mit xvdc weiter machen, usw. ==== LV erzeugen und der DomU bekannt machen ==== {{{ /root/bin/vserver_setup.sh G /dev/xvd }}} ==== DomU-Konfiguration ergänzen ==== Das Skript gibt die Zeile aus, die in ''/etc/xen/griff.prima.de.cfg'' ergänzt werden muss. /!\ Das Komma in der vorigen Zeile nicht vergessen. === griff.prima.de === ==== VServer erzeugen ==== {{{ /root/bin/vserver_create.sh /dev/xvd }}} * Wie oben beschrieben bietet er sich an, als Kontext die letzten beiden Oktette der IP zu verwenden. ==== Endeinstellungen ==== Das Skript gibt eine Reihe von Kommandos aus, die auszuführen sind, in einigen sind Platzhalter enthalten, diese sind natürlich durch geeignete Werte zu ersetzen. == Weitere Aktionen mit VServern == === Ändern der IP eines VServers === Ein VServer bekommt seine IP beim Start zugewiesen, es wird keine Konfiguration im '''Innern''' der Instanz benötigt. Die IP eines VServsers findet sich in der Datei {{{ /etc/vservers/garfield/interfaces/0/ip }}} Wenn es sich bei der Instanz um ein Debian handelt, dann muss noch die Datei {{{ /var/lib/vservers/garfield/etc/hosts }}} bzw. {{{ /etc/hosts }}} in der Instanz selbst angepasst werden.