RPC.STATD(8) System Manager's Manual RPC.STATD(8) NUME rpc.statd - demonul serviciului NSM SINOPSIS rpc.statd [-dh?FLNvV] [-H program] [-n numele-meu] [-o portul-de-ieire] [-p portul-de-ascultare] [-P ruta] [--nlm-port port] [--nlm-udp-port port] DESCRIERE Blocajele de fiiere nu fac parte din starea persistenta a sistemului de fiiere. Astfel, starea de blocare se pierde atunci cand o gazda repornete. Sistemele de fiiere de reea trebuie sa detecteze, de asemenea, cand starea de blocare este pierduta deoarece o gazda la distana a fost repornita. Dupa ce un client NFS repornete, un server NFS trebuie sa elibereze toate blocarile de fiiere deinute de aplicaiile care rulau pe clientul respectiv. Dupa ce un server repornete, un client trebuie sa reaminteasca serverului de blocarile de fiiere deinute de aplicaiile care ruleaza pe clientul respectiv. Pentru NFS versiunea 2 [RFC1094] i NFS versiunea 3 [RFC1813], protocolul Network Status Monitor (monitorul starii reelei) (sau NSM pe scurt) este utilizat pentru a notifica omologii NFS despre reporniri. In Linux, serviciul NSM este alcatuit din doua componente separate in spaiul utilizatorului: rpc.statd Un demon care asculta notificarile de repornire de la alte gazde i gestioneaza lista de gazde care urmeaza sa fie notificate atunci cand sistemul local repornete. sm-notify Un program de ajutor care notifica omologii NFS dupa repornirea sistemului local Managerul de blocare NFS local avertizeaza rpc.statd local cu privire la fiecare omolog de la distana care trebuie monitorizat. Atunci cand sistemul local repornete, comanda sm-notify notifica serviciul NSM de pe omologii monitorizai cu privire la repornire. Atunci cand un omolog de la distana repornete, acel omolog notifica serviciul rpc.statd local, care la randul sau transmite notificarea de repornire inapoi la managerul local de blocare NFS. FUNCIONAREA NSM IN DETALIU Prima interaciune de blocare a fiierelor intre un client i un server NFS determina managerii de blocare NFS de pe ambii omologi sa contacteze serviciul NSM local pentru a stoca informaii despre omologul opus. In Linux, managerul local de blocare contacteaza rpc.statd. rpc.statd inregistreaza informaii despre fiecare unitate NFS monitorizata in memoria persistenta. Aceste informaii descriu cum se contacteaza unitatea de la distana in cazul in care sistemul local se repornete, cum se recunoate care unitate monitorizata raporteaza o repornire i cum se notifica managerul local de blocare atunci cand o unitate monitorizata indica faptul ca a fost repornita. Un client NFS trimite un nume de gazda, cunoscut sub numele de nume-apelant al clientului, la fiecare cerere de blocare a unui fiier. Un server NFS poate utiliza acest nume de gazda pentru a trimite apeluri asincrone GRANT catre un client sau pentru a notifica clientul ca a repornit. Serverul Linux NFS poate furniza numele-apelantului clientului sau adresa de reea a clientului catre rpc.statd. In sensul protocolului NSM, acest nume sau adresa este cunoscut sub numele de nume-monitor al omologului monitorizat. In plus, gestionarul local de blocare ii spune lui rpc.statd care crede ca este propriul nume de gazda. In sensul protocolului NSM, acest nume de gazda este cunoscut sub numele de numele-meu. Nu exista o interaciune echivalenta intre un server NFS i un client pentru a informa clientul cu privire la numele-apelantului al serverului. Prin urmare, clienii NFS nu tiu de fapt ce nume-monitor ar putea folosi un server NFS intr-o cerere SM_NOTIFY. Clientul Linux NFS utilizeaza numele de gazda al serverului din comanda mount pentru a identifica serverele NFS care se repornesc. Notificare de repornire La repornirea sistemului local, comanda sm-notify citete lista de omologi monitorizai din memoria persistenta i trimite o cerere SM_NOTIFY catre serviciul NSM al fiecarui omolog la distana din lista. Aceasta utilizeaza irul nume-monitor ca destinaie. Pentru a identifica ce gazda a fost repornita, comanda sm-notify trimite in mod normal irul numele-meu inregistrat atunci cand gazda de la distana a fost monitorizata. Comanda la distana rpc.statd potrivete cererile SM_NOTIFY primite folosind acest ir, sau adresa de reea a apelantului, la unul sau mai muli omologi din propria lista de monitorizare. Daca rpc.statd nu gasete un omolog in lista sa de monitorizare care sa corespunda unei cereri SM_NOTIFY primite, notificarea nu este transmisa managerului local de blocare. In plus, fiecare omolog are propriul numar numar de stare NSM, un numar intreg de 32 de bii care este actualizat dupa fiecare repornire de catre comanda sm-notify. rpc.statd utilizeaza acest numar pentru a face distincia intre repornirile reale i notificarile reluate. O parte a recuperarii blocajului NFS consta in redescoperirea omologilor care trebuie sa fie monitorizai din nou. Comanda sm-notify terge lista de monitorizare din memoria persistenta dupa fiecare repornire. OPIUNI -d, --no-syslog Determina rpc.statd sa scrie mesajele de jurnal la ieirea de eroare standard in loc sa le scrie in jurnalul sistemului, daca a fost specificata i opiunea -F. -F, --foreground Menine rpc.statd ataat la terminalul de control, astfel incat funcionarea NSM sa poata fi monitorizata direct sau rulata sub un depanator. Daca aceasta opiune nu este specificata, rpc.statd se pune in fundal imediat dupa ce pornete. -h, -?, --help Determina rpc.statd sa afieze informaiile de utilizare la ieirea de eroare standard i apoi sa iasa. -H, --ha-callout program Specifica un program de apelare de inalta disponibilitate. Daca aceasta opiune nu este specificata, nu se efectueaza niciun apel. Pentru detalii, consultai seciunea Apeluri de inalta disponibilitate de mai jos. -L, --no-notify Impiedica rpc.statd sa execute comanda sm-notify atunci cand pornete, pastrand numarul de stare NSM i lista de monitoare existente. Nota: comanda sm-notify conine o verificare pentru a se asigura ca se executa o singura data dupa fiecare repornire a sistemului. Acest lucru previne notificarea falsa de repornire daca rpc.statd se repornete fara opiunea -L. -n, --name adresa-ip | nume-gazda Acest ir este utilizat numai de catre comanda sm-notify ca adresa sursa de la care se trimit cererile de notificare a repornirii. Forma adresa-ip poate fi exprimata fie ca o adresa de prezentare IPv4, fie ca o adresa de prezentare IPv6. Daca aceasta opiune nu este specificata, rpc.statd utilizeaza o adresa wildcard ca adresa de conexiune de transport. A se vedea sm-notify(8) pentru detalii. -N Determina rpc.statd sa execute comanda sm-notify i apoi sa iasa. Deoarece comanda sm-notify poate fi, de asemenea, executata direct, aceasta opiune este depaita. -o, --outgoing-port port Specifica numarul portului sursa pe care comanda sm-notify ar trebui sa il utilizeze atunci cand trimite notificari de repornire. Consultai sm-notify(8) pentru detalii. -p, --port port Specifica numarul portului utilizat pentru soclurile de ascultare RPC. Daca aceasta opiune nu este specificata, rpc.statd va incerca sa consulte /etc/services, daca obine portul cu succes, stabilete acelai port pentru toate soclurile de ascultare, in caz contrar alege un port efemer aleatoriu pentru fiecare soclu de ascultare. Aceasta opiune poate fi utilizata pentru a fixa valoarea portului ascultatorilor sai atunci cand cererile SM_NOTIFY trebuie sa traverseze un paravan de protecie intre clieni i servere. -T, --nlm-port port Specifica numarul portului pe care lockd trebuie sa asculte cererile NLM. Aceasta stabilete atat portul TCP, cat i portul UDP, cu excepia cazului in care portul UDP este stabilit separat. -U, --nlm-udp-port port Specifica numarul portului UDP pe care lockd trebuie sa asculte solicitarile NLM. -P, --state-directory-path nume-ruta Specifica numele de ruta al directorului parinte in care se afla informaiile privind starea NSM. Daca aceasta opiune nu este specificata, rpc.statd utilizeaza in mod implicit /var/lib/nfs. Dupa pornire, rpc.statd incearca sa ii stabileasca UID i GID efective la proprietarul i grupul subdirectorului sm al acestui director. Dupa modificarea id-urilor efective, rpc.statd trebuie sa acceseze doar fiierele din sm i sm.bak din cadrul rutei directorului de stare ,,state-directory-path". -v, -V, --version Determina rpc.statd sa afieze informaii despre versiune la ieirea de eroare standard i apoi sa iasa. FIIER DE CONFIGURARE Multe dintre opiunile care pot fi definite in linia de comanda pot fi, de asemenea, controlate prin intermediul valorilor stabilite in seciunile [statd] sau, in unele cazuri, [lockd] din fiierul de configurare /etc/nfs.conf. Valorile recunoscute in seciunea [statd] includ port, outgoing-port (port-de-ieire), name, stat-directory-path (ruta-directorului-de-stare) i ha-callout (apelare-de-inalta-disponibilitate), care au fiecare acelai efect ca i opiunea cu acelai nume. Valorile recunoscute in seciunea [lockd] includ port i udp-port care au acelai efect ca i opiunile --nlm-port i, respectiv, --nlm-udp-port. SECURITATE Demonul rpc.statd trebuie pornit ca root pentru a obine privilegiile necesare pentru a crea socluri cu porturi sursa privilegiate i pentru a accesa baza de date cu informaii de stare. Cu toate acestea, deoarece rpc.statd menine un serviciu de reea care funcioneaza de mult timp, el renuna la privilegiile de root imediat ce pornete pentru a reduce riscul unui atac de escaladare a privilegiilor. In timpul funcionarii normale, ID-ul efectiv al utilizatorului pe care il alege este proprietarul directorului de stare. Acest lucru ii permite sa continue sa acceseze fiierele din acest director dupa ce a renunat la privilegiile de root. Pentru a controla ID-ul de utilizator pe care il alege rpc.statd, este suficient sa utilizai chown(1) pentru a stabili proprietarul directorului de stare. De asemenea, va putei proteja ascultatorii rpc.statd folosind biblioteca tcp_wrapper sau iptables(8). Pentru a utiliza biblioteca tcp_wrapper, adaugai in /etc/hosts.allow numele de gazda ale omologilor carora ar trebui sa li se permita accesul. Utilizai numele demonului statd chiar daca binarul rpc.statd are un nume de fiier diferit. Pentru informaii suplimentare, consultai paginile de manual tcpd(8) i hosts_access(5). NOTE ADIIONALE Recuperarea blocarii dupa o repornire este eseniala pentru meninerea integritaii datelor i pentru prevenirea blocarii inutile a aplicaiilor. Pentru a ajuta rpc.statd sa potriveasca cererile SM_NOTIFY cu cererile NLM, trebuie respectate o serie de bune practici, printre care: Numele de nod UTS al sistemelor dvs. trebuie sa corespunda cu numele DNS pe care omologii NFS le folosesc pentru a le contacta. Numele de nod UTS ale sistemelor dvs. trebuie sa fie intotdeauna nume de domenii complet calificate. Corespondena DNS directa i inversa a numelor de noduri UTS ar trebui sa fie consecventa. Numele de gazda pe care clientul il folosete pentru a monta serverul trebuie sa corespunda cu nume-monitor al serverului in cererile SM_NOTIFY pe care le trimite. Demontarea unui sistem de fiiere NFS nu oprete neaparat clientul sau serverul NFS sa se monitorizeze reciproc. Ambele pot continua sa se monitorizeze reciproc pentru o perioada de timp, in cazul in care traficul NFS ulterior intre cele doua duce la noi montari i la blocarea de fiiere suplimentare. In Linux, daca modulul de nucleu lockd este descarcat in timpul funcionarii normale, toi omologii NFS de la distana nu sunt monitorizai. Acest lucru se poate intampla pe un client NFS, de exemplu, daca un sistem de auto-montare elimina toate punctele de montare NFS din cauza inactivitaii. Apeluri de inalta disponibilitate rpc.statd poate executa un program special de apelare in timpul procesarii cererilor SM_MON, SM_UNMON i SM_UNMON_ALL cu succes sau atunci cand primete SM_NOTIFY. Un astfel de program poate fi utilizat in mediile NFS de inalta disponibilitate (HA-NFS) pentru a urmari starea de blocare care ar putea fi necesar sa fie migrata dupa o repornire a sistemului. Numele programului de apelare este specificat cu ajutorul opiunii -H. Programul se executa cu 3 argumente: Primul este fie add-client, del-client, fie sm-notify, in funcie de motivul apelului. Al doilea este nume-monitor al omologului monitorizat. Al treilea este numele-apelantului al gestionarului de blocare solicitant pentru add-client sau del-client , in caz contrar este adresa-IP a apelantului care trimite SM_NOTIFY. Al patrulea este valoarea-starii din cererea SM_NOTIFY. Suport pentru protocoalele IPv6 i TI-RPC TI-RPC este o condiie prealabila pentru a susine NFS pe IPv6. Daca suportul TI-RPC este integrat in rpc.statd, acesta incearca sa porneasca ascultatori pe transporturile de reea marcate ,,visible" in /etc/netconfig. Atata timp cat cel puin un ascultator de transport in reea pornete cu succes, rpc.statd va funciona. MEDIU RPC_STATD_NO_NOTIFY= Daca este stabilita la un numar intreg pozitiv, are acelai efect ca i --no-notify. FIIERE /var/lib/nfs/sm directorul care conine lista de monitoare /var/lib/nfs/sm.bak directorul care conine lista de notificari /var/lib/nfs/state Numarul de stare al NSM pentru aceasta gazda /run/run.statd.pid fiierul pid /etc/netconfig baza de date privind capacitatea de transport in reea CONSULTAI I sm-notify(8), nfs(5), rpc.nfsd(8), rpcbind(8), tcpd(8), hosts_access(5), iptables(8), netconfig(5) RFC 1094 - ,,NFS: Network File System Protocol Specification" RFC 1813 - ,,NFS Version 3 Protocol Specification" OpenGroup Protocols for Interworking: XNFS, versiunea 3W - Capitolul 11 AUTORI Jeff Uphoff Olaf Kirch H.J. Lu Lon Hohberger Paul Clements Chuck Lever TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . 1 noiembrie 2009 RPC.STATD(8)