{"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\/hr\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","title":{"rendered":"Virtualni datote\u010dni sustavi u Linuxu: za\u0161to su potrebni i kako rade? Drugi dio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pozdrav svima, dijelimo s vama drugi dio objave \u201eVirtualne datote\u010dne sustave u Linuxu: za\u0161to su potrebni i kako rade?\u201c Prvi dio mo\u017eete pro\u010ditati <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">ovdje<\/a><\/noindex>. Podsje\u0107amo, ova serija objava povezana je s pokretanjem novog te\u010daja <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/tjnD\/\">\u201eAdministrator Linuxa\u201c<\/a><\/noindex>, koji po\u010dinje vrlo brzo.<\/p>\n<p><b>Kako pratiti VFS pomo\u0107u alata eBPF i bcc<\/b><\/p>\n<p>Najlak\u0161i na\u010din da shvatite kako jezgra upravlja datotekama <code>sysfs<\/code> \u2013 jest promatrati to u praksi, a najlak\u0161i na\u010din da pratite ARM64 jest koristiti eBPF. eBPF (skra\u0107enica za Berkeley Packet Filter) sastoji se od virtualne ma\u0161ine koja se pokre\u0107e u <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/bpf_collabsummit_2015feb20.pdf\">jezgru<\/a><\/noindex>, koju privilegirani korisnici mogu zatra\u017eiti (<code>query<\/code>) iz naredbenog retka. Izvori jezgre govore \u010ditatelju \u0161to mo\u017ee u\u010diniti jezgra; pokretanje alata eBPF u optere\u0107enom sustavu pokazuje \u0161to zapravo jezgra radi. <\/p>\n<p><img decoding=\"async\" alt=\"Virtualni datote\u010dni sustavi u Linuxu: za\u0161to su potrebni i kako rade? Drugi dio\" 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>Sre\u0107om, lako je po\u010deti koristiti eBPF s alatima <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\">bcc<\/a><\/noindex>, koji su dostupni kao paketi iz op\u0107e distribucije <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/INSTALL.md\">Linux<\/a><\/noindex> i detaljno dokumentirani <noindex><a rel=\"nofollow\" href=\"http:\/\/brendangregg.com\/ebpf.html\">Bernardom Greggom<\/a><\/noindex>. Alati <code>bcc<\/code> \u2013 to su skripte u Pythonu s malim dijelovima koda u C, \u0161to zna\u010di da svatko tko poznaje oba jezika mo\u017ee ih lako modificirati. U <code>bcc\/tools<\/code> ima 80 Python skripti, \u0161to zna\u010di da \u0107e programer ili sistemski administrator vjerojatno na\u0107i ne\u0161to prikladno za rje\u0161avanje problema. <br \/>\nKako biste dobili barem povr\u0161no razumijevanje koje poslove VFS obavljaju u pokrenutom sustavu, poku\u0161ajte <code>vfscount<\/code> ili <code>vfsstat<\/code>. To \u0107e pokazati, recimo, da se desetine poziva <code>vfs_open()<\/code> i \u201enjegovih prijatelja\u201c doga\u0111aju doslovno svake sekunde.<\/p>\n<p><img decoding=\"async\" alt=\"Virtualni datote\u010dni sustavi u Linuxu: za\u0161to su potrebni i kako rade? Drugi dio\" src=\"\/wp-content\/uploads\/2019\/04\/3479caa65696a29831f00e48782e48b3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p><code>vfsstat.py<\/code> \u2013 to je skripta u Pythonu, s dijelovima C koda, koja jednostavno broji pozive funkcija VFS.<\/p><\/blockquote>\n<p>Uzmimo trivialniji primjer i pogledajmo \u0161to se doga\u0111a kada umetnemo USB flash disk u ra\u010dunalo i kada ga sustav prepoznaje.<\/p>\n<p><img decoding=\"async\" alt=\"Virtualni datote\u010dni sustavi u Linuxu: za\u0161to su potrebni i kako rade? Drugi dio\" src=\"\/wp-content\/uploads\/2019\/04\/5c756fe1b6d4c5906631e5da24b59dca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p>Pomo\u0107u eBPF mo\u017eete vidjeti \u0161to se doga\u0111a u <code>\/sys<\/code>, kada je umetnut USB flash disk. Ovdje je prikazan jednostavan i slo\u017een primjer.<\/p><\/blockquote>\n<p>U primjeru prikazanom gore, <code>bcc<\/code> alat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/tools\/trace_example.txt\">trace.py<\/a><\/noindex> isporu\u010duje poruku kada se pokrene naredba <code>sysfs_create_files()<\/code>. Vidimo da <code>sysfs_create_files()<\/code> je pokrenut putem <code>kworker<\/code> niti u odgovoru na to \u0161to je USB umetnut, ali koji je se datoteka pritom stvorila? Drugi primjer pokazuje svu mo\u0107 eBPF. Ovdje <code>trace.py<\/code> ispisuje obratnu traganje jezgre (kernel backtrace) (opciju -K) i ime datoteke koja je stvorena <code>sysfs_create_files()<\/code>. Umetanje u jednostavnim izjavama je C kod koji uklju\u010duje lako prepoznatljivu formatnu liniju osiguranu Python skriptom koja pokre\u0107e LLVM <i>just-in-time kompajler<\/i>. Ovu liniju on kompajlira i izvr\u0161ava u virtualnom stroju unutar jezgre. Potpuna potpis funkcije <code>sysfs_create_files ()<\/code> mora biti ponovljena u drugom naredbi kako bi formatna linija mogla referencirati jedan od parametara. Gre\u0161ke u ovom fragmentu C koda dovode do prepoznatljivih gre\u0161aka C kompajlera. Na primjer, ako je parametar -l propu\u0161ten, vidjet \u0107ete \"Failed to compile BPF text.\" Programeri koji su dobro upoznati s C i Pythonom \u0107e smatrati alate <code>bcc<\/code> jednostavnim za pro\u0161irenje i promjenu.<\/p>\n<p>Kada je USB ure\u0111aj umetnut, obratno traganje jezgre \u0107e pokazati da je PID 7711 \u2013 to je nit <code>kworker<\/code>, koja je stvorila datoteku <code>\"events\"<\/code> u <code>sysfs<\/code>. Tako \u0107e poziv s <code>sysfs_remove_files()<\/code> pokazati da je uklanjanje ure\u0111aja dovelo do brisanja datoteke <code>events<\/code>, \u0161to odgovara op\u0107oj koncepciji brojanja referenci. U ovom kontekstu, pregled <code>sysfs_create_link ()<\/code> s eBPF tijekom umetanja USB ure\u0111aja pokazat \u0107e da je stvoreno najmanje 48 simboli\u010dkih veza.<\/p>\n<p>Dakle, koja je svrha datoteke events? Kori\u0161tenje <noindex><a rel=\"nofollow\" href=\"http:\/\/northstar-www.dartmouth.edu\/doc\/solaris-forte\/manuals\/c\/user_guide\/cscope.html\">cscope<\/a><\/noindex> za pretra\u017eivanje <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 poziva <code>disk_add_events ()<\/code>, i ili <code>\"media_change\"<\/code>, ili <code>\"eject_request\"<\/code> mogu biti zapisani u datoteku doga\u0111aja. Ovdje sloj bloka jezgre obavje\u0161tava userspace o pojavljivanju i uklanjanju \"diska\". Obratite pa\u017enju koliko je informativna ova metoda istra\u017eivanja na primjeru umetanja USB ure\u0111aja u odnosu na poku\u0161aje da se sazna kako sve funkcioni\u0161e isklju\u010divo iz izvora.<\/p>\n<p><b>Korijenske datote\u010dne sustave samo za \u010ditanje omogu\u0107uju ugra\u0111ene ure\u0111aje<\/b><\/p>\n<p>Naravno, nitko ne isklju\u010duje server ili svoje ra\u010dunalo izvla\u010de\u0107i utika\u010d iz uti\u010dnice. Ali za\u0161to? Sve zato \u0161to montirani datote\u010dni sustavi na fizi\u010dkim ure\u0111ajima za pohranu mogu imati odlo\u017eene zapise, a strukture podataka koje bilje\u017ee njihovo stanje mo\u017eda se ne\u0107e sinkronizirati s zapisima u pohrani. Kada se to dogodi, vlasnici sustava moraju \u010dekati sljede\u0107e pokretanje da bi pokrenuli alat <code>fsck filesystem-recovery<\/code> i, u najgorem slu\u010daju, izgubiti podatke. <\/p>\n<p>Ipak, svi znamo da mnoga IoT ure\u0111aja, kao i ruterima, termostatima i automobilima, sada funkcioniraju na Linuxu. Mnogi od tih ure\u0111aja prakti\u010dki nemaju korisni\u010dko su\u010delje i ne postoji na\u010din da se '\u010disto' isklju\u010de. Zamislite da pokre\u0107ete automobil s praznom baterijom, dok napajanje upravlja\u010dkog ure\u0111aja <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.automotivelinux.org\/_media\/eg-rhsa\/agl_referencehardwarespec_v0.1.0_20171018.pdf\">Linux<\/a><\/noindex> neprestano oscilira. Kako se doga\u0111a da se sustav u\u010ditava bez dugog <code>fsck<\/code>, kada motor kona\u010dno po\u010dne raditi? Odgovor je jednostavan. Ugra\u0111eni ure\u0111aji oslanjaju se na korijenski datote\u010dni sustav <noindex><a rel=\"nofollow\" href=\"https:\/\/elinux.org\/images\/1\/1f\/Read-only_rootfs.pdf\">samo za \u010ditanje<\/a><\/noindex> (skra\u0107eno <code>ro-rootfs<\/code> (datote\u010dni sustav samo za \u010ditanje). <\/p>\n<p><code>ro-rootfs<\/code> nud\u0435 mnoge prednosti koje su manje o\u010digledne od nemjenjivosti. Jedna od prednosti je ta da zlonamjerni softver ne mo\u017ee pisati u <code>\/usr<\/code> ili <code>\/lib<\/code>, ako nijedan proces Linuxa ne mo\u017ee pisati u njega. Druga je ta da u zna\u010dajnoj mjeri nepromijenjen datote\u010dni sustav ima klju\u010dnu ulogu u terenskoj podr\u0161ci udaljenim ure\u0111ajima, jer pomo\u0107no osoblje koristi lokalne sustave koji su nominalno identi\u010dni sustavima na terenu. Mo\u017eda je najva\u017enija (ali i najobmanjuju\u0107a) prednost ta \u0161to ro-rootfs prisiljava programere da odlu\u010de koji \u0107e sustavski objekti biti nepromjenjivi ve\u0107 u fazi dizajniranja sustava. Rad s ro-rootfs mo\u017ee biti nezgodan i bolan, kao \u0161to to \u010desto biva s konstantama u programskim jezicima, ali su njihove prednosti lako isplative naspram dodatnih tro\u0161kova.<\/p>\n<p>Izrada <code>rootfs<\/code> samo za \u010ditanje zahtijeva dodatni trud od programera ugra\u0111enih sustava, a tu na scenu stupa VFS. Linux zahtijeva da datoteke u <code>\/var<\/code> budu dostupne za zapisivanje, a osim toga, mnoge popularne aplikacije koje pokre\u0107u ugra\u0111ene sustave poku\u0161at \u0107e stvoriti konfiguracijske <code>dot-datoteke<\/code> u <code>$HOME<\/code>. Jedno od rje\u0161enja za konfiguracijske datoteke u korisni\u010dkom direktoriju obi\u010dno je njihova prethodna generacija i prikupljanje u <code>rootfs<\/code>. Za <code>\/var<\/code> jedan od mogu\u0107ih pristupa je montiranje u zasebnu particiju dostupnu za pisanje, dok je sama <code>\/<\/code> montira se samo za \u010ditanje. Druga popularna alternativa je kori\u0161tenje povezanih ili preklapaju\u0107ih monta\u017ea (bind or overlay mounts).<\/p>\n<p><b>Povezane i preklapaju\u0107e monta\u017ee, njihovo kori\u0161tenje u kontejnerima<\/b> <\/p>\n<p>Izvr\u0161avanje naredbe <code>man mount<\/code> je najbolji na\u010din da saznate o povezanim i preklapaju\u0107im monta\u017eama, koje omogu\u0107uju programerima i sistemskim administratorima da kreiraju datote\u010dni sustav putem jednog puta, a zatim ga daju aplikacijama na drugom. Za ugra\u0111ene sustave to zna\u010di mogu\u0107nost pohranjivanja datoteka u <code>\/var<\/code> na USB memoriji dostupnoj samo za \u010ditanje, ali preklapaju\u0107e ili povezano montiranje puta iz <code>tmpfs<\/code> u <code>\/var<\/code> pri pokretanju omogu\u0107it \u0107e aplikacijama da pi\u0161u bilje\u0161ke (scrawl). Pri sljede\u0107em uklju\u010divanju, promjene u <code>\/var<\/code> bit \u0107e izgubljene. Preklapaju\u0107e montiranje stvara spoj izme\u0111u <code>tmpfs<\/code> i donjeg datote\u010dnog sustava te omogu\u0107uje navodne izmjene postoje\u0107ih datoteka u <code>ro-tootf<\/code> dok povezano montiranje mo\u017ee u\u010diniti nove prazne <code>tmpfs<\/code> mapiraju\u0107i ih kao dostupne za pisanje u <code>ro-rootfs<\/code> putanjama. Dok <code>overlayfs<\/code> je pravi (<code>proper<\/code>) tip datote\u010dnog sustava, povezano montiranje je implementirano u <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/Documentation\/filesystems\/sharedsubtree.txt\">VFS prostoru imena<\/a><\/noindex>.<\/p>\n<p>Bazirano na opisu preklapaju\u0107eg i povezanog montiranja, nije iznena\u0111uju\u0107e \u0161to <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/os\/docs\/latest\/kernel-modules.html\">Linux kontejneri<\/a><\/noindex> aktivno ih koriste. Pogledajmo \u0161to se doga\u0111a 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 tijekom rada <code>mountsnoop.py<\/code>.<\/p>\n<p>Pogledajmo \u0161to smo dobili:<\/p>\n<p>Pokretanje <code>mountsnoop<\/code> tijekom \"u\u010ditavanja\" kontejnera pokazuje da okru\u017eenje izvo\u0111enja kontejnera uvelike ovisi o povezanom montiranju (Prikazuje se samo po\u010detak dugog ispisa).<\/p>\n<p>Ovdje <code>systemd-nspawn<\/code> osigurava odabrane datoteke u <code>procfs<\/code> i <code>sysfs<\/code> doma\u0107ina u kontejner kao putove u njegovom <code>rootfs<\/code>. Osim <code>MS_BIND<\/code> flaga, koji postavlja povezano montiranje, neke druge zastavice u montiranom sustavu odre\u0111uju me\u0111usobne odnose izme\u0111u promjena u prostoru imena doma\u0107ina i kontejnera. Na primjer, povezano montiranje mo\u017ee ili propu\u0161tati promjene u <code>\/proc<\/code> i <code>\/sys<\/code> u kontejner, ili ih skrivati ovisno o pozivu. <\/p>\n<p><b>Zaklju\u010dak<\/b><\/p>\n<p>Razumijevanje unutarnjeg funkcioniranja Linuxa mo\u017ee se \u010diniti kao nemogu\u0107 zadatak, budu\u0107i da samo jezgro sadr\u017ei ogroman broj kodova, dok su aplikacije korisni\u010dkog prostora Linuxa i su\u010delja sustavnih poziva u C knji\u017enicama poput <code>glibc<\/code>. Jedan od na\u010dina da se napreduje je \u010ditanje izvornog koda jedne podsustava jezgre s naglaskom na razumijevanje sustavnih poziva i zaglavlja koji se obra\u0107aju korisni\u010dkom prostoru, kao i osnovnih unutarnjih su\u010delja jezgre, na primjer, tablica <code>file_operations<\/code>. Operacije datoteka osiguravaju princip \"sve je datoteka\", pa je upravljanje njima posebno ugodno. Izvorne datoteke jezgre na C-u u glavnom direktoriju <code>fs\/<\/code> predstavljaju implementaciju virtualnih datote\u010dnih sustava, koji su sloj omota\u010da koji osigurava \u0161iroku i relativno jednostavnu kompatibilnost popularnih datote\u010dnih sustava i ure\u0111aja za pohranu. Montiranje putem povezivanja i preklapanja preko Linuxovih imenskih prostora je \u010darolija VFS-a, koja omogu\u0107ava stvaranje kontejnera i korijenskih datote\u010dnih sustava samo za \u010ditanje. U kombinaciji s prou\u010davanjem izvornog koda, sredstvo jezgre eBPF i njegovo su\u010delje <code>bcc<\/code><br \/>\n \u010dine istra\u017eivanje jezgre lak\u0161im nego ikad.<\/p>\n<p>Prijatelji, javite nam je li vam ovaj \u010dlanak bio koristan? Imate li kakve komentare ili primjedbe? A one koji su zainteresirani za te\u010daj \"Linux administrator\" pozivamo na <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/u5Jw\/\">dan otvorenih vrata<\/a><\/noindex>, koji \u0107e se odr\u017eati 18. travnja.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">Prvi dio.<\/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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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\udd47Virtualni datote\u010dni sustavi u Linuxu: za\u0161to su potrebni i kako funkcioniraju? Dio 2 | ProHoster","description":"Pozdrav svima, dijelimo s vama drugi dio objave \u201eVirtualne datote\u010dne sustave u Linuxu: za\u0161to su potrebni i kako rade?\u201c Prvi dio mo\u017eete pro\u010ditati","canonical_url":"https:\/\/prohoster.info\/hr\/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":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/31333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=31333"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/31333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/23299"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=31333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=31333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=31333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}