{"id":31333,"date":"2019-10-31T21:40:44","date_gmt":"2019-10-31T18:40:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2\/"},"modified":"2019-10-31T21:40:44","modified_gmt":"2019-10-31T18:40:44","slug":"virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","title":{"rendered":"Virtuelni fajl sistemi u Linux-u: za\u0161to su potrebni i kako funkcioni\u0161u? Deo 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pozdravljeni vsi, delimo z vami drugi del objave \"Virtuelni datote\u010dni sistemi v Linuxu: zakaj so potrebni in kako delujejo?\" Prvi del lahko preberete <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">tukaj<\/a><\/noindex>. Spomnimo, ta serija objav je povezana s pri\u010detkom novega toka te\u010daja <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/tjnD\/\">\"Administrator Linuxa\"<\/a><\/noindex>, ki se za\u010dne \u017ee kmalu.<\/p>\n<p><b>Kako spremljati VFS z orodji eBPF in bcc<\/b><\/p>\n<p>Najla\u017eji na\u010din, da razumemo, kako jedro upravlja z datotekami <code>sysfs<\/code> \u2013 je opazovati to v praksi, najla\u017eji na\u010din, da spremljamo ARM64 \u2013 je uporaba eBPF. eBPF (kratica za Berkeley Packet Filter) je sestavljen iz virtualne naprave, ki te\u010de v <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/bpf_collabsummit_2015feb20.pdf\">jedru<\/a><\/noindex>, ki jo privilegirani uporabniki lahko poizvedujejo (<code>query<\/code>) iz ukazne vrstice. Izvorne kode jedra bralcu sporo\u010dajo, kaj jedro lahko stori; zagon orodij eBPF na obremenjenem sistemu poka\u017ee, kaj jedro dejansko po\u010dne. <\/p>\n<p><img decoding=\"async\" alt=\"Virtuelni fajl sistemi u Linux-u: za\u0161to su potrebni i kako funkcioni\u0161u? Deo 2\" src=\"\/wp-content\/uploads\/2019\/04\/95443cd3b1562b03eb43bf5fd229c508.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Na sre\u010do je za\u010deti uporabljati eBPF dovolj enostavno z orodji <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\">bcc<\/a><\/noindex>, ki so na voljo kot paketi iz splo\u0161ne distribucije <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/INSTALL.md\">Linux<\/a><\/noindex> in so podrobno dokumentirana <noindex><a rel=\"nofollow\" href=\"http:\/\/brendangregg.com\/ebpf.html\">Bernardom Greggom<\/a><\/noindex>. Orodja <code>bcc<\/code> so skripti v Pythonu z manj\u0161imi deli kode v C, kar pomeni, da jih lahko vsak, ki pozna oba jezika, zlahka prilagodi. V <code>bcc\/tools<\/code> je 80 Python skriptov, kar pomeni, da bo verjetno razvijalec ali sistemski administrator lahko na\u0161el nekaj primernega za re\u0161itev te\u017eave. <br \/>\nDa dobite vsaj povr\u0161insko predstavo o tem, kak\u0161no delo opravljajo VFS v delujo\u010dem sistemu, poskusite <code>vfscount<\/code> ili <code>vfsstat<\/code>. To bo pokazalo, da na desetine klicev <code>vfs_open()<\/code> in njegovih \"prijateljev\" poteka dobesedno vsako sekundo.<\/p>\n<p><img decoding=\"async\" alt=\"Virtuelni fajl sistemi u Linux-u: za\u0161to su potrebni i kako funkcioni\u0161u? Deo 2\" src=\"\/wp-content\/uploads\/2019\/04\/3479caa65696a29831f00e48782e48b3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p><code>vfsstat.py<\/code> je skript v Pythonu, s kodo C, ki preprosto \u0161teje klice funkcij VFS.<\/p><\/blockquote>\n<p>Poglejmo bolj trivialen primer in vidimo, kaj se zgodi, ko v ra\u010dunalnik priklju\u010dimo USB klju\u010dek in ga sistem odkrije.<\/p>\n<p><img decoding=\"async\" alt=\"Virtuelni fajl sistemi u Linux-u: za\u0161to su potrebni i kako funkcioni\u0161u? Deo 2\" src=\"\/wp-content\/uploads\/2019\/04\/5c756fe1b6d4c5906631e5da24b59dca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p>S pomo\u010djo eBPF lahko vidimo, kaj se zgodi, <code>\/sys<\/code>, ko je USB klju\u010dek priklju\u010den. Tukaj je predstavljen preprost in kompleksen primer.<\/p><\/blockquote>\n<p>V zgornjem primeru <code>bcc<\/code> orodje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/tools\/trace_example.txt\">trace.py<\/a><\/noindex> izpi\u0161e sporo\u010dilo, ko se izvede ukaz <code>sysfs_create_files()<\/code>. Vidimo, da je bil zagnan s pomo\u010djo <code>sysfs_create_files()<\/code> kworker <code>niti v odgovoru na to, da je bil klju\u010dek priklju\u010den, toda kateri datoteka se je pri tem ustvarila? Drugi primer prikazuje vso mo\u010d eBPF. Tukaj<\/code> niti kot odgovor na to, da je bil USB priklju\u010den, a kateri datoteka je bila pri tem ustvarjena? Drugi primer poka\u017ee vso mo\u010d eBPF. Tukaj <code>trace.py<\/code> izvaja jedro nazad (kernel backtrace) (opcija -K) i ime datoteke koja je kreirana <code>sysfs_create_files()<\/code>. Umetanje u pojedina\u010dnim iskazima \u2013 to je C kod koji uklju\u010duje lako prepoznatljivu formatiranu liniju, obezbe\u0111enu Python skriptom koji pokre\u0107e LLVM <i>just-in-time kompajler<\/i>. Ovu liniju on kompajlira i izvr\u0161ava u virtuelnoj ma\u0161ini unutar jezgra. Puna potpis funkcije <code>sysfs_create_files ()<\/code> mora biti reprodukovana u drugom komandnom, tako da formatirana linija mo\u017ee da se odnosi na jedan od parametara. Gre\u0161ke u ovom fragmentu C koda rezultiraju prepoznatljivim gre\u0161kama C kompajlera. Na primer, ako se propusti parametar -l, vide\u0107ete \u201eFailed to compile BPF text.\u201d Razvija\u010di koji su dobro upoznati sa C i Pythonom smatra\u0107e alate <code>bcc<\/code> jednostavnim za pro\u0161irenje i izmenu.<\/p>\n<p>Kada je USB ure\u0111aj umetnut, povratna signalizacija jezgra \u0107e pokazati da je PID 7711 \u2013 to je nit <code>niti v odgovoru na to, da je bil klju\u010dek priklju\u010den, toda kateri datoteka se je pri tem ustvarila? Drugi primer prikazuje vso mo\u010d eBPF. Tukaj<\/code>, koja je kreirala datoteku <code>\"events\"<\/code> u <code>sysfs<\/code>. Prema tome, poziv sa <code>sysfs_remove_files()<\/code> pokaza\u0107e da je uklanjanje ure\u0111aja dovelo do brisanja datoteke <code>events<\/code>, \u0161to se uklapa u op\u0161ti koncept brojenja referenci. U ovom okviru, pregled <code>sysfs_create_link ()<\/code> sa eBPF tokom umetanja USB ure\u0111aja pokazuje da je kreirano najmanje 48 simboli\u010dkih linkova.<\/p>\n<p>Pa, koja je svrha datoteke events? Kori\u0161\u0107enje <noindex><a rel=\"nofollow\" href=\"http:\/\/northstar-www.dartmouth.edu\/doc\/solaris-forte\/manuals\/c\/user_guide\/cscope.html\">cscope<\/a><\/noindex> za pretragu <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/block\/genhd.c#n665\">__device_add_disk()<\/a><\/noindex>, pokazuje da ona poziva <code>disk_add_events ()<\/code>, i ili <code>\"media_change\"<\/code>, ali <code>\"eject_request\"<\/code> mogu biti zapisani u datoteku doga\u0111aja. Ovde, blok sloj jezgra obave\u0161tava userspace o pojavljivanju i uklanjanju \u201ediska\u201d. Obratite pa\u017enju koliko je informativna ova metoda istra\u017eivanja na primeru umetanja USB ure\u0111aja u pore\u0111enju sa poku\u0161ajima da se sazna kako sve funkcioni\u0161e isklju\u010divo iz izvora.<\/p>\n<p><b>Root datote\u010dni sistemi samo za \u010ditanje omogu\u0107avaju ugra\u0111ene ure\u0111aje<\/b><\/p>\n<p>Naravno, niko ne isklju\u010duje server ili svoj ra\u010dunar va\u0111enjem utika\u010da iz uti\u010dnice. Ali za\u0161to? Zato \u0161to montirani datote\u010dni sistemi na fizi\u010dkim ure\u0111ajima za skladi\u0161tenje mogu imati odlo\u017eene zapise, a strukture podataka koje bele\u017ee njihovo stanje mo\u017eda se ne\u0107e sinhronizovati sa zapisima u skladi\u0161tu. Kada se to dogodi, vlasnici sistema moraju \u010dekati slede\u0107e pokretanje da bi pokrenuli alatku <code>fsck filesystem-recovery<\/code> i, u najgorem slu\u010daju, izgubiti podatke. <\/p>\n<p>Kljub temu vsi vemo, da mnoge IoT naprave ter usmerjevalniki, termostati in avtomobili zdaj delujejo na sistemu Linux. Mnoge od teh naprav prakti\u010dno nimajo uporabni\u0161kega vmesnika in ni na\u010dina, da bi jih izklopili '\u010disto'. Predstavljajte si, da zagnate avtomobil z izpraznjeno baterijo, ko napajanje krmilne enote na <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.automotivelinux.org\/_media\/eg-rhsa\/agl_referencehardwarespec_v0.1.0_20171018.pdf\">Linux<\/a><\/noindex> nenehno niha navzgor in navzdol. Kako lahko sistem za\u017eene brez dolgega <code>fsck<\/code>, ko motor konfinally za\u017eene? Odgovor je preprost. Vgrajene naprave se zana\u0161ajo na korenski datote\u010dni sistem <noindex><a rel=\"nofollow\" href=\"https:\/\/elinux.org\/images\/1\/1f\/Read-only_rootfs.pdf\">samo za branje<\/a><\/noindex> (skraj\u0161ano <code>ro-rootfs<\/code> (datote\u010dni sistem brez mo\u017enosti pisanja). <\/p>\n<p><code>ro-rootfs<\/code> ponujajo \u0161tevilne prednosti, ki so manj o\u010ditne kot neobdelanost. Ena od prednosti je, da zlonamerna programska oprema ne more pisati v <code>\/usr<\/code> ili <code>\/lib<\/code>, \u010de noben proces Linux ne more tja pisati. Druga pa je, da je v veliki meri nespremenljiv datote\u010dni sistem klju\u010den za podporo na terenu oddaljenim napravam, saj asistenti uporabljajo lokalne sisteme, ki so nominalno enaki sistemom na terenu. Morda je najpomembnej\u0161a (in najbolj pretkana) prednost to, da ro-rootfs pripravlja razvijalce, da odlo\u010dijo, kateri sistemski objekti bodo nespremenljivi, \u017ee v fazi na\u010drtovanja sistema. Delo z ro-rootfs je lahko neprijetno in bole\u010de, kar se pogosto dogaja s spremenljivkami const v programskih jezikih, toda njihove prednosti enostavno odtehtajo dodatne stro\u0161ke.<\/p>\n<p>Ustvarjanje <code>rootfs<\/code> samo za branje zahteva dodatna prizadevanja od razvijalcev vgrajenih sistemov, in tukaj pride na plano VFS. Linux zahteva, da so datoteke v <code>\/var<\/code> dostopne za pisanje, in poleg tega mnoge priljubljene aplikacije, ki vodijo vgrajene sisteme, posku\u0161ajo ustvariti konfiguracijske <code>dot-datoteke<\/code> u <code>$DOM<\/code>. Ena od re\u0161itev za konfiguracijske datoteke v doma\u010dem direktoriju je obi\u010dajno njihova predhodna generacija in zbiranje v <code>rootfs<\/code>. Za <code>\/var<\/code> en od mo\u017enih pristopov je, da ga namestite v lo\u010deno particijo, dostopno za pisanje, medtem ko je sam <code>\/<\/code> se montira samo za \u010ditanje. Druga popularna alternativa je kori\u0161\u0107enje povezanih ili preklopnih monta\u017ea (bind or overlay mounts).<\/p>\n<p><b>Povezane i preklopne monta\u017ee, kori\u0161\u0107enje ih od strane kontejnera<\/b> <\/p>\n<p>Izvr\u0161avanje komande <code>man mount<\/code> \u2013 najbolji na\u010din da se sazna vi\u0161e o povezanim i preklopnim monta\u017eama koje omogu\u0107avaju programerima i sistemskim administratorima da kreiraju datote\u010dni sistem na jednom putu, a zatim ga dodele aplikacijama na drugom. Za ugra\u0111ene sisteme to zna\u010di mogu\u0107nost skladi\u0161tenja datoteka u <code>\/var<\/code> na USB fle\u0161 ure\u0111aju koji je dostupan samo za \u010ditanje, ali preklopno ili povezano montiranje puta iz <code>tmpfs<\/code> u <code>\/var<\/code> prilikom pokretanja \u0107e omogu\u0107iti aplikacijama da zapisuju bele\u0161ke (scrawl). Pri slede\u0107em uklju\u010divanju, promene u <code>\/var<\/code> \u0107e biti izgubljene. Preklopno montiranje stvara spoj izme\u0111u <code>tmpfs<\/code> i podlo\u017enog datote\u010dnog sistema i omogu\u0107ava pretvaranje postoje\u0107ih datoteka u <code>ro-tootf<\/code> dok povezano montiranje mo\u017ee u\u010diniti nove prazne <code>tmpfs<\/code> foldere vidljivim kao dostupnim za pisanje u <code>ro-rootfs<\/code> putanjama. Dok <code>overlayfs<\/code> je pravi (<code>proper<\/code>) tip datote\u010dnog sistema, povezano montiranje je realizovano u <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/Documentation\/filesystems\/sharedsubtree.txt\">imenu prostora VFS<\/a><\/noindex>.<\/p>\n<p>Na osnovu opisa preklopnog i povezanog montiranja, niko se ne \u010dudi \u0161to <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/os\/docs\/latest\/kernel-modules.html\">Linux kontejneri<\/a><\/noindex> aktivno ih koriste. Pogledajmo \u0161ta se de\u0161ava kada koristimo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd-nspawn.html\">systemd-nspawn<\/a><\/noindex> za pokretanje kontejnera, koriste\u0107i alat <code>mountsnoop<\/code> od <code>bcc<\/code>.<\/p>\n<p>Poziv <code>system-nspawn<\/code> pokre\u0107e kontejner tokom rada <code>mountsnoop.py<\/code>.<\/p>\n<p>Pogledajmo \u0161ta je iza\u0161lo:<\/p>\n<p>Pokretanje <code>mountsnoop<\/code> tokom 'u\u010ditavanja' kontejnera pokazuje da okru\u017eenje za izvo\u0111enje kontejnera u velikoj meri zavisi od povezanog montiranja (Prikazan je samo po\u010detak dugog izlaza).<\/p>\n<p>Tukaj <code>systemd-nspawn<\/code> pru\u017ea odabrane datoteke u <code>procfs<\/code> in <code>sysfs<\/code> hosta u kontejner kao putanje u njegovom <code>rootfs<\/code>. Pored <code>MS_BIND<\/code> flaga, koji postavlja povezano montiranje, neki drugi flagovi u montiranom sistemu defini\u0161u me\u0111uzavisnost izme\u0111u promena u prostoru imena hosta i kontejnera. Na primer, povezano montiranje mo\u017ee ili propu\u0161tati promene u <code>\/proc<\/code> in <code>\/sys<\/code> u kontejner, ili ih skrivati u zavisnosti od poziva. <\/p>\n<p><b>Zaklju\u010dek<\/b><\/p>\n<p>Razumevanje notranje strukture Linuxa se lahko zdi nemogo\u010da naloga, saj jedro vsebuje ogromno koli\u010dino kode, ne da bi upo\u0161tevali aplikacije uporabni\u0161kega prostora Linux in vmesnike sistemskih klicev v knji\u017enicah C, kot je <code>glibc<\/code>. Eden od na\u010dinov za napredek je preu\u010devanje izvorne kode enega pod sistema jedra s poudarkom na razumevanju sistemskih klicev in naslovov, usmerjenih na uporabni\u0161ki prostor, ter osnovnih notranjih vmesnikov jedra, na primer tabela <code>file_operations<\/code>. Datote\u010dne operacije zagotavljajo na\u010delo \u201evse je datoteka\u201c, zato je upravljanje z njimi \u0161e posebej prijetno. Izvorne datoteke jedra v jeziku C v zgornjem nivoju <code>fs\/<\/code> predstavljajo implementacijo virtualnih datote\u010dnih sistemov, ki so plast lupine, ki zagotavlja \u0161iroko in sorazmerno preprosto zdru\u017eljivost priljubljenih datote\u010dnih sistemov in naprav za shranjevanje. Montiranje s povezovanjem in prekrivanje prek Linuxovih prostorov imen je \u010darovnija VFS, ki omogo\u010da ustvarjanje kontejnerjev in korenskih datote\u010dnih sistemov samo za branje. V kombinaciji z raziskovanjem izvorne kode, orodje jedra eBPF in njegov vmesnik <code>bcc<\/code><br \/>\n naredijo raziskovanje jedra la\u017eje kot kadarkoli prej.<\/p>\n<p>Prijatelji, prosimo, sporo\u010dite, ali je bil ta \u010dlanek koristen za vas? Morda imate kak\u0161ne komentarje ali pripombe? Tiste, ki jih zanima te\u010daj 'Linux Administrator', vabimo na <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/u5Jw\/\">dan odprtih vrat<\/a><\/noindex>, ki bo potekal 18. aprila.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">Prvi del.<\/a><\/noindex><br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/447748\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442?\u00bb \u041f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442. \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0435\u043d\u0430 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043f\u043e \u043a\u0443\u0440\u0441\u0443 \u00ab\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 Linux\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u043a\u043e\u0440\u043e. \u041a\u0430\u043a \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 VFS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 eBPF \u0438 bcc \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23299,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31333","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442?\u00bb \u041f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442?\u00bb \u041f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:40:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:40:44+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Virtualni datote\u010dni sistemi v Linuxu: zakaj so potrebni in kako delujejo? Del 2 | ProHoster","description":"Pozdravljeni vsi, delimo z vami drugi del objave \"Virtuelni datote\u010dni sistemi v Linuxu: zakaj so potrebni in kako delujejo?\" Prvi del lahko preberete","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Linux: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442?\u00bb \u041f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:40:44+00:00","article:modified_time":"2019-10-31T18:40:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31333","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 05:41:23","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:18:40","updated":"2026-01-21 05:41:23","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=31333"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/23299"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=31333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=31333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=31333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}