| RPC.STATD(8) | System Manager's Manual | RPC.STATD(8) |
rpc.statd - demonul serviciului NSM
rpc.statd [-dh?FLNvV] [-H program] [-n numele-meu] [-o portul-de-ieșire] [-p portul-de-ascultare] [-P ruta] [--nlm-port port] [--nlm-udp-port port]
Blocajele de fișiere nu fac parte din starea persistentă a sistemului de fișiere. Astfel, starea de blocare se pierde atunci când o gazdă repornește.
Sistemele de fișiere de rețea trebuie să detecteze, de asemenea, când starea de blocare este pierdută deoarece o gazdă la distanță a fost repornită. După ce un client NFS repornește, un server NFS trebuie să elibereze toate blocările de fișiere deținute de aplicațiile care rulau pe clientul respectiv. După ce un server repornește, un client trebuie să reamintească serverului de blocările de fișiere deținute de aplicațiile care rulează pe clientul respectiv.
Pentru NFS versiunea 2 [RFC1094] și NFS versiunea 3 [RFC1813], protocolul Network Status Monitor (monitorul stării rețelei) (sau NSM pe scurt) este utilizat pentru a notifica omologii NFS despre reporniri. În Linux, serviciul NSM este alcătuit din două componente separate în spațiul utilizatorului:
Managerul de blocare NFS local avertizează rpc.statd local cu privire la fiecare omolog de la distanță care trebuie monitorizat. Atunci când sistemul local repornește, comanda sm-notify notifică serviciul NSM de pe omologii monitorizați cu privire la repornire. Atunci când un omolog de la distanță repornește, acel omolog notifică serviciul rpc.statd local, care la rândul său transmite notificarea de repornire înapoi la managerul local de blocare NFS.
Prima interacțiune de blocare a fișierelor între un client și un server NFS determină managerii de blocare NFS de pe ambii omologi să contacteze serviciul NSM local pentru a stoca informații despre omologul opus. În Linux, managerul local de blocare contactează rpc.statd.
rpc.statd înregistrează informații despre fiecare unitate NFS monitorizată în memoria persistentă. Aceste informații descriu cum se contactează unitatea de la distanță în cazul în care sistemul local se repornește, cum se recunoaște care unitate monitorizată raportează o repornire și cum se notifică managerul local de blocare atunci când o unitate monitorizată indică faptul că a fost repornită.
Un client NFS trimite un nume de gazdă, cunoscut sub numele de nume-apelant al clientului, la fiecare cerere de blocare a unui fișier. Un server NFS poate utiliza acest nume de gazdă pentru a trimite apeluri asincrone GRANT către un client sau pentru a notifica clientul că a repornit.
Serverul Linux NFS poate furniza numele-apelantului clientului sau adresa de rețea a clientului către rpc.statd. În sensul protocolului NSM, acest nume sau adresă este cunoscut sub numele de nume-monitor al omologului monitorizat. În plus, gestionarul local de blocare îi spune lui rpc.statd care crede că este propriul nume de gazdă. În sensul protocolului NSM, acest nume de gazdă este cunoscut sub numele de numele-meu.
Nu există o interacțiune echivalentă între un server NFS și un client pentru a informa clientul cu privire la numele-apelantului al serverului. Prin urmare, clienții NFS nu știu de fapt ce nume-monitor ar putea folosi un server NFS într-o cerere SM_NOTIFY. Clientul Linux NFS utilizează numele de gazdă al serverului din comanda mount pentru a identifica serverele NFS care se repornesc.
La repornirea sistemului local, comanda sm-notify citește lista de omologi monitorizați din memoria persistentă și trimite o cerere SM_NOTIFY către serviciul NSM al fiecărui omolog la distanță din listă. Aceasta utilizează șirul nume-monitor ca destinație. Pentru a identifica ce gazdă a fost repornită, comanda sm-notify trimite în mod normal șirul numele-meu înregistrat atunci când gazda de la distanță a fost monitorizată. Comanda la distanță rpc.statd potrivește cererile SM_NOTIFY primite folosind acest șir, sau adresa de rețea a apelantului, la unul sau mai mulți omologi din propria listă de monitorizare.
Dacă rpc.statd nu găsește un omolog în lista sa de monitorizare care să corespundă unei cereri SM_NOTIFY primite, notificarea nu este transmisă managerului local de blocare. În plus, fiecare omolog are propriul număr număr de stare NSM, un număr întreg de 32 de biți care este actualizat după fiecare repornire de către comanda sm-notify. rpc.statd utilizează acest număr pentru a face distincția între repornirile reale și notificările reluate.
O parte a recuperării blocajului NFS constă în redescoperirea omologilor care trebuie să fie monitorizați din nou. Comanda sm-notify șterge lista de monitorizare din memoria persistentă după fiecare repornire.
Multe dintre opțiunile care pot fi definite în linia de comandă pot fi, de asemenea, controlate prin intermediul valorilor stabilite în secțiunile [statd] sau, în unele cazuri, [lockd] din fișierul de configurare /etc/nfs.conf. Valorile recunoscute în secțiunea [statd] includ port, outgoing-port (port-de-ieșire), name, stat-directory-path (ruta-directorului-de-stare) și ha-callout (apelare-de-înaltă-disponibilitate), care au fiecare același efect ca și opțiunea cu același nume.
Valorile recunoscute în secțiunea [lockd] includ port și udp-port care au același efect ca și opțiunile --nlm-port și, respectiv, --nlm-udp-port.
Demonul rpc.statd trebuie pornit ca root pentru a obține privilegiile necesare pentru a crea socluri cu porturi sursă privilegiate și pentru a accesa baza de date cu informații de stare. Cu toate acestea, deoarece rpc.statd menține un serviciu de rețea care funcționează de mult timp, el renunță la privilegiile de root imediat ce pornește pentru a reduce riscul unui atac de escaladare a privilegiilor.
În timpul funcționării normale, ID-ul efectiv al utilizatorului pe care îl alege este proprietarul directorului de stare. Acest lucru îi permite să continue să acceseze fișierele din acest director după ce a renunțat la privilegiile de root. Pentru a controla ID-ul de utilizator pe care îl alege rpc.statd, este suficient să utilizați chown(1) pentru a stabili proprietarul directorului de stare.
De asemenea, vă puteți proteja ascultătorii rpc.statd folosind biblioteca tcp_wrapper sau iptables(8). Pentru a utiliza biblioteca tcp_wrapper, adăugați în /etc/hosts.allow numele de gazdă ale omologilor cărora ar trebui să li se permită accesul. Utilizați numele demonului statd chiar dacă binarul rpc.statd are un nume de fișier diferit.
Pentru informații suplimentare, consultați paginile de manual tcpd(8) și hosts_access(5).
Recuperarea blocării după o repornire este esențială pentru menținerea integrității datelor și pentru prevenirea blocării inutile a aplicațiilor. Pentru a ajuta rpc.statd să potrivească cererile SM_NOTIFY cu cererile NLM, trebuie respectate o serie de bune practici, printre care:
Demontarea unui sistem de fișiere NFS nu oprește neapărat clientul sau serverul NFS să se monitorizeze reciproc. Ambele pot continua să se monitorizeze reciproc pentru o perioadă de timp, în cazul în care traficul NFS ulterior între cele două duce la noi montări și la blocarea de fișiere suplimentare.
În Linux, dacă modulul de nucleu lockd este descărcat în timpul funcționării normale, toți omologii NFS de la distanță nu sunt monitorizați. Acest lucru se poate întâmpla pe un client NFS, de exemplu, dacă un sistem de auto-montare elimină toate punctele de montare NFS din cauza inactivității.
rpc.statd poate executa un program special de apelare în timpul procesării cererilor SM_MON, SM_UNMON și SM_UNMON_ALL cu succes sau atunci când primește SM_NOTIFY. Un astfel de program poate fi utilizat în mediile NFS de înaltă disponibilitate (HA-NFS) pentru a urmări starea de blocare care ar putea fi necesar să fie migrată după o repornire a sistemului.
Numele programului de apelare este specificat cu ajutorul opțiunii -H. Programul se execută cu 3 argumente: Primul este fie add-client, del-client, fie sm-notify, în funcție 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 , în caz contrar este adresa-IP a apelantului care trimite SM_NOTIFY. Al patrulea este valoarea-stării din cererea SM_NOTIFY.
TI-RPC este o condiție prealabilă pentru a susține NFS pe IPv6. Dacă suportul TI-RPC este integrat în rpc.statd, acesta încearcă să pornească ascultători pe transporturile de rețea marcate „visible” în /etc/netconfig. Atâta timp cât cel puțin un ascultător de transport în rețea pornește cu succes, rpc.statd va funcționa.
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
Jeff Uphoff <juphoff@users.sourceforge.net>
Olaf Kirch <okir@monad.swb.de>
H.J. Lu <hjl@gnu.org>
Lon Hohberger <hohberger@missioncriticallinux.com>
Paul Clements <paul.clements@steeleye.com>
Chuck Lever <chuck.lever@oracle.com>
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
| 1 noiembrie 2009 |