die Ausgangssituation sieht bei mir so aus:
Xen3 Server unter Lenny mit diversen Lenny VMs.
Eine Lenny VM mit diversen durchgereichten physikalischen LVs. In dieser VM läuft ein Samba der eine LV als Share zur Verfügung stellt auf das bisher per Timemachine gesichert wurde.
Unter OS X Leo/Schneeleopard wurden entsprechend diverser Tutorials Systemeinstellungen angepasst und auf dem Share ein Sparesbundle File angelegt.
Mit der Installation von Lion funktioniert dieses vorgehen allerdings nicht mehr, inwieweit die für Leo/SL durchgeführten Anpassungen noch nötig sind habe ich nicht überprüft.
Daher die Überlegung: Was nun?
Nach kurzer Recherche im Internet: Samba geht gar nicht. Netatalk 2.03 nur mit Hacks unter Lion.
--> Also hab ich mich entschieden auf Version 2.2 zu wechseln.
Versuch1, Installation netatalk 2.2 unter Lenny brach mit sehr vielen fehlenden Abhängigkeiten ab. Da ich keine Lust hatte die ansonsten funktionierende VM zu Schrotten und möglichst wenig Arbeit zu haben, habe ich mich für die folgende Variante entschieden:
Neuinstallation einer Lenny VM, Migration auf Squeeze und danach Installation von Netatalk.
Schritt 1: Anlegen der VM:
- Code: Alles auswählen
xen-create-image --hostname squeeze_srv --lvm=server_vm_vg --size=10GB --fs=ext3 --swap=512MB --memory=256MB --dhcp --install-method=debootstrap --role=udev
Damit wird unter dem Namen squeeze_srv eine neue VM angelegt, deren LVs für / und swap in der server_vm_vg (Wo auch meine anderen VMs liegen) angelegt werden. Um den Punkt der Netzwerkadressen kümmern wir uns später, der Parameter dhcp macht es erstmal einfacher ins Netz zu kommen. Die VM "squeeze_vm" nennen zu wollen war eher suboptimal, dazu später mehr.
Schritt 2: Starten der VM und überprüfen ob sie funktioniert:
- Code: Alles auswählen
xm create /etc/xen/squeeze_srv.cfg; xm list
Output:
Name ID Mem VCPUs State Time(s)
Domain-0 0 740 2 r----- 749.8
file_srv 7 256 1 -b---- 365.0
squeeze_srv 8 256 1 -b---- 4.0
--> VM wurde gestartet. Bis hierher hat also alles erstmal funktioniert.
Schritt 3: Updaten auf Squeeze:
Anpassen der /etc/apt/sources.lst (Alle vorhandenen Einträge die auf lenny verweisen auskommentieren und folgendes einpflegen:
- Code: Alles auswählen
deb http://ftp.de.debian.org/debian squeeze main non-free contrib
deb-src http://ftp.de.debian.org/debian squeeze main non-free contrib
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
Paketinformationen aktualisieren und neue Versionen installieren:
- Code: Alles auswählen
apt-get update; apt-get upgrade; apt-get dist-upgrade
Ich habe mir diesen Dreisatz angewöhnt, obwohl das ganze eigentlich auch ohne apt-get upgrade funktionieren sollte. Dabei gabs dann aber bei mir früher immer mal Fehlermeldungen. Also sicher ist sicher...
Stichprobe ob das ganze auch geklappt hat:
- Code: Alles auswählen
apt-cache show libc6
Sollte jetzt Version 2.11 anzeigen.
Ein normales Upgrade auf squeeze würde jetzt mit einem neuen Kernel weitergehen. Da ich ja aber nur die neuen Softwareversionen wollte um nicht alle Pakete händische zu aktualisieren und der vorhandene Lenny VM Kernel völlig ausreichend ist, habe ich die Update arbeiten an dieser Stelle beendet.
Schritt 4: Installation netatalk 2.2 Beta 4:
Netatalk 2.2 ist bis auf weiteres nicht Open Source, also bleibt nur der Weg über die Beta 4 Version. Da ich keine Lust hatte das ganze selber zu kompilieren, habe ich google nach netatalk 2.2 deb befragt und entsprechend fertige Files gefunden.
Download von netatalk:
- Code: Alles auswählen
wget https://launchpad.net/~stefanor/+archive/ppa/+build/2455196/+files/netatalk_2.2%7Ebeta4-0%7Eppa1_i386.deb --no-check-certificate
Das --no-check-certifcation ist in dem Falle nötig, das das Zertifikat nicht als gültig erkannt wurde.
Installation von benötigten Programmen und von netatalk:
- Code: Alles auswählen
apt-get install libcrack2
- Code: Alles auswählen
pkg --install netatalk_2.2~beta4-0~ppa1_i386.deb
Damit sind alle relevanten Sachen installiert und es kann ans konfigurieren gehen.
Schritt 5: Anpassen der VM Parametrierungen:
Als erstes sorgen wir dafür das die VM in Zukunft automatisch beim booten startet
- Code: Alles auswählen
cd /etc/xen/auto
ln -s /etc/xen/squeeze_srv.cfg 15_squeeze_srv
Dabei muss die 15 entsprechend der eigenen gewünschten Startreihenfolge der VMs angepasst werden.
Dann passen wir die IP Adresse an, damit der Server demnächst immer unter der selben Adresse zu erreichen ist (Geht mit meiner Fritz-Box leider nicht im DHCP Server festzulegen):
- Code: Alles auswählen
vi /etc/network/ifconfig
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.2.207
gateway 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255
Das ganze muss natürlich den eigenen Wünschen für Netzwerkkarte, IP Adresse, Gateway etc. entsprechend angepasst werden. Einen DNS Server hat die VM bereits durch den DHCP Server bekommen, hier muss also nichts angepasst werden.
Jetzt hängen wir noch das LV aus der Dom0 um, damit netatalk überhaupt den benötigten Speicher zur Verfügung stellen kann (hinzufügen des letzten Eintrages):
- Code: Alles auswählen
vi /etc/xen/squeeze_srv.cfg
disk = [
'phy:/dev/server_vm_vg/squeeze_srv-disk,sda2,w',
'phy:/dev/server_vm_vg/squeeze_srv-swap,sda1,w',
'phy:/dev/data_vg/timemachine_lv,sdz3,w',
]
Auch hier müssen die entsprechenden Parameter natürlich händisch angepasst werden. sdz3 ergibt sich bei mir aus der internen durchnummerierung aller Devices aller VMs. Im Normalfall wird da sowas wie sdz1 oder auch sdb1 stehen.
Damit das ganze auch nutzbar ist muss natürlich ein entsprechender Mountpoint in der VM eingerichtet werden:
- Code: Alles auswählen
mkdir /data
mkdir /data/timemachine
Zum Schluß bauen wir das ganze noch in die fstab ein:
- Code: Alles auswählen
vi /etc/fstab
/dev/sdz3 /data/timemachine ext3 defaults 0 0
Das wars soweit an Vorbereitungen. Natürlich muss die LV zuerst aus der "alten" VM entfernt werden. Dazu müssen einfach die letzten Schritte in umgekehrter Reihenfolge in der alten VM durchgeführt werden und danach die VM neu gebotet werden.
Theoretisch kanns jetzt ans parametrieren gehen, aber ich habe noch das Problem das sich der Server als (none) meldet. Nach vielem grübeln und Fehlversuchen ist die Lösung relativ einfach. Beim VM anlegen habe ich den Parameter hostname=squeeze_srv angegeben, damit die LVs und Konfigfiles entsprechend benannt werden. Leider kann ein Hostname keine Sonderzeichen enthalten... Also schnell noch angepasst:
- Code: Alles auswählen
vi /etc/hostname
nassrv
Die VM neu booten:
- Code: Alles auswählen
shutdown -r now
So, das wars nun endgültig an Vorbereitung. Ich habe nun eine VM die auf den Namen nassrv hört, unter der IP 192.168.2.207 zu erreichen ist, ein installiertes netatalk hat und auch ein Device auf dem Timemachine später sichern soll.
Schritt 5: Anpassen der netatalk Konfiguration und der Hilfsprogramme
Die Konfiguration unter /etc/default/netatalk passt in der 2.2B4 schon und muss nicht angepasst werden.
Anpassen der afpd.conf:
- Code: Alles auswählen
vi /etc/netatalk/afpd.conf
-setuplog "default log_maxdebug /var/log/afpd.log"
Damit wird das Logging auf Maximum gestellt und in afpd.log geschrieben. Wenn das System stabil läuft kann auch dieser Eintrag auskommentiert werden.
Einrichten der entsprechenden Freigabe:
- Code: Alles auswählen
vi /etc/netatalk/AppleVolumes.default
/data/timemachine Timemachine allow:User1 options:tm
Damit wird eine Freigabe mit dem Namen Timemachine eingerichtet die auf /data/timemachine mappt. User1 muss entsprechend angepasst werden und unter Unix auch die nötigen Rechte besitzen. "options:tm" ist lt. einigen Webseiten für den Betrieb mit Timemachine nötig, aber dazu zum Schluß noch ein Kommentar.
Noch ein Neustart von netatalk:
- Code: Alles auswählen
/etc/init.d/netatalk restart
Nun sollte das Share bereits per "Mit Server verbinden" unter
- Code: Alles auswählen
afp://192.168.2.207/Timemachine
zu erreichen sein.
Damit Timemachine auch etwas damit anfangen kann muss noch avahi installiert werden, damit das Share auch per Bonjour mitgeteilt wird:
- Code: Alles auswählen
apt-get install avahi-daemon
apt-get install libnss-mdns
Anpassen von nsswitch.conf:
- Code: Alles auswählen
vi /etc/nsswitch.conf
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
Zum Schluß noch dem ahavi mitteilen welchen Service er anbieten soll:
- Code: Alles auswählen
vi /etc/avahi/services/TM.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">NAS %h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_adisk._tcp</type>
<port>9</port>
<txt-record>sys=waMA=00:XX:XX:XX:XX:XX</txt-record>
<txt-record>dk2=adVF=0x83,adVN=Timemachine,adVU=956cf67c-f448-453f-9dec-dd17855ee076
</txt-record>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>
Wie der Service heisst ist völlig egal, viele verwenden adisk.service für die TM Funktionen, geht aber auch anders. Der Typ der Verbindung ist ja im xml File enthalten.
Unter "Name Replacement" habe ich noch extra NAS angegeben, sodass das Gerät im Finder als NAS nassrv auftaucht. Hilfreich wenn man mehrere NAS hat.
"waMA=" muss mit der MAC Adresse der VM gefüllt werden, "adVN=" mit dem Namen Eures Shares. "model=TimeCapsule" führt dazu das als Icon im Finder eine TimeCapsule verwendet wird, hier kann auch "XServe" eingetragen werden z.B.
Damit man sich die Freigaben auch normal im Finder ansehen kann gibts noch eine zweite Service Datei:
- Code: Alles auswählen
vi /etc/avahi/services/afpd.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Shares @ %h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
So, das war auch schon alles, nun noch ein reboot der VM damit alles in Ordnung ist:
- Code: Alles auswählen
shutdown -r now
Rein zur Sicherheit unter OS X noch evtl. vorhandene Reste von früheren Umkonfigurationen (Sichern auf Netzwerkshares) entfernen:
- Code: Alles auswählen
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 0
... und natürlich OS X neu booten.
Jetzt sollte in der Timemachine Konfiguration als Device das "NAS nassrv mit Timemachine" auswählbar sein und auch problemlos als Backupmedium genutzt werden können.
... was bleibt zu tun?
Beim Start von afpd bekomme ich Fehlermeldungen.
Zum einen bekomme ich die Meldung "volume "Timemachine" does not support Extended Attributes, using ea:ad instead". Unschön, aber erstmal nicht weiter kritisch.
Zum anderen gab es viele Fehlermeldungen das die Verwaltungsdatenbank dbd beschädigt wäre. Irgendwann war dieser Fehler aber plötzlich weg. Merkwürdig...
Zu guter letzt noch ein Verhalten vom Apple Finder das ich nicht nachvollziehen kann:
Ich sehe zwar die Freigabe "NAS nassrv", wenn ich auf diese Klicke bekomme ich aber nur "Nicht verbunden". Wenn ich hier das Timemachine Share sehen will muss ich mich manuell per "afp://192.168.2.207/Timemachine" verbinden. Dann sehe ich das Share, habe aber auch gleich noch die Freigabe "nassrv". Da das ganze der Funktion unter Timemachine keinen Abbruch tut, wäre ich zwar über einen Tip dankbar verschiebe das Thema aber auf später.
--> Gefixt: Einfach im Finder mit "Verbinden als" verbinden und der FInder merkt sich das.
Fehler, Korrekturen etc. bitte gern an mich!



