flog

dem Flo sein Blog

Ex-Feuerwehrman, Baskettballer, Schachspieler, House-Addict (since 1998), Radfahrer, Fitnessmensch und vor allem: Webprogrammierer aus Leidenschaft. Meine Hosen hab ich auch auf Facebook und Xing runtergelassen

Jetzt per IPv6 erreichbar

Es ist geschafft, der Server ist komplett auf die neue Maschine umgezogen und nun auch per IPv6 erreichbar.

Virtueller Server - KVM, Raid, LVM und IPv6

Seit einigen Tagen hab ich einen eigenen Root-Server angemietet bei Webtropia in Düsseldorf. Wenn man dann schon einen Server aufsetzt, dann gleich richtig. Also Raid, Virtuelle Maschinen (via KVM), LVM und natürlich IPv6.

Grundsetup auf der Maschine ist ein Debian Lenny mit zwei Festplatten (erste Partition Swap, zweite raid1)

IPv6 Tunnel mit Ubuntu

Für letzteres muss ich erstmal meinem Ubuntu IPv6 beitreiben. Da mein Provider noch keine IPv6 Adressen verteilt, musste eine Tunnel-Lösung her. Entschieden hab ich mich letztendlich für Hurricane Electric, keine Ahnung warum, IPv6 Tunnel Anbieter gibt es ja genug.

Zur Einrichtung einfach auf deren Seite, anmelden und die Daten in die /etc/network/interfaces eintragen:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint IPv4_ENDOINT
     address  IPv6_ADRESSE
     netmask  64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

Dann per "sudo ifup he-ipv6" das Interface starten. Testen kann man die IPv6 Verbindung so:

$ ping6 -n -c 4 heise.de
PING heise.de(2a02:2e0:3fe:100::8) 56 data bytes
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=1 ttl=59 time=27.8 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=2 ttl=59 time=25.7 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=3 ttl=59 time=27.2 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=4 ttl=59 time=25.8 ms

--- heise.de ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 25.770/26.674/27.866/0.912 ms

Die Verbindung steht

EXT3 und Linux Software Raid verkleinern

Als nächstes musste ich Platz schaffen auf dem Server für das LVM. Das Grundsetup sind zwei Festplatten, die jeweils erste Partition ist 1GB groß und Swap, die zweite Partition belegt den Rest der Platte und ist als Softwareraid 1 zusammengeschaltet.

Layout sda und sdb

Nun muss die zweite Partition verkleinert werden, dabei muss man von innen nach außen vorgehen. Erst das Dateisystem verkleinern, dann das Raid und dann die Partitionen auf den beiden Platten. Ich hab mir das verkleinern des Raids gespart und folgendes gemacht:

  • Server im Rescue Modus hochfahren
  • Verkleinern des Dateisystem
  • Raid 1 anhalten
  • Raid 1 zerstören
  • Partition 2 verkleinern mit cfdisk
  • Partitionstabelle von sda auf sdb kopieren
  • Raid neu anlegen
  • Dateisystem auf Partitionsgröße vergrößern
  • Abschließender Check
e2fsck -f /dev/md0
resize2fs -p /dev/md0 9G
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sda2
mdadm --zero-superblock /dev/sdb2
cfdisk /dev/sda
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
mdadm --create --assume-clean --level=1 -n2 /dev/md0 /dev/sda2 /dev/sdb2
resize2fs -p /dev/md0
e2fsck -f /dev/md0

Wichtig ist beim neu anlegen des Raids das "--assume-clean", da die Daten auf den beiden Partitionen ja korrekt sind, anderenfalls würden alle Daten verloren gehen auf den beiden Partitionen. Ich hab das Dateisystem auf 9GB geschrumpft, per cfdisk die Partition /dev/sda2 auf 10GB verkleinert. Mit dem abschließenden resize2fs Aufruf wird das Dateisystem dann wieder auf die volle Partitionsgröße ausgedehnt.

Das neue Layout

Das LVM ist stand jetzt noch nicht angelegt, das kommt in einem späteren Schritt. Aber soweit mal der Plan. Jetzt erstmal den Server neu starten und hoffen, dass er sauber hoch fährt :-)

LVM Anlegen

Wenn der Server sauber hochgefahren ist, dann kann man auf der freien Partition auf sda und sdb ein Raid 1 anlegen und darin dann das LVM anlegen.

  • Raid 1 anlegen
  • LVM Physical Volume anlegen
  • LVM Volume Group anlegen
  • LVM Logical Volume anlegen
mdadm --create --level=1 /dev/md1 -n2 /dev/sda3 /dev/sdb3
pvcreate /dev/md1
vgcreate -s 16M vg0 /dev/md1
lvcreate -L 10G -n vm01 vg0

Jetzt ist das LVM erzeugt, und ich hab eine 10 GB große Partition angelegt, die als Root-Laufwerk für meine erste virtuelle Maschine dienen darf.

KVM einrichten

aptitude install kvm libvirt-bin

Als erstes habe ich dazu den Rechner auf bridged Networking umgestellt. Dazu einfach folgendes in die /etc/network/interfaces reinschreiben:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
	address DEINE_IPv4
	netmask IPv4_NETMASK
	broadcast IPv4_BROADCAST
	gateway IPv4_GATE
	bridge_ports eth0
	bridge_fd 9
	bridge_hello 2
	bridge_maxage 12
	bridge_stp off
iface br0 inet6 static
	address DEINE_IPv6
	netmask 64
	up ip -6 route add IPv6_GATEWAY dev br0 
	down ip -6 route del IPv6_GATEWAY dev br0
	up ip -6 route add default via IPv6_GATEWAY dev br0
	down ip -6 route del default via IPv6_GATEWAY dev br0
	pre-up modprobe ipv6
	bridge_ports eth0
	bridge_fd 9
	bridge_hello 2
	bridge_maxage 12
	bridge_stp off

Dann per "/etc/init.d/networking restart" das alles neu laden, danach sollte man auch vom Server IPv6 Adressen anpingen können:

$ ping6 heise.de -n -c4
PING heise.de(2a02:2e0:3fe:100::8) 56 data bytes
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=1 ttl=58 time=5.87 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=2 ttl=58 time=5.70 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=3 ttl=58 time=6.15 ms
64 bytes from 2a02:2e0:3fe:100::8: icmp_seq=4 ttl=58 time=5.44 ms

--- heise.de ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 5.445/5.794/6.159/0.265 ms

Wenn das geht und die IPv4 Verbindungen auch noch funktionieren, dann kann man jetzt die virtuelle Maschine starten. Ich hab mir hierzu ein aktuelles CD-Image von debian.com gezogen, mit dem ich die Installation starten kann:

virt-install --connect qemu:///system -n vm01 -r 512 -f /dev/vg0/vm01 -c debian-6.0.0-amd64-netinst.iso
--vnc --os-type linux --os-variant debianLenny --accelerate --network=bridge:br0 --hvm
  • -r 512: 512 MB Ram zuweisen
  • -f /dev/vg0/vm01: Das Laufwerk, das der Maschine als Festplatte gegeben wird
  • -c debian-6.0.0-amd64-netinst.iso: Image für CD-ROM Laufwerk
  • --vnc: Damit ich per VNC drauf komm :)
  • --network=bridge:br0: Netzwerkverbindung für diese VM über unser bridged Interface

Der Rest kann in der Manpage nachgelesen werden.

Damit läuft die Maschine und man kann per VNC drauf. Ich hab mir dazu auf meinem Ubuntu Desktop virt-manager installiert, damit kann man sich dann sehr bequem auf den virtuellen Maschinen einloggen und auch neue anlegen.

Zur Installation eines IPv6 only Guest noch folgende Hinweise:

  • IPv6 Nameserver in die /etc/resolv.conf eintragen
  • IPv6 Adresse eintragen und die Routen zum IPv6 Gateway eintragen
  • bei einem Debian Guest noch beachten, dass die Mirrors in der /etc/apt/sources.list per IPv6 erreichbar sind