Zunächst OpenAFS und MIT-Krb5 installieren:
emerge -av openafs openafs-kernel mit-krb5
(bei den use-flags bitte darauf achten, daß ihr den krb4 Support drin habt, da OpenAFS irgendeine abgewandelte Form der 4er Tickets benutzt)
Konfiguration:
Kerberos:
Zunächst solltet ihr eure kdc.conf anpassen (zu finden in /etc/krb5kdc/kdc.conf )
ich benutze in disem Beispiel den Realm EXAMPLE.COM (bitte bei euch jeweils in die Domain !in Großbuchstaben! ändern)
Code: Select all
#/etc/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 750,88
[realms]
EXAMPLE.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = /etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 8d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal de
s:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
Code: Select all
#/etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = krb.example.com:88
admin_server = krb.example.com:749
default_domain = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[kdc]
profile = /etc/krb5kdc/kdc.conf
Initialisieren der Datenbank:
Zunächst initialisieren wir mal die Kerberos Datenbank:
Code: Select all
kdb5_util create -s
Also als erstes gehen wir in die *interaktive* Kerberos Console:
Code: Select all
kadmin.local
Code: Select all
kadmin.local: ank afsadmin
kadmin.local: ank -randkey afs
So nun haben wir in der Kerberos Datenbank zwei Principal stehen, jetzt müssen wir nur noch dem AFS seinen Schlüssel geben.
Nun lass ich den *interaktiven* Modus mal weg und extrahiere den Schlüssel in die Datei /etc/krb5.keytab.afs. Leider versteht AFS nicht alle Schlüssel (soweit ich weiß, bitte verbessern wenns anderster sein sollte)
Code: Select all
kadmin.local -q "ktadd -e des-cbc-crc:afs3 -k /etc/krb5.keytab.afs afs"
Code: Select all
kadmin.local -q "getprinc afs"
asetkey add 3 /etc/krb5.keytab.afs afs
Jetzt dürfte die Konfiguration von Kebreros abgeschlossen sein und ihre könnt die einzelnen Dienste für Kerberos starten.
Openafs:
Jetzt wirds endlich interessant.
Zunächst überprüft, daß kein AFS Dienst am Laufen ist "ps ax | grep bos", wenn doch killt ihn!
Konfiguration:
Setzen des Zellnamen
Code: Select all
echo "example.com" > /etc/openafs/server/ThisCell
Code: Select all
echo ">example.com #Example Cell" > /etc/openafs/server/CellServDB
echo "192.168.1.1 #afs.example.com" >> /etc/openafs/server/CellServDB
Starten wir den Bosserver:
Code: Select all
bosserver -noauth
Setzen der Zelle:
Code: Select all
bos setcellname afs.example.com example.com -noauth
Code: Select all
bos listhosts afs.example.com -noauth
Starten der einzelnen Dienste:
Code: Select all
bos create server buserver simple /usr/libexec/openafs/buserver -cell example.com -noauth
bos create server ptserver simple /usr/libexec/openafs/ptserver -cell example.com -noauth
bos create server vlserver simple /usr/libexec/openafs/vlserver -cell example.com -noauth
Aber erstmal zu dem Rest, also falls einige schon Dokus über AFS gelesen haben, dann werden sie vielleicht den kaserver vermissen. Stimmt, den starten wir nicht, da wir ja Mit-Kerberos benutzen wollen.
Die anderen beiden Dienste (vlserver und ptserver) sind zum einen der Volumen Location Server, der für die einzelnen Volumen verantwortlich ist, und der Protection Server, der für die Zugriffsberechtigung zuständig ist.
Erstellung des ersten Users:
Der Admin, den wir vorhin in Kerberos erstellt haben, wird nun auch in AFS erstellt:
Code: Select all
pts createuser -name afsadmin -cell texample.com -noauth
pts adduser afsadmin system:administrators -cell example.com -noauth
pts membership afsadmin -cell example.com -noauth
bos adduser afs.example.com afsadmin -noauth
Jetzt starten wir noch die restlichen Dienste:
Code: Select all
bos create afs.example.com fs fs /usr/libexec/openafs/fileserver usr/libexec/openafs/volserver /usr/libexec/openafs/salvager -cell example.com -noauth
Code: Select all
bos shutdown afs.example.com -noauth
Die Partition solltet ihr nun nach /vicepa mounten (jede weitere dann nach /vicepb, /vicepc usw.)
Sollte das Verzeichnis /afs noch nicht angelegt worden sein, einfach ein:
Code: Select all
mkdir /afs
Ok, ich hoffe ich hab nix ausgelassen und wir können nun erstmal nen Kaffe machen und tiiieeef Luft holen.
Starten des AFS:
Nun startet ihr den Openafs Server und Client über /etc/init.d/<welchen Namen sich die Mantainer heute mal ausgedacht haben>-server start (selbiges für den Client)
(Achtet darauf, dass der Kerberos Server auch läuft!!)
In der Theorie sollte nun alles laufen.
Zuerst einmal anmelden, da ja nun der Bosserver ohne das -noauth flag läuft:
Code: Select all
kinit afsadmin
aklog
Code: Select all
vos create afs.example.com /vicepa root.afs -cell example.com
vos create afs.example.com /vicepa root.cell -cell example.com
vos create afs.example.com /vicepa home -cell example.com
Mountpoints und Replika erstellen:
Code: Select all
cd /afs
fs mkm /afs/example.com root.cell
fs mkm /afs/.example.com root.cell -rw
vos addsite afs.example.com /vicepa root.afs
vos release root.afs
vos addsite afs.example.com /vicepa root.cell
fs mkm /afs/.example.com/home home
vos release root.cell
vos addsite afs.example.com /vicepa home
vos release home
fs checkvolumes
fs sa /afs system:anyuser l
fs sa /afs/example.com system:anyuser l
Wegen den einzelnen Befehlen solltet ihr am besten mal "fs help" und "vos help" eingeben.
Nun solltet ihr eigentlich in der Lage sein, in das Verzeichnis /afs/example.com/home zu wechseln
Benutzer anlegen:
Um einen Benutzer anzulegen, muß dieser in Kerberos eingetragen werden und in AFS:
Code: Select all
kadmin.local -q "addprinc <user>"
pts createuser <user> -id <uid>
pts adduser <user> -group <group>
!ACHTUNG! die <uid> des Users sollte mit der uid des Users im normalen System übereinstimmen, am besten ihr benutzt LDAP oder erstellt auf jedem Rechner den selben benutzen (wird auf dauer vielleicht *etwas* anstrengend)
Nun erstellen wir noch für den User das Verzeichnis:
Code: Select all
vos create afs.example.com /vicepa home.<user> -maxquota 0
fs mkm /afs/.example.com/home/<user> home.<user>
fs sa /afs/.example.com/home/<user> <user> all
vos release home
fs checkvolumes
vos backup home.<user>
fs mkm /afs/example.com/home/<user>/.backup home.<user>.backup
Aber nun kurz zur Erklärung, also als erstes erstellt ihr für den User ein Volumen mit maxquota 0 (unendlich bzw. bis die Platte voll ist, ihr könnt aber auch einen exakten Wert nehmen), dieses mountet ihr dann ins home und setzt die ACL "all" drauf. Danach übernehmen wir die Änderung am home Volumen wieder ins Read-Only Replika checken das Filesystem auf Fehler und erstellen ein Backup Volumen vom jeweiligen User Verzeichnis und mounten das wiederum ins verzeichnis ~/.backup
Um die Sache mit dem Backup ein bißchen zu automatisieren hab ich hier mal ein total schlechtes Bashscript vorbereitet:
Code: Select all
#!/bin/sh
vos listvol afs.example.com -localauth | sed 's/ .*//' | grep -e ^home | grep -v -e home$ -e readonly$ -e backup$ > /root/backupvol
exec < /root/backupvol
while read line
do
echo "Creating Backup of $line"
vos backup $line -localauth
echo "done"
done
Jetz können wir uns noch dem anderen Backup widmen, ihr erinnert euch an den buserver den wir irgendwo da oben mal gestartet haben, den wollen wir nun nutzen.
Aber zunächst wollen wir den Tape Coordinator Prozess mal einstellen.
Die erste Frage die sich wohl jedem stellt ist, was ist ein Tape und hab ich sowas? Die Antwort dürfte "nö" sein, ich kenne kein Schwein, dass ein Tape zu hause hat geschweige einen Bandroboter, also wenn ihr nicht gerade in nem Rechenzentrum arbeitet, werdet ihr sowas nicht haben. Aber das macht nichts
also geht mal ins Verzechnis /var/lib/openafs
dort erstellt ihr den Ordner "backup" und folgende Dateien:
Code: Select all
/var/lib/openafs/backup/tapeconfig
1GB 0 /dev/FILE 0
nun erstellen wir unser Tape, wie ihr oben seht benutze ich das device /dev/FILE als Tape, nun erstelle ich für dieses "Tape" eine config file:
Code: Select all
/var/lib/openafs/backup/CFG_FILE
FILE YES
MOUNT /root/afsbackup
UNMOUNT /root/afsbackup
NAME_CHECK No
ASK No
Alles was jetzt noch fehlt ist das Mount/Unmount Script, welches ich von der OpenAFS Doku habe.
Code: Select all
/root/afsbackup
#! /bin/csh -f
set devicefile = $1
set operation = $2
set tries = $3
set tapename = $4
set tapeid = $5
set exit_continue = 0
set exit_abort = 1
set exit_interactive = 2
#--------------------------------------------
if (${tries} > 1) then
echo "Too many tries"
exit ${exit_interactive}
endif
if (${operation} == "labeltape") then
echo "Won't label a tape/file"
exit ${exit_abort}
endif
if ((${operation} == "dump") |\
(${operation} == "appenddump") |\
(${operation} == "restore") |\
(${operation} == "savedb") |\
(${operation} == "restoredb")) then
/bin/rm -f ${devicefile}
/bin/ln -s /pfad/zum/backup/${tapename}_${tapeid} ${devicefile}
if (${status} != 0) exit ${exit_abort}
endif
exit ${exit_continue}
Code: Select all
butc -localauth
Ok nun müssen wir nur noch AFS sagen, was er backupen soll, dazu geht ihr in die *interaktive" Backup Console:
Code: Select all
backup
Code: Select all
backup> addvolset -name home
backup> addvolentry -name home -server afs.example.com -partition /vicepa -volumes home..*.backup
Code: Select all
backup> addhost -tapehost afs.example.com -portoffset 0
Code: Select all
backup> adddump -dump /week -expires 6d
Code: Select all
backup> dump -volumeset home -dump /week -portoffset 0
Dieser Beitrag darf nicht von anderen Seiten verlinkt werden ausserdem darf der Ausdruckt nur als Untersetzer für Kaffeetassen benutzt werden.
Rechtschreib und Grammatikfehler unterliegen der GPL3 und dürfen in anderen Texten verwendet werden
