EDV:OpenAFS
Allgemeines
Hier im KIP gibt es ein OpenAFS als zentrales Dateisystem.
- EDV-interne Seite (AFS-Server-Administration)
- Wikipedia Artikel: w:de:Andrew File System
- Homepage von OpenAFS: http://www.openafs.org
- Das Rechenzentrum hat auch ein AFS: http://www.urz.uni-heidelberg.de/Software/AFS/
- Hier ist eine schöne FAQ: http://www.angelfire.com/hi/plutonic/afs-faq.html
Was ist (Open)AFS?
AFS ist ein sicheres, verteiltes Dateisystem, welches an der Carnegie Mellon Universität entwickelt wurde. Danach wurde es von der Transarc Corporation, die mittlerweile von IBM übernommen wurde, vermarktet.
IBM ermöglichte dann eine parallele Weiterentwicklung als w:de:Open Source (http://www.openafs.org).
Vorteile von AFS
Quelle für die meisten Punkte (demnach auch genauer): http://www.angelfire.com/hi/plutonic/afs-faq.html
- Es erfolgt ein Caching der Daten auf dem Client.
- Anders als bei NFS sind die Daten lokaltionsunabhänig (und nicht fest).
- AFS ist sehr Skalierbar und daher für große Umgebungen geeignet.
- AFS unterstützt einige Sicherheits-Features wie Kerberos Authentisierung und feinere Rechtevergabe (ACLs).
- Die Sicht auf das AFS ist von jedem Client aus gleich (Single System Image (SSI))
- Die Daten können transparent über mehrerer Server verteilt werden.
- Demnach ist auch der Ausfall eines Server leichter zu verkraften, bzw. u.U. sogar 'egal'.
- Der Zugriff ist mit einem Client von überall aus möglich.
- w:de:Disk Quotas sind elementare Bestandteile von AFS.
Vergleich von AFS und NFS
AFS | NFS | |
---|---|---|
File Access | Common name space from all workstations | Different file names from differnt workstations |
File Location | Automatic tracking by | Mountpoints to files set by |
Tracking | file system processes and databases | administrators and users |
Performance | Client caching to reduce network load; callbacks to maintain cache consistency | No local disk caching; limited cache consistency |
Andrew Benchmark | Average time of 210 (5 phases, 8 clients) seconds/client | Average time of 280 seconds/client |
Scaling capabilities | Maintains performance in small and very large installations
Excellent performance on wide-area configuration |
Best in small to mid-size installations
Best in local-area configurations |
Security | Kerberos mutual authentication
Access control lists on directories for user and group access |
Security based on unecrypted user ID's
No access control lists |
Availability | Replicates read-mostly data and AFS system information | No replication |
Backup Operation | No system downtime with specially developed AFS Backup System | Standard UNIX backup system |
Reconfiguration | By volumes (groups of files)
No user impact; files remain accessible during moves, and file names do not change |
Per-file movement
Users lose access to files and filenames change (mountpoints need to be reset) |
System Management | Most tasks performed from any workstation | Frequently involves telnet to other workstations |
Autonomous | Autonomous administrative | File servers and clients |
Architecture | units called cells, in addition to file servers and clients
No trust required between cells |
No security distinctions between sites |
Other points:
- Some vendors offer more secure versions of NFS but implementations vary. Many NFS ports have no extra security features (such as Kerberos).
- The AFS Cache Manager can be configured to work with a RAM (memory) based cache. This offers signifigant performance benefits over a disk based cache.
- NFS has no such feature. Imagine how much faster it is to access files cached into RAM!
- The Andrew benchmark demonstrates that AFS has better performance than over NFS as the number of clients increases. A graph of this (taken from Andrew benchmark report) is available in: http://www.angelfire.com/hi/plutonic/images/andrew1.jpp
Quelle: http://www.angelfire.com/hi/plutonic/afs-faq.html
Quelle: ftp://ftp.transarc.com/pub/afsps/doc/afs-nfs.comparison
Unterschied von AFS zu Unix-FS
Vom Nutzerstandpunkt gibt es wenige Unterschiede zu einem 'normalen' Unix-Dateisystem.
- Authentisierung:
- Bevor ein Nutzer auf AFS-Dateien zugreifen kann, muss er sich mit einem Kerberos-Login authentisieren (kinit, aklog). (Dies sollte beim Login schon geschehen.) Ohne ein Token, ein Nutzer ist unauthentisiert und hat im AFS nur die Rechte von system:anyuser.
- Datei-(Zugriffs)-Rechte:
- Die Unix-mode-bits für 'group' und 'other' werden ignoriert und die von 'owner' werden anders ausgewertet. Die Nutzer sollten ihre Dateien mit den ACLs (des Verzeichnisses) schützen.
- Protection groups:
- Nutzer können ihre eigenen Gruppen in AFS erzeugen und verwalten.
- Hard links:
- Im AFS sind 'hard links' nur bei Verzeichnissen möglich. Symbolische Links arbeiten wie gewohnt.
- Verändern der Zugriffsrechte beim verschieben:
- Ein verschieben einer Datei in ein anderes Verzeichnis, ändert die Zugriffsrechte, da eine Datei die ACLs des Verzeichnisses annimmt.
- chown und chgrp:
- Nur Mitglieder der AFS-Gruppe 'system:administrators' kann diese Kommandos auf Dateien im /afs verwenden.
- Save on close: (für Programmierer)
- Der AFS Cache Manager sendet die Dateiänderungen nicht zu dem Server, bis ein 'close()' oder 'fsync()' system call aufgerufen wird. Ein 'write()' system call ändert nur die lokale Kopie des Clients.
- Der Unterschiedbeim schreiben einer Datei:
- local unix file: 'sofortiges' schreiben der Datei
- AFS file: 'sofortiges' schreiben der Datei im lokalem Cache, aber der Server erhält die Kopie nur bei einem 'close()' oder 'fsync()'
- Es ist wichtig zu verstehen, dass die meisten Anwendungen (z.B.: vi, emacs, frame, interleaf, wingz, dogz, ...) den 'close()' system call senden, wenn der Nutzer die Datei speichert. Nutzer müssen daher nicht die Anwendung verlassen, um die Änderungen an den Server zu senden!
- byte-range file locking: (für Programmierer)
- AFS erlaubt kein 'byte-range locking' in einer Datei. Der Aufruf von 'lockf()' und 'fcntl()' ergibt (success) obwohl er keinen Einfluss hat (wird ignoriert)!
- whole file locking: (für Programmierer)
- AFS erlaubt das locken einer gesammten Datei mit 'flock(). Die Prozesse auf dem gleichen Client, die diese Datei locken wollen, folgend dann den 'korrekten' locking-Semantiken. Prozesses auf anderen Clients erhalten bei einem lock-Request ein 'EWOULDBLOCK'.
- character and block special files: (für SysAdmins)
- AFS unterstützt keine character oder block spezial Dateien. Das mknod-Kommando kann keine solche speziellen Dateien im /afs erzeugen.
- AFS version of fsck: (für Sysadmins)
- AUf einem AFS-File-Server sind die Partitionen (für AFS '/vicepXX') kein Unix Dateisystem und das standard 'fsck'-Kommando darf dort nicht verwendet werden, sondern das von AFS selbst.
Quelle: http://www.angelfire.com/hi/plutonic/afs-faq.html
Verwendung
Authentisieren
Um mit AFS arbeiten zu können, muss man sich erst authentisieren (w:de:Authentisierung), da man sonst nur die Reche der Gruppe system:anyuser (also Anonymous) hat.
AFS arbeitet dabei mit Kerberos4-Token (w:de:Kerberos (Informatik)).
Arbeiten mit AFS-Kommandos
Die folgenden Kommondos sind alle bei (Open)AFS dabei und können ohne zusätzliches Kerberos verwendet werden.
Mit dem tokens-Kommando kann überprüft werden, ob ein solches Token existiert und wie lange es gültig ist:
userX@pcY:~$ tokens Tokens held by the Cache Manager: User's (AFS ID 1000) tokens for afs@kip.uni-heidelberg.de [Expires Feb 27 18:15] --End of list--
Zum Erhalten oder Erneuern eines Tokens, wird klog verwendet:
userX@pcY:~$ klog userX
Die Gültigkeit eines solchen Tokens bezieht sich standardmäßig auf einen Nutzer auf einem Rechner, in allen Shells (w:de:Betriebssystem-Shell, w:de:Unix-Shell). Um diese Gültikeit nur auf eine Shell zu beziehen, muss man diese mit kpagsh kapseln und danach erst das Token holen:
userX@pcY:~$ pagsh userX@pcY:~$ klog userX
Zum Zerstören des Tokens vor dem Ende seiner Laufzeit gibt es unlog:
userX@pcY:~$ unlog userX@pcY:~$ tokens Tokens held by the Cache Manager: --End of list--
Arbeiten mit Kerberos-Kommandos
Da wir Heimdal-Kerberos für die Authentisierung von AFS verwenden, können auch die Heimdal-Clients zur Authentisierung verwendet werden. Wenn OpenAFS gestartet ist, wird dann neben dem Kerberos-Ticket auch automatisch ein AFS-Token geholt.
Zur Abfrage der Tickets wird klist verwendet. Mit der Option '-T' wird auch gleich das AFS-Token angezeigt, falls vorhanden:
userX@pcY:~$ klist -T Credentials cache: FILE:/tmp/krb5cc_1000 Principal: userX@KIP.UNI-HEIDELBERG.DE Issued Expires Principal Feb 27 16:25:00 Feb 28 02:24:59 krbtgt/KIP.UNI-HEIDELBERG.DE@KIP.UNI-HEIDELBERG.DE Feb 27 16:25:00 Feb 28 02:24:59 afs@KIP.UNI-HEIDELBERG.DE Feb 27 16:25:00 Feb 28 02:24:59 User's (AFS ID 1000) tokens for kip.uni-heidelberg.de
Um ein Ticket zu erhalten, gibt es kinit. Das Token wird automatisch mit erzeugt:
userX@pcY:~$ kinit userX
Innerhalb der Güligkeit kann das Kerberos-Ticket auch verlängert werden, ohne das Passwort nochmal neu eingeben zu müssen:
userX@pcY:~$ kinit -R
Um die eigene Shell zu kapseln, gibt es dann kpagsh:
userX@pcY:~$ kpagsh
Zum Zerstören aller Tickets (und des Tokens) dient kdestroy:
userX@pcY:~$ kdestroy userX@pcY:~$ klist -T klist: No ticket file: /tmp/krb5cc_1000
Access Control Lists (ACLs)
Achtung: Von den Unix/Linux-Protection-Bits für User, Group und Others werden nur die von User verwendet. Dies erfolgt, nachdem die ACL ausgewertet wurde.
Unterschied der AFS-ACLs zu Unix-Dateirechten
Im typischen Unix-/Linux-Dateisystem existieren nur die drei Klassen Eigentümer, Gruppe, Alle. Eine Datei hat dann genau einen Eigentümer und genau eine Gruppe. Nun können jeder dieser Klassen für jede Datei bestimmte Rechte gegeben werden. Zum Beispiel (Ausgabe von ls -l):
-rw-r--r-- 1 floh users 396811 2006-11-10 17:12 Neuenheimer_Feld_Plan.jpg
Es ist eine feinere Rechteaufteilung implementiert (siehe Punkt EDV:OpenAFS#Rechte im AFS) und vor allem können beliebig viele Gruppen und Personen in einer ACL vorkommen. Zum Beispiel (Ausgabe von fs listacl):
Access list for /afs/kip/user/home1/sesselm is Normal rights: s3 rl system:administrators rlidwka system:authuser l sesselm rlidwka
Leider können solche ACLs nur auf Verzeichnisse angewendet werden. |
Besondere Gruppen im AFS
Gruppe | Wer gehört zu dieser Gruppe |
---|---|
system:anyusers | Jeder (Anonym) |
system:authusers | Alle Nutzer, die sich (erfolgreich gegenüber dem AFS) authentisiert haben. |
system:administrators | Gruppe der Administratoren |
Rechte im AFS
Es existieren sieben Zugriffsrechte im AFS:
Damit man diese Rechte nicht immer alle einzeln angeben muss, gibt es folgende kurzen Aliase:
Alias | Ausführlich | Bedeutung |
---|---|---|
write | rlidwk | Schreiben (alle außer Administer) |
read | rl | Lesen und Lookup |
all | rlidwka | Alle Rechte (auch a) |
none | Kein Recht, dient zum Entfernen von Rechten |
Rechte lesen und setzen
Mit fs listacl [Eintrag]+ erhält man die gültige ACL des Eintrages (Datei/Verzeichnis):
fs listacl *
Mit fs setacl kann eine ACL geändert werden (oder gleich mehrere):
fs setacl -dir ./mydirectory -acl system:anyuser read fs setacl -dir ./mydirectory ./mydir2 -acl system:anyuser none userX read groupY l
Um sich mit den Befehlen vertraut zu machen, kann fs help verwendet werden:
fs help fs help listacl fs help setacl
Nützliche Kommandos
Die Hilfeseiten der Kommandos sind meist schon sehr selbsterklärend und sollten deshalb auch verwendet werden:
fs help fs help listquota fs help listacl pts help pts help listentries
Auflisten der ACLs:
fs listacl /afs/kip/temp
Ändern der ACL:
fs setacl /afs/kip/temp system:administrator all
Auflisten der Quota:
fs quota /afs/kip/temp fs listquota /afs/kip/temp
Herausfinden des Volumes zum Mountpoint:
fs lsmount /afs/kip/temp
Löschen des Eintrags im Cache des AFS-Clients:
fs flush /afs/kip/temp
Auflisten aller Nutzer im AFS:
pts listentries
Auflisten aller Gruppen im AFS:
pts listentries -groups
Auflisten der Nutzer in einer AFS-Gruppe:
pts members users
Client-Installation (Zugang zum AFS)
General
Wichtig für AFS sind synchrone Zeiten der Systemuhren, deshalb sollte auf jedem Client die Uhrzeit auch stimmen (siehe NTP).
Allgemeine OpenAFS Dokumentation
Die Dokumentation von Openafs ist hier zu finden:
file:///afs/kip/afsdoc/html/QuickStartUnix/auqbg007.htm#HDRWQ133 http://www.openafs.org/pages/doc/QuickStartUnix/auqbg007.htm#HDRWQ133
CellServDB und ThisCell
Unsere Zelle (Cell) im KIP ist natürlich kip.uni-heidelberg.de, daher sieht die ThisCell-Datei so aus:
kip.uni-heidelberg.de
In der CellServDB sollte für die KIP-Zelle folgender Eintrag stehen:
>kip.uni-heidelberg.de 129.206.176.40 # ldap.kip.uni-heidelberg.de 129.206.176.149 # ldap2.kip.uni-heidelberg.de
Diese Dateien ist auch unter /afs/kip/common/etc/ zu finden.
Linux-Client
EDV:OpenAFS/Install_i386_linux24
EDV:OpenAFS/Install_i386_linux26
Solaris
HP-UX
Windows
Erstmal die allgemeine Doku: http://www.openafs.org/pages/doc/QuickStartWindows/awqbg002.htm#ToC
FAQ
Wo kann ich auf AFS zugreifen ohne selbst einen Client zu installieren?
Auf kip1.kip.uni-heidelberg.de ist ein OpenAFS-Client und auch die Heimdal-Clients installiert. Demnach kann dort auch auf das AFS zugegriffen werden.
kinit lehnt mein Passwort ab!
Es kann sein das noch kein Kerberos-Eintrag erzeugt wurde. Dies ist der Fall, wenn kinit sagt unknown statt Password incorrect
userX@kip1:~$ kinit userX userX3@KIP.UNI-HEIDELBERG.DE's Password: kinit: krb5_get_init_creds: Client (userX@KIP.UNI-HEIDELBERG.DE) unknown
Um dann seinen Eintrag zu erzeugen, muss man sich einmal auf Portal anmelden:
https://portal.kip.uni-heidelberg.de/account/
Nun wird versucht, das Kerberos-Passwort zu setzten.
Falls eine Fehlermeldung erscheint, müssen Sie sich and die EDV-Abteilung wenden. |
Wie komme ich an ein Backup meines Homeverzeichnisses?
Jeden Tag um 0:00Uhr wird der Stand aller volumes eingefroren und in ~/.backup verfügbar gemacht. Somit kann jeder auf diesen Stand seines Homeverzeichnisses zugreifen.
ls -l ~/ ls -l ~/.backup
Wo finde ich Was (Struktur im AFS)
Die Hauptverzeichnisse im AFS beherbergen bestimmte Sachen:
Pfad | Beschreibung |
---|---|
/afs/kip.uni-heidelberg.de/ | Hauptpfad (lesend wenn möglich) |
/afs/.kip.uni-heidelberg.de/ | Hauptpfad immer auf Schreibenden Volumes |
/afs/kip/user | Verzeichnis zu den Homeverzeichnissen der Nutzer im AFS |
/afs/kip/afsdoc | Dokumentation zu AFS |
/afs/kip/openafs | Lokale Binaries/Quellen von OpenAFS |
/afs/kip/common | Allgemeine Konfigurationsdateien (z.B. die CellServDB und die ThisCell) |
/afs/kip/@sys | Binaries für die jeweilige Systemarchitektur (z.B. i386_linux26, sun4x_510) |
/afs/kip/software | Verschiedene Software |
/afs/kip/software/Linux | Software für Linux und verschiedene (CD/DVD-Images) von Linux (z.B. SuSe, Debian, Knoppix, Ubuntu) |
/afs/kip/software/Windows | Software für Windows |
/afs/kip/data | |
/afs/kip/pictures | |
/afs/kip/temp | Allgemeines Temporäres Verzeichnis im AFS (viel Platz, aber kein Backup!) |
/afs/kip/computing | Daten der EDV-Abteilung |
/afs/kip/s7technik | |
/afs/kip/cad |