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-ieșire] [-p portul-de-ascultare] [-P ruta] [--nlm-port port] [--nlm-udp-port port]
DESCRIERE
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:
- rpc.statd
- Un demon care ascultă notificările de repornire de la alte gazde și gestionează lista de gazde care urmează să fie notificate atunci când sistemul local repornește.
- sm-notify
- Un program de ajutor care notifică omologii NFS după repornirea sistemului local
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.
FUNCȚIONAREA NSM ÎN DETALIU
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.
Notificare de repornire
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.
OPȚIUNI
- -d, --no-syslog
- Determină rpc.statd să scrie mesajele de jurnal la ieșirea de eroare standard în loc să le scrie în jurnalul sistemului, dacă a fost specificată și opțiunea -F.
- -F, --foreground
- Menține rpc.statd atașat la terminalul de control, astfel încât funcționarea NSM să poată fi monitorizată direct sau rulată sub un depanator. Dacă această opțiune nu este specificată, rpc.statd se pune în fundal imediat după ce pornește.
- -h, -?, --help
- Determină rpc.statd să afișeze informațiile de utilizare la ieșirea de eroare standard și apoi să iasă.
- -H, --ha-callout program
- Specifică un program de apelare de înaltă disponibilitate. Dacă această opțiune nu este specificată, nu se efectuează niciun apel. Pentru detalii, consultați secțiunea Apeluri de înaltă disponibilitate de mai jos.
- -L, --no-notify
- Împiedică rpc.statd să execute comanda sm-notify atunci când pornește, păstrând numărul de stare NSM și lista de monitoare existente.
- Notă: comanda sm-notify conține o verificare pentru a se asigura că se execută o singură dată după fiecare repornire a sistemului. Acest lucru previne notificarea falsă de repornire dacă rpc.statd se repornește fără opțiunea -L.
- -n, --name adresa-ip | nume-gazdă
- Acest șir este utilizat numai de către comanda sm-notify ca adresă sursă de la care se trimit cererile de notificare a repornirii.
- Forma adresa-ip poate fi exprimată fie ca o adresă de prezentare IPv4, fie ca o adresă de prezentare IPv6. Dacă această opțiune nu este specificată, rpc.statd utilizează o adresă wildcard ca adresă de conexiune de transport. A se vedea sm-notify(8) pentru detalii.
- -N
- Determină rpc.statd să execute comanda sm-notify și apoi să iasă. Deoarece comanda sm-notify poate fi, de asemenea, executată direct, această opțiune este depășită.
- -o, --outgoing-port port
- Specifică numărul portului sursă pe care comanda sm-notify ar trebui să îl utilizeze atunci când trimite notificări de repornire. Consultați sm-notify(8) pentru detalii.
- -p, --port port
- Specifică numărul portului utilizat pentru soclurile de ascultare RPC. Dacă această opțiune nu este specificată, rpc.statd va încerca să consulte /etc/services, dacă obține portul cu succes, stabilește același port pentru toate soclurile de ascultare, în caz contrar alege un port efemer aleatoriu pentru fiecare soclu de ascultare.
- Această opțiune poate fi utilizată pentru a fixa valoarea portului ascultătorilor săi atunci când cererile SM_NOTIFY trebuie să traverseze un paravan de protecție între clienți și servere.
- -T, --nlm-port port
- Specifică numărul portului pe care lockd trebuie să asculte cererile NLM. Aceasta stabilește atât portul TCP, cât și portul UDP, cu excepția cazului în care portul UDP este stabilit separat.
- -U, --nlm-udp-port port
- Specifică numărul portului UDP pe care lockd trebuie să asculte solicitările NLM.
- -P, --state-directory-path nume-rută
- Specifică numele de rută al directorului părinte în care se află informațiile privind starea NSM. Dacă această opțiune nu este specificată, rpc.statd utilizează în mod implicit /var/lib/nfs.
- După pornire, rpc.statd încearcă să își stabilească UID și GID efective la proprietarul și grupul subdirectorului sm al acestui director. După modificarea id-urilor efective, rpc.statd trebuie să acceseze doar fișierele din sm și sm.bak din cadrul rutei directorului de stare „state-directory-path”.
- -v, -V, --version
- Determină rpc.statd să afișeze informații despre versiune la ieșirea de eroare standard și apoi să iasă.
FIȘIER DE CONFIGURARE
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.
SECURITATE
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).
NOTE ADIȚIONALE
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:
- Numele de nod UTS al sistemelor dvs. trebuie să corespundă cu numele DNS pe care omologii NFS le folosesc pentru a le contacta.
- Numele de nod UTS ale sistemelor dvs. trebuie să fie întotdeauna nume de domenii complet calificate.
- Corespondența DNS directă și inversă a numelor de noduri UTS ar trebui să fie consecventă.
- Numele de gazdă pe care clientul îl folosește pentru a monta serverul trebuie să corespundă cu nume-monitor al serverului în cererile SM_NOTIFY pe care le trimite.
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.
Apeluri de înaltă disponibilitate
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.
Suport pentru protocoalele IPv6 și TI-RPC
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.
MEDIU
- RPC_STATD_NO_NOTIFY=
- Dacă este stabilită la un număr întreg pozitiv, are același efect ca și --no-notify.
FIȘIERE
- /var/lib/nfs/sm
- directorul care conține lista de monitoare
- /var/lib/nfs/sm.bak
- directorul care conține lista de notificări
- /var/lib/nfs/state
- Numărul de stare al NSM pentru această gazdă
- /run/run.statd.pid
- fișierul pid
- /etc/netconfig
- baza de date privind capacitatea de transport în rețea
CONSULTAȚI Ș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 <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>
TRADUCERE
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 |