| SM-NOTIFY(8) | System Manager's Manual | SM-NOTIFY(8) |
sm-notify - trimite notificări de repornire către omologii NFS
/usr/sbin/sm-notify [-dfn] [-m minute] [-v nume] [-p port-notificare] [-P ruta]
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 și versiunea 3, protocolul Network Status Monitor (sau NSM pe scurt) este utilizat pentru a notifica omologii NFS despre reporniri. În Linux, serviciul NSM este format 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 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 înregistrează numele de gazdă al serverului utilizat în comanda mount pentru a identifica serverele NFS care 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țiunea [sm-notify] sau, într-un caz, în secțiunea [statd] a fișierului de configurare /etc/nfs.conf.
Valorile recunoscute în secțiunea [sm-notify] includ: retry-time, outgoing-port și outgoing-addr. Acestea au același efect ca și opțiunile din linia de comandă m, p și, respectiv, v.
O valoare suplimentară recunoscută în secțiunea [sm-notify] este lift-grace. În mod implicit, sm-notify va ridica mai devreme perioada de grație a blocajului dacă nu are gazde de notificat. Unele configurații de înaltă disponibilitate vor rula un sm-notify pe fiecare adresă IP flotantă. În aceste configurații, ridicarea anticipată a perioadei de grație poate împiedica clienții să recupereze blocările. Stabilirea lift-grace la n va împiedica sm-notify să încheie perioada de grație înainte de termen. lift-grace nu are o opțiune de linie de comandă corespunzătoare.
Valoarea recunoscută în secțiunea [statd] este state-directory-path.
Comanda sm-notify trebuie inițiată ca root pentru a obține privilegiile necesare pentru a accesa baza de date cu informații despre stare. Aceasta 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.
Recuperarea blocării după o repornire este esențială pentru a menține integritatea datelor și pentru a preveni blocarea inutilă a aplicațiilor.
Pentru a ajuta rpc.statd să potrivească cererile SM_NOTIFY cu cererile NLM, trebuie respectate o serie de bune practici, care includ:
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.
TI-RPC este o condiție prealabilă pentru a susține NFS pe IPv6. În cazul în care suportul TI-RPC este integrat în comanda sm-notify, aceasta va alege un transport IPv4 sau IPv6 adecvat pe baza adresei de rețea returnată de DNS pentru fiecare omolog la distanță. Aceasta ar trebui să fie pe deplin compatibilă cu sistemele la distanță care nu acceptă TI-RPC sau IPv6.
În prezent, comanda sm-notify acceptă trimiterea de notificări numai prin intermediul protocoalelor de transport de datagrame.
rpc.statd(8), nfs(5), uname(2), hostname(7)
RFC 1094 - „NFS: Network File System Protocol
Specification”
RFC 1813 - „NFS Version 3 Protocol Specification”
OpenGroup Protocols for Interworking: XNFS, versiunea 3W - Capitolul 11
Olaf Kirch <okir@suse.de>
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 |