LPS:AFS servery
Na této stránce je stručně popsána konfigurace našich AFS serverů.
- Databázové servery udržují informace o umístění volumů, skupinách, zálohování, ...
- Souborové servery jsou skutečným úložištěm dat.
Podrobná dokumentace je na stránkách projektu OpenAFS
Databázové servery
HW
Naši AFS buňku reprezentují 3 databázové stroje.
Jméno | HW | OS |
---|---|---|
oknos | SunFire v210, UltraSPARC IIIi, 1GB RAM | SunOS 5.9 |
nic | SunFire v210, UltraSPARC IIIi, 1GB RAM | SunOS 5.9 |
sauron | SunFire v210, UltraSPARC IIIi, 1GB RAM | SunOS 5.9 |
Konfigurace
Bosserver (Basic OverSeer Server ) spravuje procesy vlserver (Volume Location Server ), ptserver (Protection Server ), buserver (Backup Server ). Bosserver na serveru oknos navíc zajišťuje periodické spouštění zálohování a vytváření backup volumů (user.*.backup). Přestože používáme OpenAFS, jsou veškeré konfigurační soubory a data umístěna v adresáři /usr/afs (Transarc AFS konvence). AFS servery při startu kontrolují přístupová práva k těmto adresářům!
# ls -l /usr/afs total 10 drwxr-xr-x 2 root other 1024 Aug 18 13:13 bin drwx------ 3 root other 512 Aug 18 10:56 db drwxr-xr-x 2 root other 512 Aug 9 17:00 etc drwx------ 2 root other 512 Oct 16 04:00 local drwxr-xr-x 2 root other 512 Oct 16 04:00 logs
Základní konfigurace je umístěna v adresáři etc
# ls -l /usr/afs/etc total 14 -rw-r--r-- 1 root root 111 Aug 18 10:58 CellServDB -rw-r--r-- 1 root root 113 Aug 9 13:00 CellServDB_old -rw------- 1 root root 100 Aug 9 13:00 KeyFile -rw-r--r-- 1 root root 9 Aug 9 13:00 License -rw-r--r-- 1 root root 6 Aug 9 16:18 ThisCell -rw-r--r-- 1 root root 69 Aug 17 18:00 UserList -rw-r--r-- 1 root root 269 Aug 18 14:22 krb.conf
CellServDB obsahuje pouze jméno AFS buňky a seznam VLDB serverů (viz výše)
>zcu.cz #University of West Bohemia, Czech Republic 147.228.52.10 #oknos.zcu.cz 147.228.52.17 #nic.zcu.cz 147.228.10.18 #sauron.zcu.cz
KeyFile nese klíč - nikdy jej nenechávejte na veřejně přístupném místě!. KeyFile je společný pro všechny servery naší buňky obdobně jako soubor License. ThisCell obsahuje název lokální buňky - tedy zcu.cz. Soubor UserList je také shodný pro všechny servery a obsahuje seznam privilegovaných uživatelů (bos adduser nebo prosté překopírování souboru). V našem případě obsahuje uživatele:
admin sitera.root adm.admin kejzlar.root afsadm.ody.zcu.cz paja.root
Adresář bin obsahuje binární soubory AFS serverů. V db leží databáze udržované jednotlivými procesy (ptserver, vlserver, ...), jde o nejdůležitější část dat, která jsou replikována na všech VLDB serverech. Adresář local obsahuje především soubor BosConfig, jenž nese informace o AFS procesech, které mají na daném stroji běžet. Soubor lze mezi stroji kopírovat, za normálních okolností se vytváří příkazem bos (create, setrestart, ...) Př. BosConfig na serverech sauron a nic
restarttime 11 0 4 0 0 checkbintime 3 0 5 0 0 bnode simple buserver 1 parm /usr/afs/bin/buserver end bnode simple ptserver 1 parm /usr/afs/bin/ptserver end bnode simple vlserver 1 parm /usr/afs/bin/vlserver end
Server oknos obsahuje i informace pro zálohování
restarttime 11 0 4 0 0 checkbintime 3 0 5 0 0 bnode simple buserver 1 parm /usr/afs/bin/buserver end bnode simple ptserver 1 parm /usr/afs/bin/ptserver end bnode simple vlserver 1 parm /usr/afs/bin/vlserver end bnode cron userbackupmon 1 parm /usr/afs/bin/vos backupsys -prefix user. -localauth parm mon 22:00 end bnode cron userbackuptue 1 parm /usr/afs/bin/vos backupsys -prefix user. -localauth parm tue 22:00 end bnode cron userbackupwed 1 parm /usr/afs/bin/vos backupsys -prefix user. -localauth parm wed 22:00 end bnode cron userbackupthu 1 parm /usr/afs/bin/vos backupsys -prefix user. -localauth parm thu 22:00 end bnode cron userbackupweekend 1 parm /usr/afs/bin/vos backupsys -prefix user. -localauth parm sat 04:00 end
V local se nachází i soubor sysid obsahující jednoznačný identifikátor serveru (HW adresa, jméno, verze, ...). Tento soubor nikdy nekopírujte mezi servery. V případě potřeby ho lze smazat, při startu AFS serveru se automaticky vytvoří.
logs zahrnuje logy AFS procesů (BosLog, FileLog, ...).
Kontrola
Aktuální stav procesů lze zjistit příkazem
> bos status sauron Instance vlserver, currently running normally. Instance ptserver, currently running normally. Instance buserver, currently running normally.
nebo
> bos status sauron -long Instance vlserver, (type is simple) currently running normally. Process last started at Fri Sep 27 10:45:05 2002 (1 proc starts) Command 1 is '/usr/afs/bin/vlserver' Instance ptserver, (type is simple) currently running normally. Process last started at Fri Sep 27 10:45:05 2002 (1 proc starts) Command 1 is '/usr/afs/bin/ptserver' Instance buserver, (type is simple) currently running normally. Process last started at Fri Sep 27 10:45:05 2002 (1 proc starts) Command 1 is '/usr/afs/bin/buserver'
AFS zajištujě konzistenci databází replikovaných na těchto strojích. Informace o synchronizačním místu, výsledcích hlasování, ... mohou být získány příkazem udebug. Je potřeba uvést jméno serveru a port, na kterém patřičný proces svázaný s databází pracuje, např. 7002 Protection Server, 7003 Volume Location Server.
> udebug sauron 7002 Host's addresses are: 147.228.10.18 Host's 147.228.10.18 time is Thu Oct 20 11:55:41 2005 Local time is Thu Oct 20 11:55:42 2005 (time differential 1 secs) Last yes vote for 147.228.10.18 was 12 secs ago (sync site); Last vote started 12 secs ago (at Thu Oct 20 11:55:30 2005) Local db version is 1129567846.93 I am sync site until 45 secs from now (at Thu Oct 20 11:56:27 2005) (3 servers) Recovery state 1f Sync site's db version is 1129567846.93 0 locked pages, 0 of them for write Last time a new db version was labelled was: 234295 secs ago (at Mon Oct 17 18:50:47 2005) Server (147.228.52.17): (db 1129567846.93) last vote rcvd 15 secs ago (at Thu Oct 20 11:55:27 2005), last beacon sent 12 secs ago (at Thu Oct 20 11:55:30 2005), last vote was yes dbcurrent=1, up=1 beaconSince=1 Server (147.228.52.10): (db 1129567846.93) last vote rcvd 12 secs ago (at Thu Oct 20 11:55:30 2005), last beacon sent 12 secs ago (at Thu Oct 20 11:55:30 2005), last vote was yes dbcurrent=1, up=1 beaconSince=1
Pokud je vše v pořádku, má recovery state hodnotu 1f. Tento stav je ovšem uveden jen na jednom serveru - na aktuálním synchronizačním místě pro danou databázi (ta je určena hlasovaním, resp. nejnižší IP adresou).
Souborové servery
V jednotlivých lokalitách máme následující servery
- Bory - elektra1, elektra2, elektra3, eurynome, eurynome2, dce
- Husova - harpia
- Klatovská - ezop.pef
- Cheb - fennel.fek
Hardware
Na těchto strojích je spuštěn fileserver (procesy bosserver, fileserver, volserver, salvager):
Jméno | HW | OS | Poznámka |
---|---|---|---|
elektra1 | 1x Xeon/3.20GHz, 2GB RAM | Debian Linux, i686 | |
elektra2 | 1x Xeon/3.20GHz, 2GB RAM | Debian Linux, i686 | |
elektra3 | 1x Xeon/3.20GHz, 2GB RAM | Debian Linux, i686 | |
elektra4 | 1x Xeon/3.20GHz, 2GB RAM | Debian Linux, i686 | |
eurynome | 1x Xeon 3.06GHz, 2GB RAM | Debian Linux, i686 | |
eurynome2 | 1x Xeon 3.06GHz, 2GB RAM | Debian Linux, i686 | |
dce | 1x Xeon 3.20GHz, 2GB RAM | Debian Linux, i686 | |
dce2 | 1x Xeon 5160 @ 3.00GHz, 4GB RAM | Debian Linux, i686 | |
harpia | 1x Xeon E5420 @ 2.50GHz, 4GB RAM | Debian Linux, i686 | provozní, RO kopie pro město |
ezop.fpe | 1x Xeon E5310 @ 1.60GHz, 4GB RAM | Debian Linux, i686 | provozní, RO kopie pro FPE |
fennel.fek | 1x Xeon @ 2.60GHz, 1GB RAM | Debian Linux, i686 | provozní, RO kopie pro Cheb |
laila.civ | 1x Xeon @ 3.00GHz, 8GB RAM | Debian Linux, i686 | testovací server |
chryso1 | 1x Xeon, 4GB RAM | Debian Linux, amd64 | experimentální pro projekt FR Cesnet |
chryso2 | 1x Xeon, 4GB RAM | Debian Linux, amd64 | experimentální pro projekt FR Cesnet |
Využití prostoru jednotlivých typů volumů v GB:
* | user.* | sw.* | project.* | public.* | testovací data | ostatní | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Datum | RW | RO | BK | RW | RO | BK | RW | RO | BK | RW | RO | BK | RW | RO | BK | RW | RO | BK | RW | RO | BK |
11/2005 | 1129 | 180 | 893 | 241 | 0 | 241 | 105 | 108 | 103 | 296 | 5 | 308 | 21 | 16 | 21 | 406 | 0 | 163 | 60 | 51 | 57 |
10/2009 | 4659 | 552 | 937 | 937 | 0 | 937 | 241 | 241 | 0 | 956 | 6 | 0 | 97 | 61 | 0 | 2139 | 0 | 0 | 289 | 250 | 0 |
Důležité volumy a jejich rozmístění
V následující tabulce je seznam důležitých volumů, které je vhodné releasovat na všechny dostupné servery. Pokud se má provádět profylaxe na serveru s RW kopií tohoto volumu, pak přesun tohoto volumu na jiný server je významným plusem pro fungování AFS prostředí během profylaxe:
- root.afs
- root.cell
- common
- common.profiles
- users
- project
- sw
- public
Konfigurace
Některé prvky jsou shodné s konfigurací databázových serverů - CellServDB, sysid, KeyFile, ...
Jelikož na souborových serverech používáme OpenAFS, může být poněkud odlišná adresářová struktura na Linuxech (Debian). Přesvečte se, zda je konfigurace v /usr/afs nebo v /etc/openafs.
elektra1:~# ls -l /etc/openafs/ total 56 drwxr-xr-x 4 root root 4096 Mar 14 13:41 . drwxr-xr-x 43 root root 4096 Mar 14 13:41 .. -rw------- 1 root root 0 Dec 6 15:13 AFSLog -rw-r--r-- 1 root root 163 Mar 14 13:41 BosConfig -rw-r--r-- 1 root root 163 Dec 10 07:23 CellServDB -rw-r--r-- 1 root root 16340 Dec 6 12:40 CellServDB.old -rw-r--r-- 1 root root 7 Feb 14 12:22 ThisCell -rw-r--r-- 1 root root 2742 Dec 4 06:05 afs.conf -rw-r--r-- 1 root root 81 Feb 14 12:22 afs.conf.client -rw-r--r-- 1 root root 31 Feb 14 12:22 cacheinfo drwxr-xr-x 2 root root 4096 Dec 10 06:52 server drwxr-xr-x 2 root root 4096 Dec 4 06:05 server-local elektra1:~# ls -l /etc/openafs/server total 24 drwxr-xr-x 2 root root 4096 Dec 10 06:52 . drwxr-xr-x 4 root root 4096 Mar 14 13:41 .. -rw-r--r-- 1 root root 163 Dec 10 07:23 CellServDB -rw------- 1 root root 100 Dec 10 07:20 KeyFile -rw-r--r-- 1 root root 7 Feb 14 12:22 ThisCell -rw------- 1 root root 73 Dec 10 06:52 UserList elektra1:~# ls -l /var/log/openafs/ total 19336 drwxr-xr-x 2 root root 4096 Mar 14 13:41 . drwxr-xr-x 7 root root 4096 Mar 25 06:54 .. -rw-r--r-- 1 root root 58 Mar 14 13:41 BosLog -rw-r--r-- 1 root root 164 Mar 14 13:22 BosLog.old -rw-r--r-- 1 root root 228668 Mar 25 09:22 FileLog -rw-r--r-- 1 root root 653154 Mar 14 13:22 FileLog.old -rw-r--r-- 1 root root 192 Dec 16 09:05 SalvageLog -rw-r--r-- 1 root root 192 Dec 13 16:13 SalvageLog.old -rw-r--r-- 1 root root 4821243 Mar 24 22:48 VolserLog -rw-r--r-- 1 root root 14021053 Mar 13 22:45 VolserLog.old
BosConfig obsahuje jinou konfiguraci než na databázových serverech. Proces fileserveru se skládá ze tří základních procesů:
restarttime 16 0 0 0 0 checkbintime 3 0 5 0 0 bnode fs fs 1 parm /usr/lib/openafs/fileserver -L parm /usr/lib/openafs/volserver parm /usr/lib/openafs/salvager end
Parametr -L (Large) používáme pouze u velkých serverů (elektra1, elektra2, elektra3, tapes). Na Linuxech (přesněji v OpenAFS) lze použít pro ukládání dat (/vicep?) moderní souborové systémy - na elektra[1-3] např. reiserfs, na DUX máme standardní filesystem ufs.
Kontrola
Stav procesů je možné obdobně jako u databázových serverů zjistit prostřednictvím příkazu bos.
> bos status elektra1 -long Instance fs, (type is fs) currently running normally. Auxiliary status is: file server running. Process last started at Fri Jan 10 12:50:17 2003 (2 proc starts) Command 1 is '/usr/lib/openafs/fileserver -L' Command 2 is '/usr/lib/openafs/volserver' Command 3 is '/usr/lib/openafs/salvager'
Bos umožňuje rovněž vzdálené čtení logů (v adresáři /usr/afs/logs, popř. /var/log/openafs).
> bos getlog elektra1 FileLog | less Fetching log file 'FileLog'... Fri Jan 10 12:50:18 2003 File server starting Fri Jan 10 12:50:18 2003 afs_krb_get_lrealm failed, using zcu.cz. Fri Jan 10 12:59:25 2003 Partition /vicepa: attached 11586 volumes; 0 volumes not attached Fri Jan 10 13:04:33 2003 Partition /vicepb: attached 6404 volumes; 0 volumes not attached Fri Jan 10 13:04:55 2003 Partition /vicepc: attached 180 volumes; 0 volumes not attached Fri Jan 10 13:04:55 2003 Getting FileServer name... Fri Jan 10 13:04:55 2003 FileServer host name is 'elektra1' Fri Jan 10 13:04:55 2003 Getting FileServer address... Fri Jan 10 13:04:55 2003 FileServer elektra1 has address 147.228.54.15 (0xf36e493 or 0x93e4360f in host byte order) Fri Jan 10 13:04:55 2003 File Server started Fri Jan 10 13:04:55 2003 Fri Jan 10 13:10:51 2003 ProbeUuid failed for host 147.228.2.137:7001
Fileserver reaguje na vybrané signály.
- TSTP - enable logging (více informací v logu)
- HUP - disable logging (návrat k minimálnímu množství informací)
- XCPU - dump all internal datastructures
- QUIT - kill fs safely
Pokud se zdá, že AFS klient nereaguje, je vhodné zjistit, zda nečeká na komunikaci s nějakým serverem.
> rxdebug afro 7001 Trying 147.228.1.20 (port 7001): Free packets: 130, packet reclaims: 68, calls: 6147, used FDs: 64 not waiting for packets. 0 calls waiting for a thread 1 threads are idle Done.
> /usr/afsws/etc/rxdebug eryx1 7001 Trying 147.228.52.223 (port 7001): Free packets: 122, packet reclaims: 2, calls: 23407, used FDs: 64 not waiting for packets. 0 calls waiting for a thread 1 threads are idle Connection from host 147.228.54.15, port 7000, Cuid 9100a59f/8a6802f0 serial 248, natMTU 1444, flags pktCksum, security index 2, client conn rxkad: level crypt, flags pktCksum Received 9936 bytes in 38 packets Sent 57359 bytes in 76 packets call 0: # 38, state active, mode: receiving, flags: reader_wait, has_output_packets call 1: # 0, state not initialized call 2: # 0, state not initialized call 3: # 0, state not initialized ... ... ...
Vykazuje-li klient delší dobu stavy reader_wait, bude patrně problém v komunikaci s uvedenou IP adresou (serverem). Obdobně lze překontrolovat i stranu serveru.
> rxdebug elektra1 -allconn -rxstats | grep waiting_for_process
Jestliže výpis delší dobu obsahuje větší mnořství řádek, je možné očekávat nějaké problémy.
call 0: # 4417, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 9, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 14, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 15, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 456, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 15, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 10, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 972, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets ... ... ... call 0: # 13, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 2, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 20, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 109, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 11, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets call 0: # 19, state precall, mode: unknown, flags: waiting_for_process receive_done, has_input_packets
LVM2 na AFS-FS serverech
Rozšíření diskového prostoru
Inicializace a přidání dalšího disku /dev/dm-1 do LVM skupiny vgvicepa:
pvscan pvcreate /dev/dm-1 vgextend vgvicepa /dev/dm-1
Uvolnění původní partitiony /dev/dm-0 (vhodné pustit ve screen):
pvscan pvmove -v /dev/dm-0 vgreduce vgvicepa /dev/dm-0 pvremove /dev/dm-0
Zvětšení logického volumu /dev/vgvicepa/part1 na maximum volného místa:
lvscan lvextend -l +100%FREE /dev/vgvicepa/part1
Zvětšení XFS na mountpointu /vicepa:
mount xfs_growfs /vicepa