SUN Network File System (NFS) Operációs rendszerek SUN Network File System (NFS)
SUN Network File System (NFS) Elosztott állományrendszer: SUN cég (USA), első változata 1985, szabadon elérhető protokoll és referencia-implementációk, szinte szabvány az elosztott állományrendszere.
A SUN NFS jellemző tulajdonságai A kliens-szerver modell alkalmazása. A modell a szinkron távoli eljáráshívásra (Remote Procedure Call - RPC) épül: a kliens folyamatok mindig megvárják a kérésük teljesítését.
SUN NFS felhasználói felület I. Helyi file-rendszer láthatóvá tétele (exportálás): egy vagy több file-rendszer teljes vagy részleges (rész fa) exportálása. Elérési jogok definiálása kliensenként (konfigurációs file). Távoli file-rendszer bekapcsolása, mount-olása: elérési jogosultságok definiálása mellett.
SUN NFS felhasználói felület II. Szoros (hard), illetve laza (soft) mount-olás: addig próbálkozik a kívánt file elérésével, amíg el nem éri, adott számú próbálkozás után leáll és hibaüzenet. Távoli file-ok elérése: lokális file-okkal azonos módon. A szerver csak a saját, lokális file-rendszerét exportálhatja, a rekurzió elkerülése miatt.
SUN NFS tervezőinek célkitűzései I. Minden operációs rendszer alatt lehetséges legyen megvalósítani a protokollt. A protokoll hardver-független legyen. Létezzen egyszerű újraindítási lehetőség a kliens, illetve a szerver számára.
SUN NFS tervezőinek célkitűzései II. A kliens kezelje az operációsrendszer-függő file-elérést. Összemérhető teljesítmény a helyi file-rendszerrel. A hálózati összeköttetéstől független, illetve a forgalomnövekedéssel bővíthető kapacitású implementáció.
SUN NFS megvalósítása Következmény: az állapotmentes megvalósítás. Előnye: az egyszerű újraindíthatóság. Hátránya: a szerver csak stabil állapotában válaszolhat a kliens kéréseire: ez késleltetést okozhat, pl.: cache használata esetén, a kliens írási kérésének a nyugtázása csak a teljes tartalom kiírása után történhet meg.
A SUN NFS Egymásra épülő protokollok halmaza. Az NFS-től független alkalmazások is használják az önálló protokollokat.
kliens folyamat (alkalmazás) A SUN NFS működése helyi gép (kliens folyamat) távoli gép (NFS szerver) kliens folyamat (alkalmazás) UNIX kernel Unix kernel virtuális file rendszer (VFS) virtuális file rendszer (VFS) kérés UNIX file NFS NFS UNIX file rendszer kliens szerver rendszer (UFS) (UFS) válasz lemez lemez
NFS működés közben
A SUN NFS által használt protokollok I. NFS protokoll: a file-elérés magas szintű protokollja: a kliens és a szerver közötti kérés-válasz lehetőségeket írja le, pl.: get/setattrib(file), lookup(file_név), write(file), read(file). RPC (Remote Procedure Call), távoli eljáráshívás protokoll: a folyamatok kommunikációjának a módja, hogy egymás szolgáltatásait milyen módon használhatják (üzenetek felépítése, tartalma), az NFS kliens és szerver közötti üzenetváltás RPC csomagok formájában történik.
A SUN NFS által használt protokollok II. XDR (EXtended Data Representation) protokoll: a rendszer-független adatábrázolást rögzítő protokoll. Mount: távoli file-rendszerek összekapcsolását leíró protokoll: tipikus szolgáltatásai: mount: a távoli file-rendszer helyi file-rendszerbe történő befűzése, láthatóvá tétele egy adott könyvtáron keresztül, unmount: a kapcsolat megszüntetése, dump: a helyi file-rendszerbe ”fel-mount-olt” távoli file- rendszerek kilistázása.
Egy működő SUN NFS rendszer szoftver komponensei I. NFS szerver: a protokollban definiált szolgáltatásokat valósítja meg, tartalmazza a szolgáltatások kódját, pl.: lookup() függvény. NFS kliens kód: kliens oldali funkciók megvalósítása, pl.: a helyi file-okkal azonos módon való távoli file-használat. Démon (daemon) folyamatok: az NFS szerver állandóan elérhető szolgáltatásaihoz biztosítja az elérést, tipikus démon processzek: biod: blokkos adatátvitelt kezelő daemon, mountd: a csatlakozási kéréseket elégíti ki, nfsd: a file-ok elérését intézi.
Egy működő SUN NFS rendszer szoftver komponensei II. Önálló és opcionális komponensek: NLM (Network Lock Manager): egy file kizárólagos használatát biztosítja. NSM (Network Status Manager): egy file állapotának lekérdezését végzi (lock/nonlock).
Az XDR protokoll Biztosítja: az adatok hardver- (és operációs rendszer) független ábrázolását, a hálózaton történő továbbítást, a leíró nyelv alap-adattípusainak a bővítését, hogy az új adattípusok kombináltak is lehetnek.
Az XDR protokoll Definiálja az adatelemek: méretét, átviteli sorrendjét, formátumát.
Az XDR tulajdonságai Az alap a 8 bit-es byte. Az adatelemek 4 byte-ra vannak kiegészítve. 0. 1. 2. 3. … n. ’0’ … ’0’ Például: integer esetén hálózati átvitelnél a legfelső byte-ot küldi át elsőként: MSB LSB 0. 1. 2. 3. , a negatív értékeket 2-es komplemensként ábrázolja, a tömbök hálózati átvitelénél, a tömb elé beszúrja annak hosszát.
Előre definiált adattípusok Integer (4 byte), hyper integer (8 byte). Megszámlálható, felsorolt típus enum: de a boolean-t is értelmezi. Lebegőpontos valós (4 byte). Összetett adatstruktúrák, aggregátumok: Tömb (változó és fix hosszúságú), string. Structure record, akár eltérő típusú elemekkel is. Union (szűkített struktúra, egy rekord használhatja csak).
Példa az XDR protokoll adatelemekre Típus Adat XDR ábrázolás Egész 0x123456 0x00 0x12 0x34 0x56 szám [tömb 0x00 0x00 0x00 0x03 hossza] Három- elemű 4 0x00 0x00 0x00 0x04 egészekből álló tömb 2 0x00 0x00 0x00 0x02 -1 0xFF 0xFF 0xFF 0xFF
XDR leíró nyelv A C nyelvhez hasonló szintaxis. Csak adatelemek definiálása. Pl.: enum file_kind { TEXT = 0, DATA = 1, EXEC = 2, }; struct file { string file_name<32>; file_kind file_type; opaque data; };
Az RPC protokoll I. Megbízható üzenettovábbítást valósít meg a kommunikáló partnerek között. Az RPC protokollok rögzítik: az üzenetek formátumát: mit tartalmazhatnak az üzenetek, az üzenetközvetítés módját: mely üzenetek milyen sorrendben küldhetők, a partnerazonosítás (címzés) módját.
Az RPC protokoll II. RPC típusai (a kliens folyamat várakozik-e az általa kért szolgáltatás végrehajtására): szinkron módú, aszinkron módú. A SUN RPC protokoll: saját fejlesztésű, szinkron (megbízhatósági feltétel), az XDR protokollt használja az üzenetformátum definiálására.
Az RPC protokoll működése RPC kérés RPC kliens RPC szerver RPC válasz
Az RPC-kérés felépítése I. XID IRÁNY RPC VERZIÓ PRG AZONOSÍTÓ PRG VERZIÓ SZOLGÁLTATÁS AZONOSÍTÁSI INFORMÁCIÓ ADAT
Az RPC-kérés felépítése II. XID: az RPC generálta egyedi üzenet azonosító. IRÁNY: kérés vagy válasz. RPC verzió: több RPC verzió létezik, az üzenetformátum verziófüggő lehet.
Az RPC-kérés felépítése III. PRG azonosító: több párhuzamosan futó alkalmazás is használhat RPC-t, a szolgáltatást nyújtó alkalmazás (szerver) azonosítója. PRG verzió: az adott szolgáltatás verziója. Azonosítási információ: a küldő folyamat azonosítója, pl.: UNIX OPR esetén ez a PID. Adat: Az üzenet adatrésze.
Az RPC-válasz felépítése Státus: megadja, hogy sikeres volt-e a kért szolgáltatás végrehajtása. XID IRÁNY STÁTUS AZONOSÍTÁSI INFORMÁCIÓ STÁTUS 2 ADAT