zp∞t do archivu Φlßnk∙ |
rejst°φk |
p°edchozφ dφl |
nßsledujφcφ dφl
Ji°φ Peterka: Co je Φφm ... v poΦφtaΦov²ch sφtφch (77):
NFS - III.
V minulΘm dφlu jsme se zaΦali podrobn∞ji zab²vat
tφm, jak protokol NFS (Network File System) ve skuteΦnosti
pracuje. Probrali jsme si princip komunikace klienta se
serverem, pokud jde o zp∙sob urΦovßnφ konkrΘtnφch soubor∙
a adresß°∙ - prost°ednictvφm systΘmov²ch identifikacφ,
a nikoli prost°ednictvφm jmen a p°φstupov²ch cest
k soubor∙m. Dnes pokroΦφme jeÜt∞ dßle a naznaΦφme si, jakΘ
je postavenφ systΘmov²ch identifikacφ (a protokolu NFS
obecn∞) v rßmci operaΦnφho systΘmu poΦφtaΦ∙ v roli klient∙ i
server∙.
Jeliko₧ se naÜe dosavadnφ povφdßnφ o protokolu NFS
t²kalo p°edevÜφm charakteru komunikace mezi klientem
a serverem (neboli toho, co si vzßjemn∞ p°edßvajφ, co od
sebe po₧adujφ a co si poskytujφ), tedy jejich "vn∞jÜφmi"
projevy, nemuseli jsme nßÜ v²klad vztahovat k n∞kterΘ
konkrΘtnφ systΘmovΘ platform∞, na kterΘ m∙₧e b²t protokol
NFS implementovßn. Jakmile se ale zaΦneme podrobn∞ji zab²vat
postavenφm NFS v rßmci operaΦnφho systΘmu, naÜe povφdßnφ ji₧
p°estane b²t nezßvislΘ na konkrΘtnφ platform∞. Proto si
musφme n∞kterou platformu vybrat, a vÜe pot°ebnΘ si ukßzat
na jejφm konkrΘtnφm p°φkladu (s naznaΦenφm odliÜnostφ pro
jinΘ platformy). Nejvhodn∞jÜφm platformou jist∞ bude
prost°edφ, ve kterΘm protokol NFS vznikl, a ze kterΘho se
pak rozÜφ°il i na jinΘ platformy - tedy operaΦnφ systΘm
Unix.
Unix pou₧φvß INODES
Jestli₧e protokol NFS mß zajiÜ¥ovat pln∞ transparentnφ
sdφlenφ soubor∙ (v tom smyslu, jak² jsme si zavedli ji₧ v
70. dφlu), pak pro aplikaΦnφ programy nesmφ existovat ₧ßdn²
viditeln² rozdφl mezi mφstnφmi a vzdßlen²mi soubory.
|
Obr. 77.1.: P°edstava rozhranφ INODE (bez NFS)
V prost°edφ operaΦnφho systΘmu Unix pracujφ aplikaΦnφ
·lohy se soubory zp∙sobem, kter² ukazuje obrßzek 77.1.
- prost°ednictvφm systΘmov²ch volßnφ (system calls), kterΘ
sm∞°ujφ do jßdra operaΦnφho systΘmu (kernel), a p°es n∞j pak
do systΘmu soubor∙ (file system). To je tvo°eno spoleΦnou
Φßstφ, nezßvislou na konkrΘtnφm druhu soubor∙, a dßle
r∙zn²mi ovladaΦi, kterΘ ji₧ jsou implementaΦn∞ zßvislΘ. Mezi
t∞mito dv∞ma vrstvami je pak rozhranφ, ve kterΘm se nachßzφ
datovΘ struktury, popisujφcφ jednotlivΘ soubory - tzv.
INODES (od: Information Nodes, n∞kdy tΘ₧: Index Nodes).
V t∞chto datov²ch strukturßch jsou obsa₧eny nap°φklad
informace o p°esnΘm umφst∞nφ souboru Φi adresß°e, o jeho
velikosti, vlastnφkovi, o p°φstupov²ch prßvech apod. P°esn²
v²znam i repertoßr t∞chto informacφ je vÜak "Üit na mφru"
jednomu konkrΘtnφmu zp∙sobu uchovßvßnφ mφstnφch soubor∙,
zatφmco vzdßlenΘ soubory, sdφlenΘ prost°ednictvφm sφt∞,
vy₧adujφ p°eci jen n∞co jinΘho. OdliÜnosti zde sice nejsou
nijak velkΘ, ale na druhΘ stran∞ zase nejsou zanedbatelnΘ
a staΦφ na to, aby datovΘ struktury INODE nebyly p°φliÜ
vhodnΘ pro souΦasnΘ reprezentovßnφ jak mφstnφch, tak
i vzdßlen²ch soubor∙.
Rozhranφ VFS/VNODE
Firma Sun, kterß protokol NFS vyvinula, vy°eÜila cel²
problΘm nßsledujφcφm zp∙sobem: rozhranφ, ve kterΘm se
nachßzφ datovΘ struktury INODE, "obalila" jeÜt∞ jednou
vrstvou - naz²vanou Virtual File System (VFS) / Virtual File
Node (VNODE) interface, a p∙vodnφ datovΘ struktury INODE
"p°ekryla" pon∞kud obecn∞jÜφmi datov²mi strukturami, kterΘ
ji₧ mohou reprezentovat jak vzdßlenΘ soubory, tak i soubory
mφstnφ. Tφm jeÜt∞ d∙sledn∞ji odd∞lila spoleΦnou Φßst systΘmu
soubor∙ (nezßvislou na konkrΘtnφ implementaci) od jejφ
implementaΦn∞ zßvislΘ Φßsti. V²sledn² efekt je takov², ₧e
novΘ rozhranφ VFS/VNODE, vlo₧enΘ mezi ob∞ tyto Φßsti, m∙₧e
b²t jednotnΘ i v p°φpad∞, kdy "p°ekr²vß" r∙zn∞
implementovanΘ systΘmy soubor∙ - a to nejen vzdßlenΘ
soubory, sdφlenΘ prost°ednictvφm protokolu NFS, ale takΘ
nap°φklad mφstnφ soubory, uchovßvanΘ podle "zvyklostφ"
r∙zn²ch operaΦnφch systΘm∙, v rßmci kter²ch je protokol NFS
implementovßn.
Jestli₧e tedy d°φve pracovala spoleΦnß Φßst systΘmu
soubor∙ p°φmo s rozhranφm, obsahujφcφm struktury INODE
(a oznaΦovan²m jako "rozhranφ INODE"), nynφ ji₧ pracuje
pouze s rozhranφm VFS/VNODE a s datov²mi strukturami, kterΘ
jsou v tomto rozhranφ obsa₧eny. P∙vodnφ struktury INODE sice
nadßle existujφ, ale systΘmovß volßnφ se k nim neobracejφ
p°φmo (ale pouze zprost°edkovan∞, p°es datovΘ struktury
v rozhranφ VFS/VNODE). V prost°edφ Unixu to samoz°ejm∞
znamenalo zm∞nit vÜechna systΘmovß volßnφ, kterß zajiÜ¥ujφ
prßci se soubory. Na druhΘ stran∞ vÜak toto °eÜenφ vyÜlo
vst°φc nejen pot°ebßm sdφlenφ vzdßlen²ch soubor∙, ale takΘ
r∙zn²m zp∙sob∙m implementace souborov²ch systΘm∙
v nejr∙zn∞jÜφch "p°φchutφch" Unixu (kterΘ mohou pou₧φvat
pon∞kud odliÜnΘ struktury INODE, a jednotnΘ struktury
v rozhranφ VFS/VNODE).
DatovΘ struktury VFS a VNODE
|
Obr. 77.2.: Vztah datov²ch struktur VFS a VNODE
DatovΘ struktury, obsa₧enΘ v novΘm rozhranφ, se jmenujφ
p°φznaΦn∞: VFS a VNODE. Struktura VFS reprezentuje jeden
konkrΘtnφ systΘm soubor∙ jako takov², zatφmco datovß
struktura VNODE je zobecn∞nφm struktury INODE, a
reprezentuje jeden konkrΘtnφ soubor Φi adresß°. Struktura
VFS je vytvß°ena v rßmci p°ipojenφ souborovΘho systΘmu
pomocφ operace mount (viz 74. dφl). SouΦasn∞ s tφm je
vytvß°ena i jedna struktura VNODE, reprezentujφcφ uzel
adresß°ovΘho stromu, ke kterΘmu je dotyΦn² souborov² systΘm
p°ipojovßn (viz obr. 77.2.). DalÜφ struktury VNODE jsou pak
vytvß°eny p°i otevφrßnφ jednotliv²ch soubor∙ (a adresß°∙)
v rßmci p°φsluÜnΘho souborovΘho systΘmu, a za°azovßny do
spojovΘho seznamu struktur VNODE, sdru₧enΘho s p°φsluÜnou
strukturou VFS - viz op∞t obrßzek 77.2.
RNODE vs. INODE
Datovou strukturu VNODE je nejlΘpe chßpat jako spoleΦnΘ
"zast°eÜenφ" datov²ch struktur, kterΘ ji₧ jsou zßvislΘ na
konkrΘtnφ implementaci. Za tφmto ·Φelem obsahuje struktura
VNODE ukazatel na datovou strukturu, kterß p°φsluÜn² soubor
Φi adresß° skuteΦn∞ reprezentuje, a se kterou jsou takΘ
sdru₧eny v²konnΘ procedury, zajiÜ¥ujφcφ nejr∙zn∞jÜφ akce
s p°φsluÜn²m souborem Φi adresß°em. V p°φpad∞ mφstnφho
souboru je takovouto strukturou p∙vodnφ datovß struktura
INODE (a ukazatel v rßmci struktury VNODE pak ukazuje na
exemplß° struktury INODE), se kterou jsou sdru₧eny procedury
pro prßci s mφstnφmi soubory.
Pro pot°eby reprezentace vzdßlen²ch soubor∙, sdφlen²ch
prost°ednictvφm protokolu NFS, byl navr₧en dalÜφ druh datovΘ
struktury: RNODE. JednotlivΘ exemplß°e tΘto datovΘ struktury
vznikajφ pouze na stran∞ klienta, a obsahujφ mimo jinΘ
i systΘmovΘ identifikace vzdßlen²ch soubor∙, kterΘ si klient
vy₧ßdal na p°φsluÜnΘm serveru (viz minul² dφl). S t∞mito
vzdßlen²mi soubory se pak pracuje prost°ednictvφm procedur,
kterΘ jsou s datov²mi strukturami sdru₧eny - a prßv∞ tyto
procedury implementujφ vlastnφ protokol NFS pro sdφlenφ
vzdßlen²ch soubor∙ v sφtφch. P°esn² zp∙sob fungovßnφ t∞chto
konkrΘtnφch procedur je ovÜem natolik zajφmav², ₧e se mu
budeme podrobn∞ji v∞novat v samostatnΘm dφlu tohoto serißlu.
|
Obr. 77.3.: P°edstava zpracovßnφ po₧adavku na p°φstup k souboru
Prozatφm si pouze naznaΦme, jak²m zp∙sobem jsou tyto
procedury aktivovßny. Na stran∞ klienta je prvotnφm
inicißtorem systΘmovΘ volßnφ, generovanΘ aplikaΦnφ ·lohou.
Toto volßnφ specifikuje urΦitou strukturu VNODE, kterß se
zase odkazuje na n∞kterou strukturu INODE Φi RNODE (nebo
jin² druh datovΘ struktury, vytvo°enΘ pro pot°eby konkrΘtnφ
implementace jinΘho druhu soubor∙ a adresß°∙). Podle toho,
kam ukazatel v rßmci struktury VNODE ukazuje, je pak mo₧nΘ
urΦit konkrΘtnφ procedury, kterΘ majφ b²t zavolßny - viz
obrßzek 77.3. V²sledkem spuÜt∞nφ procedur, sdru₧en²ch s
datovou strukturou INODE, je pak formulovßnφ konkrΘtnφho
po₧adavku na server a jeho odeslßnφ.
|
Obr. 77.4.: Rozhranφ VFS/VNODE, INODE a RNODE na stran∞ klienta i serveru
Na stran∞ serveru je p°φjemcem tohoto po₧adavku
systΘmov² proces (tzv. NFS dΘmon). Ten pak na zßklad∞
p°ijatΘho po₧adavku generuje systΘmovΘ volßnφ, kterΘ op∞t
specifikuje urΦit² uzel VNODE. Ten ukazuje na konkrΘtnφ
datovou strukturu, reprezentujφcφ po₧adovan² soubor Φi
adresß° (celou situaci nßzorn∞ ilustruje obrßzek 77.4).
V tΘto souvislosti je vhodnΘ si zd∙raznit, ₧e tentokrßte ji₧
musφ jφt o mφstnφ soubor Φi adresß° (a nikoli vzdßlen²).
Tv∙rci protokolu NFS toti₧ vcelku rozumn∞ zakßzali
tranzitivnost sdφlenφ soubor∙ v sφtφ. Tedy takovou situaci,
kdy server nabφzφ sv²m klient∙m soubory, kterΘ sßm zφskßvß
v roli klienta od jinΘho serveru. AΦkoli by to bylo
principißln∞ mo₧nΘ, nenφ to efektivnφ. Mφsto p°es
prost°ednφka se toti₧ ka₧d² klient m∙₧e obrßtit p°φmo na ten
server, kter² po₧adovanΘ soubory skuteΦn∞ vlastnφ (jako
lokßlnφ).
BSD Unix vs. AT&T Unix
Rozhranφ VFS/VNODE, kterΘ jsme si a₧ dosud popisovali,
bylo vytvo°eno v rßmci tzv. BSD v∞tve Unixu verze 4.2 (viz
75. dφl serißlu), kde se takΘ protokol NFS prosadil
nejd°φve. V druhΘ hlavnφ v∞tvi, tzv. AT&T Unixu, existovalo
ve verzi System V Release 3 rozhranφ s velmi podobn²mi
datov²mi strukturami FSS (File System Switch). Bylo vyvinuto
pro pot°eby protokolu RFS (Remote File Sharing) firmy AT&T,
kter² mß stejnΘ poslßnφ jako protokol NFS - tedy zajiÜ¥ovat
transparentnφ sdφlenφ soubor∙ v sφtφch (ovÜem na rozdφl od
bezestavovΘho protokolu NFS funguje jako stavov²). Protokol
NFS se vÜak ukßzal b²t ₧ivotaschopn∞jÜφm, a jeho pou₧φvßnφ
se poslΘze prosadilo i do AT&T Unixu. Spolu s nφm pak
i rozhranφ VFS/VNODE, kterΘ se stalo standardnφ souΦßstφ
AT&T Unixu od verze System V Release 4.
zp∞t do archivu Φlßnk∙ | rejst°φk |
p°edchozφ dφl |
nßsledujφcφ dφl
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese
http://archiv.czech.net/copyleft.htm