wolfgang friebel, 9. oktober 2003
DESCRIPTION
Hierarchische Administration des AFS File Space. Wolfgang Friebel, 9. Oktober 2003. Hierarchische AFS Administration. zur Zeit bei DESY laufendes Projekt Aufbauend auf Vorarbeiten im CERN Konzept eines allgemeinen Servers (arc, R. Többicke) AFS-Space Managementkonzept des CERN - PowerPoint PPT PresentationTRANSCRIPT
Wolfgang Friebel,9. Oktober 2003
Hierarchische AdministrationHierarchische Administrationdes AFS File Spacedes AFS File Space
9. Oktober 2003 AFS Administration 2
Hierarchische AFS Administration
zur Zeit bei DESY laufendes Projekt Aufbauend auf Vorarbeiten im CERN
Konzept eines allgemeinen Servers (arc, R. Többicke) AFS-Space Managementkonzept des CERN Programm zur Verwaltung des AFS Project Space im
CERN (afs_admin, W. Friebel) Neudesign eines allgemeinen Servers
Soll Kerberos5 und andere Authentifizierungsprotokolle beherrschen (Ersatz von arc, Basis SASL, P. Boettcher)
Adaption von afs_admin und anderen Prozeduren an neuen Server und Implementation DESY spezifischer Abläufe
9. Oktober 2003 AFS Administration 3
Allgemeine Ziele
Bereitstellung einer allgemeinen Arbeitsumgebung zur AFS Administration Wiederverwendung von möglichst viel Software Modularer Entwurf, Bausteine können ersetzt werden Kapselung, nur die notwendigen Schnittstellen sind
sichtbar Schaffung und Adaption von Werkzeugen, die auf
diesem Konzept aufbauen
9. Oktober 2003 AFS Administration 4
Gegenwärtige Situation bei DESY
Keine oder veraltete Werkzeuge zum Anlegen von Volumes und Mountpoints
Delegation von Aufgaben schwer möglich Keine Strategie zur Verteilung von Volumes auf
Fileserver Keine automatische Umverteilung von Volumes
auf die Fileserver
9. Oktober 2003 AFS Administration 5
Der Ansatz (1)
Kodierung in Perl (schnelle Entwicklungszyklen, ausgereifte stabile Server auf Basis Perl im Einsatz)
Benutzung vorhandener Perl Module: AFS.pm (auf CPAN) neueste Version unter www.mpa-garching.mpg.de/~nog
Zusätzliches Modul entwickelt: Vos.pm AFS.pm stellt nicht alle Funktionen des AFS API bereit insbesondere fehlend: Funktionen für volume server access Hauptzweck: Parsen der Volume und Partition Informationen (mindestens 2 weitere Perl Module tun in etwa das gleiche,
Infos dazu habe ich erst nach Kodieren von Vos.pm erhalten) Bereitstellung eines Mechanismus zum Klassifizieren von
Volumes definiere Mengen von Volumes mit gleichen Eigenschaften Volset.pm ist ein Package für solche "Volume Sets"
9. Oktober 2003 AFS Administration 6
Gruppierung von AFS Volumes
Volume sets (Volsets) Jeder Volume gehört zu einem oder mehreren Volsets Hierarchy von Volsets, wobei untergeordnete Volsets
Eigenschaften von übergeordneten Volsets erben Der oberste Volset für ein Volume definiert die Affinität
zu Partitionen (vice...) Der spezifischste Volset beschreibt Quota, Eigentümer,
Administrator, Zugehörigkeit zu Projekten usw.
9. Oktober 2003 AFS Administration 7
Beschreibung von Volsets
Alle Volsets werden in einem File afsadmin.cf beschrieben Es enthält mehrere Abschnitte, die den gesamten AFS space
beschreiben• Den Namen der AFS Zelle und Regel für den $HOME Pfad • Die vorhandenen AFS Server und ihre Funktion• Beschreibung der verfügbaren AFS Partitionen und die Names von
Volsets, die dort gespeichert werden dürfen (Sammlung von Projektvolumes in Pools).
• Volume patterns zur Beschreibung der Zuordnung von Volumes zu Volsets
• Liste von Volset Namen und deren Eigenschaften (mount point, quota, ...)
ACL's für Volsets zur Regelung von Volume Administrationsrechten müssen auf Server gehalten werden
Code dazu in Entwicklung (bzw. im arcd vom CERN enthalten)
9. Oktober 2003 AFS Administration 8
Grundlegende Charakteristika
Code ist weitgehend frei von Site spezifischem Code
Rolle der AFS server muss nicht fest einkodiert werden
Beliebige Zahl von Volsets (für Projekte etc.) kann auf eingeschränkte Liste von AFS server Partitionen verteilt werden
Schema könnte auch zur Strukturierung der User Volumes (Home directories) benutzt werden
9. Oktober 2003 AFS Administration 9
Charakteristika (Details)
Patterns in afsadmin.cf mit Variablen um einen Volset Namen von einem Volume Namen zu bestimmen, reduziert die Zahl der Patterns
Alternative Mechanismen zur Zuordnung von Volumes zu Volsets wären implementierbar (Datenbank)
Die Volsets bilden eine Hierarchie (von links nach rechts im Abschnitt [Volumepatterns]), die Volsets erben von ihren Eltern (quota, partition,...) falls sie nicht spezifischere Werte bereitstellen
Zugriff auf die Daten (z.B. Quota Information) ist nur über Funktionen möglich (separater Namensraum) Änderung der Implementation ohne Änderung des Interface Funktionen, die intern in den Modules benutzt werden, sind
verborgen
9. Oktober 2003 AFS Administration 10
afsadmin.cf (Beispiel)
[AFSSERVERS] #server_name OS server_functions
afs02 Linux fs
afsdb1 Solaris fs db arc reg
[PARTITIONS] #partition_names collection_names
afs02/(a,b,c) fixed
afsdb1/s sys
[VOLUMEPATTERNS] #perl_pattern collection_names
\.R$ recover
^s\.(\w+)\b fixed $1 $1_s
^user\b users
[VOLSETS]
ceres 4G exp/ceres #collection_name quota mount_point
ceres_s 2G
9. Oktober 2003 AFS Administration 11
Gegenwärtiger Stand
Vos.pm ist getested, Testsuite (testvos) ist vorhanden (hauptsächlich Parsen von vos exa &co. output)
Volset.pm ist getested, gleiche Testsuite, Funktionsumfang hauptsächlich an Bedürfnissen von afs_admin (verteilte Administration des Volume Managements) angepaßt
Stubs für allgemeinen Mechanismus zum Cachen von Daten in beiden Perl Modulen vorhanden (Verhalten beeinflußbar)
Dokumentation vorhanden (perldoc Vos/Volset) Prozedur zur Verwaltung des AFS Project Space im CERN
(afs_admin) existiert (client), Server ist noch arcd, wird im Rahmen des laufenden Projektes ersetzt)
9. Oktober 2003 AFS Administration 12
Interna
Perl Module mit Blick auf Objektorientierung geschrieben. Zur Zeit wird prozedurales Interface angeboten. Übergang auf OO ist einfach, wegen Rückwärtskompatibilität nicht realisiert
Alle Informationen werden intern in Strukturen gehalten (anonyme Perl Hashes, die Substrukturen enthalten können (anonyme Hashes oder anonyme Arrays)
Die meisten Daten kommen mit time stamps (für Caching) Zugriff auf die Daten von außen ausschließlich über
Funktionen (Encapsulation)
9. Oktober 2003 AFS Administration 13
Codebeispiel
# $vol can be volname or volID
my $volname=vid2name($vol);
# retrieve some volume attribute
my $quota=quota($volname);
my $timestamp=get_volattrib($volname, '_time');
# get all volsets the volume is in ($volsets[0] is poolname)
my @volsets=vol2set($volname);
# create a volume (without sanity checks)
my $to=choose_disk($volname);
# $to contains suitable partition, e.g. filesrv1/a
$to =~ s/\// /;
arc_execute("vos create $to $volname");
9. Oktober 2003 AFS Administration 14
Nächte Schritte
Installation von afs_admin bei DESY mit neuem Server Entwicklung eines Kerberos5 Servers nach dem Vorbild von
spamd (SpamAssassin) Authentisierung mit SASL (neben Kerberos weitere
Mechanismen möglich) Benutzung von Vos.pm und Volset.pm im Serverteil Entwicklung/Adaption weiterer Werkzeuge, die auf diese
Perl Module aufbauen (z.B. Loadbalancing durch Verlagern von AFS Volumes)
eventuell Entwicklung eines Web-Interfaces oder GUI für afs_admin
Anpassungen an neue geplante Versionen von AFS.pm mit erweitertem Funktionsumfang (Ersatz von Vos.pm)
9. Oktober 2003 AFS Administration 15
afs_admin Kommandos create [-q <quota>] [-u <user>] [-p <pool|srv[/part]>] <mnt> <volume> create_mount (<mount_point> <volume_name>)+ create_project -q <quota> [-u <user>] <project> [<mount_point_pattern>] create_replica [-p <pool|srv[/part]>] (<volume> [<srv/part>])+ create_scratch [-q <quota>] [-u <user>] [-p pool] [-w{0..9}] <project> create_volume [-p <pool|srv[/part]>] (<volume> [<srv/part>])+ create_workspace [-q<quota>] [-u<user>] [-p pool] [-w{0..9}] <project> delete <dir_path>+ delete_mount <dir_path>+ delete_project <project> delete_replica [-p <srv[/part]>] (<vol_name_or_ID> [<srv/part>])+ delete_scratch -u <user> -w{0...9} <project> delete_volume [-p <srv[/part]>] (<vol_name_or_ID> [<srv/part>])+ delete_workspace -u <user> -w{0...9} <project> help [command]+ list_acl [<project>+|<dir path>+] list_quota [<project>+|<dir path>+] list_occupancy [-q <max_percentage_quota>] [project|srv[/part]] list_project [-q <max_percentage_quota>] [<project>] move_volume [-p <pool|srv[/part]>] (<volume> [<srv/part>])+ rename <dir_path> <new_volume_name> rename_mount <old_dir_path> <new_dir_path> rename_volume <old_volume_name> <new_volume_name> set_acl <dir_path> <access_list_entries>+ set_owner <owner> <dir_path>+ set_quota <dir_path>|<project_name> [+]<max_quota_in_kbytes> vos_release (<volume name>|<dir path>)+
9. Oktober 2003 AFS Administration 16
Servercode für afs_admin
Liste der für afs_admin zu implementierenden Funktionen auf dem Server: fs: listacl, setacl, lsmount, mkmount, rmmount vos: addsite, create, release, remove, rename UNIX: chown, mkdir Authorisierung der Nutzer gemäß ACL's
9. Oktober 2003 AFS Administration 17
Verfügbarkeit
Vos.pm und Volset.pm sind auf ftp://ftp.ifh.de/pub/unix/gnu/perl/modules (Vos-1.07.tar.gz und Volset-1.06.tar.gz)
AFS.pm ist auf CPAN oder auf http://www.mpa-garching.mpg.de/~nog
afs_admin (erfordert laufenden arc daemon) und Servercode dazu (arc Prozeduren) sind bei Bedarf von mir ([email protected]) erhältlich, bei Projektende (Winter 2003/2004) auch auf obigem ftp Server