Dit document vertelt alles over het installeren van een openafs server op Gentoo Linux. Delen van dit document werden genomen van de AFS FAQ en IBM's Quick Beginnings guide on AFS. Welja, zoals ze zeggen, je hoeft het wiel niet telkens opnieuw uitvinden :)
AFS is een gedistribueerd bestandssysteem dat co-operatie tussen verschillende hosts toelaat zodat op een efficiente manier bestandssysteembronnen over een LAN of WAN gedeeld worden. Clients houden tevens een cache bij zodat frequent gebruikte bestanden sneller beschikbaar zijn.
AFS is gebaseerd op een gedistribueerd bestandssysteem dat oorspronkelijk ontwikkeld werd aan de Information Technology Center in Carnegie-Mellon University, genaamd de "Andrew File System". "Andrew" was de naam van het onderzoeksproject op CMU - dit ter ere van de universiteits-oprichters. Eenmaal Transarc opgericht was en AFS een product werd werd de "Andrew" weggelaten, dit om aan te duiden dat AFS verder dan het Andrew research project was geevolueerd en een volledig ondersteund kwaliteitsproduct geworden was. Er waren echter verschillende cellen die hun root-bestandssysteem als /afs hadden. Het veranderen van de root van het bestandssysteem was een niet-triviale hack. Dus om de vroegere AFS-cellen toe te laten verder te werken werd AFS als naam en root-bestandssysteem behouden.
Een AFS cel is een verzameling van servers die gegroepeerd zijn en een enkelvoudig, coherent bestandssysteem vormen. Een AFS cel is typisch een set hosts die eenzelfde Internet domeinnaam gebruiken (bv gentoo.org). Users loggen in via AFS client workstations die de nodige informatie en bestanden van de cel-servers afhalen in opdracht van de gebruikers. De gebruikers weten zelf niet van welke server de bestanden gehaald werden. Ze zullen zelfs niet merken indien de originele server verhuisd wordt, aangezien elk volume gedupliceerd en verplaatst wordt naar andere server(s) zonder dat de gebruiker dat mag merken. De bestanden zijn dus altijd beschikbaar. Denk aan NFS met steroiden :)
Wat zijn de voordelen van AFS?
De hoofd-voordelen van AFS zijn: caching mogelijkheid (op client, tussen 100 MiB tot 1 GiB), veiligheidsfeatures (Kerberos 4 gebaseerd, access control lists), eenvoud van adressering (je hebt maar 1 bestandssysteem), schaleerbaarheid (voeg servers toe aan de cel indien nodig), communicatie protocol.
Lees de AFS FAQ.
De OpenAFS website vind je op http://www.openafs.org.
AFS werd oorspronkelijk ontwikkeld door Transarc die nu onder IBM's voogdij zit. Je kan meer informatie over AFS vinden op Transarcs Website.
Je kan de originele IBM AFS documentatie verkrijgen indien gewenst. Deze is goe geschreven en indien je een AFS-server wil beheren is het aangeraden lectuur.
Codevoorbeeld 2.1 |
# emerge app-doc/afsdoc
|
Nota: Alle commando's moeten in 1 regel getypt worden. In dit document is er soms regelafbreking toegepast om de regels leesbaarder te maken. |
Nota: Jammergenoeg heeft de AFS client een ext2-partitie nodig voor het cachen omdat er op het moment van schrijven (eind 2001) locking-problemen zijn met reiserfs. Je moet een ext2-partitie aanmaken van ongeveer 200 MiB (meer zal geen zeer doen) en deze in /usr/vice/cache mounten. |
Je moet de bestanden CellServDB en ThisCell aanpassen alvorens je de afs client compileert. Deze bestanden staan in /usr/portage/sys-fs/openafs/files).
Codevoorbeeld 3.1 |
CellServDB: >netlabs #Celnaam 10.0.0.1 #storage ThisCell: netlabs |
CellServDB vertelt je client welke server(s) hij moet contacteren voor een specifieke cel. ThisCell, welja, de naam zegt genoeg :). Normaal gezien neem je een benaming die uniek is voor je organisatie. Je officieel domein is een goede keuze.
Codevoorbeeld 3.2 |
# emerge sys-fs/openafs
|
Na een succesvolle compilatie ben je startklaar.
Het volgende commando zal de nodige links aanmaken waardoor je je AFS client automatisch doet opstarten.
Waarschuwing: Je moet altijd een werkende AFS-server hebben in je domein wanneer je een AFS client start. Je systeem zal lang wachten op een timeout tijdens het booten wanneer dat niet het geval is, en dat kan lang duren. |
Codevoorbeeld 3.3 |
# rc-update add afs default
|
Het volgende commando zal alle nodige bestanden aanmaken voor zowel AFS server als client.
Codevoorbeeld 4.1 |
# emerge sys-fs/openafs
|
Je moet eerst de CellServDB en ThisCell voorbeeldbestanden verwijderen.
Codevoorbeeld 4.2 |
# rm /usr/vice/etc/ThisCell # rm /usr/vice/etc/CellServDB |
Hierna voer je bosserver uit om de Basic OverSeer (BOS) Server, dewelke de AFS serverprocessen beheert, op te starten. Bezie het als een init voor het systeem. Geef het -noauth argument mee om authorizatie uit te schakelen, aangezien je nog geen beheerder aangemaakt hebt.
Waarschuwing: Het uitschakelen van de authorizatie is een zware veiligheidsfout. Je moet alle volgende stappen in 1 trek uitvoeren en je mag de server niet verlaten totdat je de BOS Server herstart met authorizatie geactiveerd. Dit staat tevens in de AFS-documentatie. |
Codevoorbeeld 4.3 |
# /usr/afs/bin/bosserver -noauth &
|
Controleer of de BOS Server /usr/vice/etc/CellServDB en /usr/vice/etc/ThisCell aangemaakt heeft.
Codevoorbeeld 4.4 |
# ls -al /usr/vice/etc/
-rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB
-rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell
|
Definieren van een celnaam en celtoegang voor een server process
Geef nu namen aan je cells.
Belangrijk: Er zijn enkele restricties wat betreft naamformaat. Twee hiervan zijn dat de naam geen hoofdletters mag bevatten en niet meer dan 64 karakters lang mag zijn. Herinner je dat de celnaam onder /afs komt te staan, dus neem een die gemakkelijk typt. |
Nota: Vanaf nu wordt in dit document <server naam> gebruikt. Gelieve telkens deze te vervangen met de volledige hostname (zoals afs.gentoo.org). Voor de <celnaam> vervang je deze natuurlijk met de werkelijke celnaam (bv gentoo). |
Voer bos setcellname uit om de celnaam in te stellen:
Codevoorbeeld 4.5 |
# /usr/afs/bin/bos setcellname <server naam> <celnaam> -noauth
|
Starten van de Database Server Process
Voer nu bos create uit om de 4 databaseprocessen in /usr/afs/local/BosConfig in te stellen. Deze 4 processen draaien enkel op de servermachines.
| kaserver | De identiteits verificatieserver onderhoudt de identiteits database. Deze kan vervangen worden door een Kerberos 5 daemon. Indien iemand dat wil proberen mag je gerust dit document hiernaartoe aanpassen :) |
| buserver | De backup server onderhoudt de backup database. |
| ptserver | De protectieserver onderhoudt de protectiedatabase. |
| vlserver | De volume localisatieserver onderhoudt de volume locatisatiedatabase (VLDB). Zeer belangrijk :) |
Codevoorbeeld 4.6 |
# /usr/afs/bin/bos create <server naam> kaserver simple /usr/afs/bin/kaserver -cell <celnaam> -noauth # /usr/afs/bin/bos create <server naam> buserver simple /usr/afs/bin/buserver -cell <celnaam> -noauth # /usr/afs/bin/bos create <server naam> ptserver simple /usr/afs/bin/ptserver -cell <celnaam> -noauth # /usr/afs/bin/bos create <server naam> vlserver simple /usr/afs/bin/vlserver -cell <celnaam> -noauth |
Je kan snel zien of alle server draaien door bos status uit te voeren:
Codevoorbeeld 4.7 |
# /usr/afs/bin/bos status <server naam> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
|
Initialiseren van de Cell Security
Nu gaan we de veiligheidsmaatregelen initialiseren. We beginnen met het aanmaken van de volgende 2 entries in de identiteitsdatabase: de hoofdadministratieve account, genaamd admin, en een entrie voor de AFS serverprocessen, genaamd afs. Niemand zal er inloggen onder afs, maar de Server's Ticket Granting Service (TGS) maakt gebruik van deze account om de servertickets die ze uitdeelt aan de AFS clients te encrypteren. Dit trekt dus enorm veel op Kerberos :)
Voer kas uit in interactieve mode:
Codevoorbeeld 4.8 |
# /usr/afs/bin/kas -cell <celnaam> -noauth ka> create afs initial_password: Verifying, please re-enter initial_password: ka> create admin initial_password: Verifying, please re-enter initial_password: ka> examine afs User data for afs key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 100.00 hours. last mod on Mon Jun 4 20:49:30 2001 by lt;none> permit password reuse ka> setfields admin -flags admin ka> examine admin User data for admin (ADMIN) key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 25.00 hours. last mod on Mon Jun 4 20:51:10 2001 by lt;none> permit password reuse ka> |
Voer het bos adduser commando uit om de admin gebruiker aan de /usr/afs/etc/UserList toe te voegen.
Codevoorbeeld 4.9 |
# /usr/afs/bin/bos adduser <server naam> admin -cell <celnaam> -noauth
|
Gebruik het bos addkey commando om de AFS server encryptiesleutel in /usr/afs/etc/KeyFile te definieren.
Nota: Indien er gevraagd wordt naar de invoersleutel, geef dan het paswoord in dat je gegeven hebt bij de afs entrie toen je kas uitvoerde. |
Codevoorbeeld 4.10 |
# /usr/afs/bin/bos addkey <server naam> -kvno 0 -cell <celnaam> -noauth
input key:
Retype input key:
|
Voer het pts createuser commando uit om een beschermingsdatabase entrie aan te maken voor de admin gebruiker.
Nota: Per default zal de Protection Server de AFS UID 1 aan de admin gebruiker geven, aangezien deze de eerste gebruiker is die je aanmaakt. Indien het lokale passwd-bestand (/etc/passwd of equivalent) al een entrie heeft voor admin dat een andere UID gebruikt, maak dan gebruik van het -id argument om gelijke UIDs te gebruiken. |
Codevoorbeeld 4.11 |
# /usr/afs/bin/pts createuser -name admin -cell <celnaam> [-id <AFS UID>] -noauth
|
Gebruik het pts adduser commando om de admin gebruiker een lid te maken van de system:administrators groep, en het pts membership commando om deze te verifieren.
Codevoorbeeld 4.12 |
# /usr/afs/bin/pts adduser admin system:administrators -cell <celnaam> -noauth # /usr/afs/bin/pts membership admin -cell <celnaam> -noauth Groups admin (id: 1) is a member of: system:administrators |
Herstart alle AFS serverprocessen.
Codevoorbeeld 4.13 |
# /usr/afs/bin/bos restart <server naam> -all -cell <celnaam> -noauth
|
Starten van de fileserver, volumeserver en Salvager
Start het fs process, dat bestaat uit de fileserver, volumeserver en Salvager.
Codevoorbeeld 4.14 |
# /usr/afs/bin/bos create <server naam> fs fs /usr/afs/bin/fileserver
/usr/afs/bin/volserver
/usr/afs/bin/salvager
-cell <celnaam> -noauth
|
Controleer of alle processen draaien.
Codevoorbeeld 4.15 |
# /usr/afs/bin/bos status <servernaam> -long -noauth
Instance kaserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/kaserver'
Instance buserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/buserver'
Instance ptserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/ptserver'
Instance vlserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/vlserver'
Instance fs, (type is fs) currently running normally.
Auxiliary status is: file server running.
Process last started at Mon Jun 4 21:09:30 2001 (2 proc starts)
Command 1 is '/usr/afs/bin/fileserver'
Command 2 is '/usr/afs/bin/volserver'
Command 3 is '/usr/afs/bin/salvager'
|
De volgende actie is afhankelijk van of je al AFS bestandsservers draaiende hebt gehad in de cel of niet:
Indien je voor de eerste keer een AFS server in de cel installeert moet je een AFS volume aanmaken, root.afs.
Nota: Voor de partitie's naam, substitueer <partitienaam> met de naam van je computer's AFS Server partities. Bij conventie zijn deze /vicex waar x in de range a-z gelegen is. |
Codevoorbeeld 4.16 |
# /usr/afs/bin/vos create <servernaam>
<partitienaam> root.afs
-cell <celnaam> -noauth
|
Indien er bestaande AFS fileservermachines bestaan en er al volumes in de cel zitten, dan moet je vos sncvldb en vos syncserv uitvoeren zodat de VLDK gesynchroniseerd wordt met de werkelijke staat van de volumes op de lokale machine. Deze zal alle nodige data overkopieren naar je nieuwe server.
Codevoorbeeld 4.17 |
# /usr/afs/bin/vos syncvldb <server naam> -cell <celnaam> -verbose -noauth # /usr/afs/bin/vos syncserv <server naam> -cell <celnaam> -verbose -noauth |
Starten van de servers van de update server
Codevoorbeeld 4.18 |
# /usr/afs/bin/bos create <server naam>
upserver simple "/usr/afs/bin/upserver
-crypt /usr/afs/etc -clear /usr/afs/bin"
-cell <celnaam> -noauth
|
Configureren van de top level van het AFS bestandssysteem
Allereerst moet je enkele ACL's installeren zodat gebruikers /afs kunnen gebruiken.
Codevoorbeeld 4.19 |
# /usr/afs/bin/fs setacl /afs system:anyuser rl
|
Nu moet je een rootvolume aanmaken, readonly mounten op /afs/<celnaam> en lees/schrijf op /afs/.<celnaam>.
Codevoorbeeld 4.20 |
# /usr/afs/bin/vos create <server naam><partitienaam> root.cell # /usr/afs/bin/fs mkmount /afs/<celnaam> root.cell # /usr/afs/bin/fs setacl /afs/<celnaam> system:anyuser rl # /usr/afs/bin/fs mkmount /afs/.<celnaam> root.cell -rw |
Blaas nu maar eens goed uit. We zijn klaar. Je hebt nu een werkend AFS bestandssysteem op je lokaal net. Het is nu tijd om een grote kop koffie te drinken en de AFS documentatie uit te printen.
Nota: Het is zeer belangrijk dat de AFS server correct functioneert en dat alle systeemklokken gesynchroniseerd zijn. Dit doe je het best door een NTP-server te installeren op een machine (bv op de AFS server) en dan via een ntpclient alle clients hun klokken in te stellen. Dit kan je trouwens laten doen door de afsclient zelf. |
Nog te doen... momenteel lees je het best de AFS documentatie :)
The contents of this document are licensed under the Creative Commons - Attribution / Share Alike license.