{"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\/ro\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","title":{"rendered":"Sistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103? Partea 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bun\u0103 ziua tuturor, \u00eemp\u0103rt\u0103\u0219im cu voi a doua parte a publica\u021biei \u201eSistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103?\u201d Prima parte poate fi citit\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">aici<\/a><\/noindex>. Reamintim c\u0103 aceast\u0103 serie de publica\u021bii este dedicat\u0103 lans\u0103rii unui nou flux pentru cursul <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/tjnD\/\">\u201eAdministrator Linux\u201d<\/a><\/noindex>, care va \u00eencepe foarte cur\u00e2nd.<\/p>\n<p><b>Cum s\u0103 observa\u021bi VFS cu ajutorul instrumentelor eBPF \u0219i bcc<\/b><\/p>\n<p>Cel mai simplu mod de a \u00een\u021belege cum opereaz\u0103 nucleul cu fi\u0219ierele <code>sysfs<\/code> \u2013 este s\u0103 urm\u0103ri\u021bi acest proces \u00een practic\u0103, iar cel mai simplu mod de a observa ARM64 \u2013 este s\u0103 folosi\u021bi eBPF. eBPF (prescurtare de la Berkeley Packet Filter) const\u0103 dintr-o ma\u0219in\u0103 virtual\u0103, rulat\u0103 \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/bpf_collabsummit_2015feb20.pdf\">nucleu<\/a><\/noindex>, pe care utilizatorii privilegia\u021bi o pot solicita (<code>query<\/code>) din linia de comand\u0103. Sursa nucleului informeaz\u0103 cititorul despre ceea ce poate face nucleul; rularea instrumentelor eBPF \u00eentr-un sistem \u00eenc\u0103rcat arat\u0103 ceea ce face de fapt nucleul. <\/p>\n<p><img decoding=\"async\" alt=\"Sistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103? Partea 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>Din fericire, \u00eenceperea utiliz\u0103rii eBPF este destul de u\u0219oar\u0103 cu ajutorul instrumentelor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\">bcc<\/a><\/noindex>, care sunt disponibile ca pachete din distribu\u021bia general\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/INSTALL.md\">Linux<\/a><\/noindex> \u0219i sunt documentate \u00een detaliu <noindex><a rel=\"nofollow\" href=\"http:\/\/brendangregg.com\/ebpf.html\">de Bernard Gregg<\/a><\/noindex>. Instrumentele <code>bcc<\/code> sunt scripturi \u00een Python cu mici inser\u021bii de cod \u00een C, ceea ce \u00eenseamn\u0103 c\u0103 oricine familiarizat cu ambele limbi le poate modifica cu u\u0219urin\u021b\u0103. \u00cen <code>bcc\/tools<\/code> exist\u0103 80 de scripturi Python, ceea ce \u00eenseamn\u0103 c\u0103, cel mai probabil, dezvoltatorul sau administratorul de sistem va putea g\u0103si ceva potrivit pentru a rezolva problema. <br \/>\nPentru a ob\u021bine cel pu\u021bin o imagine de ansamblu despre munca pe care o desf\u0103\u0219oar\u0103 VFS \u00eentr-un sistem activ, \u00eencerca\u021bi <code>vfscount<\/code> sau <code>vfsstat<\/code>. Aceasta va ar\u0103ta, de exemplu, c\u0103 zeci de apeluri <code>vfs_open()<\/code> \u0219i \u201eprietenii s\u0103i\u201d au loc literalmente \u00een fiecare secund\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103? Partea 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> este un script \u00een Python, cu inser\u021bii de cod C, care pur \u0219i simplu num\u0103r\u0103 apelurile func\u021biilor VFS.<\/p><\/blockquote>\n<p>S\u0103 d\u0103m un exemplu mai trivial \u0219i s\u0103 vedem ce se \u00eent\u00e2mpl\u0103 c\u00e2nd conect\u0103m un stick USB la calculator \u0219i este detectat de sistem.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103? Partea 2\" src=\"\/wp-content\/uploads\/2019\/04\/5c756fe1b6d4c5906631e5da24b59dca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p>Cu ajutorul eBPF, putem observa ceea ce se \u00eent\u00e2mpl\u0103 \u00een <code>\/sys<\/code>, atunci c\u00e2nd este inserat stick-ul USB. Aici este prezentat un exemplu simplu \u0219i unul complex.<\/p><\/blockquote>\n<p>\u00cen exemplul ar\u0103tat mai sus, <code>bcc<\/code> un instrument <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/tools\/trace_example.txt\">trace.py<\/a><\/noindex> afiseaz\u0103 un mesaj c\u00e2nd este executat\u0103 comanda <code>sysfs_create_files()<\/code>. Vedem c\u0103 <code>sysfs_create_files()<\/code> a fost pornit cu ajutorul <code>kworker<\/code> fireii ca r\u0103spuns la faptul c\u0103 stick-ul a fost inserat, dar ce fi\u0219ier a fost creat? Al doilea exemplu arat\u0103 toat\u0103 puterea eBPF. Aici <code>trace.py<\/code> ofer\u0103 o trasare invers\u0103 a nucleului (kernel backtrace) (op\u021biunea -K) \u0219i numele fi\u0219ierului care a fost creat <code>sysfs_create_files()<\/code>. Inserarea \u00een citate simple este un cod C, care include un \u0219ir de formatare u\u0219or de recunoscut, asigurat de un script Python care ruleaz\u0103 LLVM <i>compilator just-in-time<\/i>. Acest \u0219ir este compilat \u0219i executat \u00een ma\u0219ina virtual\u0103 din interiorul nucleului. Semn\u0103tura complet\u0103 a func\u021biei <code>sysfs_create_files ()<\/code> trebuie s\u0103 fie reprodus\u0103 \u00een al doilea comanda, pentru ca \u0219irul de formatare s\u0103 poat\u0103 face referire la unul dintre parametrii. Erorile din acest fragment de cod C duc la erori recognoscibile ale compilatorului C. De exemplu, dac\u0103 este omis parametrul -l, vei vedea \"Failed to compile BPF text.\" Dezvoltatorii care sunt familiariza\u021bi cu C \u0219i Python vor g\u0103si instrumentele <code>bcc<\/code> u\u0219or de extins \u0219i modificat.<\/p>\n<p>C\u00e2nd unitatea USB este introdus\u0103, trasarea invers\u0103 a nucleului va ar\u0103ta c\u0103 PID 7711 este firul <code>kworker<\/code>, care a creat fi\u0219ierul <code>\u201eevents\u201d<\/code> \u00een <code>sysfs<\/code>. Prin urmare, apelul cu <code>sysfs_remove_files()<\/code> va ar\u0103ta c\u0103 eliminarea unit\u0103\u021bii a dus la \u0219tergerea fi\u0219ierului <code>, care este utilizat\u0103 pentru<\/code>, ceea ce corespunde conceptului general de num\u0103rare a referin\u021belor. \u00cen acest caz, vizualizarea <code>sysfs_create_link ()<\/code> cu eBPF \u00een timpul introducerii unit\u0103\u021bii USB va ar\u0103ta c\u0103 au fost create nu mai pu\u021bin de 48 de linkuri simbolice.<\/p>\n<p>A\u0219adar, care este sensul fi\u0219ierului events? Utilizarea <noindex><a rel=\"nofollow\" href=\"http:\/\/northstar-www.dartmouth.edu\/doc\/solaris-forte\/manuals\/c\/user_guide\/cscope.html\">cscope<\/a><\/noindex> pentru a c\u0103uta <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>, arat\u0103 c\u0103 aceasta apeleaz\u0103 <code>disk_add_events ()<\/code>, \u0219i fie <code>\"media_change\"<\/code>, sau <code>\"eject_request\"<\/code> pot fi scrise \u00een fi\u0219ierul de evenimente. Aici, stratul de blocuri al nucleului informeaz\u0103 userspace despre apari\u021bia \u0219i extragerea \u201ediscului\u201d. Observa\u021bi c\u00e2t de informativ este acest mod de cercetare \u00een cazul introducerii unit\u0103\u021bii USB comparativ cu \u00eencerc\u0103rile de a descoperi cum func\u021bioneaz\u0103 totul exclusiv din sursele de cod.<\/p>\n<p><b>Sistemele de fi\u0219iere r\u0103d\u0103cin\u0103 numai pentru citire permit dispozitivele \u00eencorporate<\/b><\/p>\n<p>Desigur, nimeni nu opre\u0219te serverul sau computerul s\u0103u tr\u0103g\u00e2ndu-l din priz\u0103. Dar de ce? Totul se datoreaz\u0103 faptului c\u0103 sistemele de fi\u0219iere montate pe dispozitivele fizice de stocare pot avea scrieri am\u00e2nate, iar structurile de date care le \u00eenregistreaz\u0103 starea pot s\u0103 nu se sincronizeze cu \u00eenregistr\u0103rile din stocare. C\u00e2nd se \u00eent\u00e2mpl\u0103 acest lucru, proprietarii sistemului trebuie s\u0103 a\u0219tepte urm\u0103toarea pornire pentru a rula utilitarul <code>fsck filesystem-recovery<\/code> \u0219i, \u00een cel mai r\u0103u caz, s\u0103 piard\u0103 date. <\/p>\n<p>Cu toate acestea, \u0219tim cu to\u021bii c\u0103 multe dispozitive IoT, precum \u0219i routerele, termostatele \u0219i automobilele, func\u021bioneaz\u0103 acum pe Linux. Multe dintre aceste dispozitive nu au practic interfa\u021b\u0103 pentru utilizator \u0219i nu exist\u0103 nicio modalitate de a le opri \u201ecomplet\u201d. Imagina\u021bi-v\u0103 s\u0103 porni\u021bi o ma\u0219in\u0103 cu bateria desc\u0103rcat\u0103, c\u00e2nd alimentarea dispozitivului de control <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.automotivelinux.org\/_media\/eg-rhsa\/agl_referencehardwarespec_v0.1.0_20171018.pdf\">Linux<\/a><\/noindex> oscileaz\u0103 constant. Cum se face c\u0103 sistemul porne\u0219te f\u0103r\u0103 un lung <code>fsck<\/code>, atunci c\u00e2nd motorul \u00eencepe \u00een sf\u00e2r\u0219it s\u0103 func\u021bioneze? R\u0103spunsul este simplu. Dispozitivele \u00eencorporate se bazeaz\u0103 pe un sistem de fi\u0219iere r\u0103d\u0103cin\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/elinux.org\/images\/1\/1f\/Read-only_rootfs.pdf\">doar pentru citire<\/a><\/noindex> (prescurtat <code>ro-rootfs<\/code> (sistem de fi\u0219iere r\u0103d\u0103cin\u0103 doar pentru citire). <\/p>\n<p><code>ro-rootfs<\/code> ofer\u0103 multe avantaje, care sunt mai pu\u021bin evidente dec\u00e2t autenticitatea. Unul dintre aceste avantaje este c\u0103 malware-ul nu poate scrie \u00een <code>\/usr<\/code> sau <code>\/lib<\/code>, deoarece niciun proces Linux nu poate scrie acolo. Un alt avantaj este c\u0103 un sistem de fi\u0219iere \u00een mare parte neschimbabil este esen\u021bial pentru suportul de teren al dispozitivelor de la distan\u021b\u0103, deoarece personalul auxiliar folose\u0219te sisteme locale care sunt nominal egale cu sistemele de la fa\u021ba locului. Poate c\u0103 cel mai important (dar \u0219i cel mai insidios) avantaj este c\u0103 ro-rootfs \u00eei for\u021beaz\u0103 pe dezvoltatori s\u0103 decid\u0103 care obiecte de sistem vor fi neschimbabile \u00een stadiul de proiectare al sistemului. Lucrul cu ro-rootfs poate fi incomod \u0219i dureros, a\u0219a cum se \u00eent\u00e2mpl\u0103 adesea cu variabilele const \u00een limbajele de programare, dar avantajele lor compenseaz\u0103 cu u\u0219urin\u021b\u0103 costurile suplimentare.<\/p>\n<p>Crearea <code>rootfs<\/code> doar pentru citire necesit\u0103 un efort suplimentar din partea dezvoltatorilor de sisteme \u00eencorporate, iar aici intervine VFS. Linux necesit\u0103 ca fi\u0219ierele \u00een <code>\/var<\/code> s\u0103 fie accesibile pentru scriere, iar, \u00een plus, multe aplica\u021bii populare care ruleaz\u0103 pe sistemele \u00eencorporate vor \u00eencerca s\u0103 creeze fi\u0219iere de configurare <code>dot-files<\/code> \u00een <code>$HOME<\/code>. O solu\u021bie pentru fi\u0219ierele de configurare din directorul personal este, \u00een general, generarea lor preliminar\u0103 \u0219i montarea \u00eentr-o <code>rootfs<\/code>. Pentru <code>\/var<\/code> abordare posibil\u0103 este s\u0103 fie montat \u00eentr-o parti\u021bie separat\u0103, accesibil\u0103 pentru scriere, \u00een timp ce <code>\/<\/code> este montat doar pentru citire. O alt\u0103 alternativ\u0103 popular\u0103 este utilizarea mont\u0103rilor legate sau suprapuse (bind sau overlay mounts).<\/p>\n<p><b>Mounturi legate \u0219i suprapuse, utilizarea acestora de c\u0103tre containere<\/b> <\/p>\n<p>Executarea comenzilor <code>man mount<\/code> este cea mai bun\u0103 metod\u0103 de a \u00eenv\u0103\u021ba despre mounturi legate \u0219i suprapuse, care ofer\u0103 dezvoltatorilor \u0219i administratorilor de sistem posibilitatea de a crea un sistem de fi\u0219iere \u00eentr-un anumit loc \u0219i apoi de a-l pune la dispozi\u021bia aplica\u021biilor \u00eentr-altul. Pentru sistemele \u00eencorporate, aceasta implic\u0103 posibilitatea de a stoca fi\u0219iere \u00een <code>\/var<\/code> pe un dispozitiv flash disponibil doar pentru citire, dar montarea suprapus\u0103 sau legat\u0103 a unei c\u0103i din <code>tmpfs<\/code> \u00een <code>\/var<\/code> la \u00eenc\u0103rcare va permite aplica\u021biilor s\u0103 scrie acolo note (scrawl). La urm\u0103toarea pornire, modific\u0103rile din <code>\/var<\/code> vor fi pierdute. Montarea suprapus\u0103 creeaz\u0103 o fuziune \u00eentre <code>tmpfs<\/code> \u0219i sistemul de fi\u0219iere de baz\u0103 \u0219i permite efectuarea unor modific\u0103ri aparent ale fi\u0219ierelor existente \u00een <code>ro-tootf<\/code> \u00een timp ce montarea legat\u0103 poate face noile foldere goale vizibile ca fiind disponibile pentru scriere \u00een <code>tmpfs<\/code> c\u0103i. \u00cen timp ce <code>ro-rootfs<\/code> overlayfs <code>este tipul corect (<\/code> proper<code>) de sistem de fi\u0219iere, montarea legat\u0103 este implementat\u0103 \u00een<\/code>spa\u021biul numel VFS <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/Documentation\/filesystems\/sharedsubtree.txt\">Pe baza descrierii mont\u0103rii suprapuse \u0219i legate, nu este de mirare c\u0103<\/a><\/noindex>.<\/p>\n<p>containerele Linux <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/os\/docs\/latest\/kernel-modules.html\">le folosesc activ. S\u0103 observ\u0103m ce se \u00eent\u00e2mpl\u0103 c\u00e2nd folosim<\/a><\/noindex> pentru a lansa un container, utiliz\u00e2nd instrumentul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd-nspawn.html\">systemd-nspawn<\/a><\/noindex> mountsnoop <code>system-nspawn<\/code> de la <code>bcc<\/code>.<\/p>\n<p>Apel <code>lanceaz\u0103 containerul \u00een timpul execu\u021biei<\/code> mountsnoop.py <code>\u00een timpul \"\u00eenc\u0103rc\u0103rii\" containerului arat\u0103 c\u0103 mediul de execu\u021bie al containerului depinde foarte mult de montarea legat\u0103 (Afi\u0219eaz\u0103 doar \u00eenceputul unei ie\u0219iri lungi).<\/code>.<\/p>\n<p>S\u0103 vedem ce a ie\u0219it:<\/p>\n<p>Pornire <code>system-nspawn<\/code> ofer\u0103 fi\u0219ierele selectate din<\/p>\n<p>Aici <code>systemd-nspawn<\/code> gazda \u00een container ca c\u0103i \u00een <code>procfs<\/code> \u0219i <code>sysfs<\/code> . \u00cen plus fa\u021b\u0103 de <code>rootfs<\/code>MS_BIND <code>flag, care stabile\u0219te montarea legat\u0103, alte c\u00e2teva flage \u00een sistemul montat determin\u0103 rela\u021bia \u00eentre modific\u0103rile din spa\u021biul numel gazdei \u0219i containerului. De exemplu, montarea legat\u0103 poate fie s\u0103 permit\u0103 modific\u0103rile \u00een<\/code> \u00een container, fie s\u0103 le ascund\u0103 \u00een func\u021bie de apel. <code>\/proc<\/code> \u0219i <code>\/sys<\/code> \u00cen\u021belegerea structurii interne a Linux poate p\u0103rea o sarcin\u0103 imposibil\u0103, deoarece nucleul con\u021bine o cantitate uria\u0219\u0103 de cod, l\u0103s\u00e2nd deoparte aplica\u021biile din spa\u021biul utilizatorului Linux \u0219i interfe\u021bele de apel ale sistemului \u00een biblioteci \u00een limbajul C, cum ar fi <\/p>\n<p><b>Concluzie<\/b><\/p>\n<p>\u00cen\u021belegerea func\u021bion\u0103rii interne a Linux poate p\u0103rea o sarcin\u0103 imposibil\u0103, deoarece nucleul s\u0103u con\u021bine o cantitate uria\u0219\u0103 de cod, l\u0103s\u00e2nd deoparte aplica\u021biile din spa\u021biul utilizatorului Linux \u0219i interfe\u021bele de apel de sistem din biblioteci scrise \u00een C, precum <code>glibc<\/code>. Una dintre modalit\u0103\u021bile de a progresa este s\u0103 citim codul surs\u0103 al unei subsisteme a nucleului, concentr\u00e2ndu-ne asupra \u00een\u021belegerii apelurilor de sistem \u0219i a header-elor adresate spa\u021biului utilizatorului, precum \u0219i a interfe\u021belor interne de baz\u0103 ale nucleului, de exemplu, tabela. <code>file_operations<\/code>. Opera\u021biunile pe fi\u0219iere asigur\u0103 principiul \u201etotul este un fi\u0219ier\u201d, astfel c\u0103 gestionarea lor este deosebit de pl\u0103cut\u0103. Fi\u0219ierele surs\u0103 ale nucleului \u00een limbajul C se afl\u0103 \u00een directorul de nivel superior. <code>fs\/<\/code> ele reprezint\u0103 implementarea sistemelor de fi\u0219iere virtuale, care sunt un strat de tabl\u0103 ce asigur\u0103 o compatibilitate larg\u0103 \u0219i relativ simpl\u0103 cu sistemele de fi\u0219iere populare \u0219i dispozitivele de stocare. Montarea prin legare \u0219i suprapunerea prin spa\u021biile de nume Linux este magia VFS, care face posibil\u0103 crearea containerelor \u0219i sistemelor de fi\u0219iere de baz\u0103 doar pentru citire. \u00cempreun\u0103 cu studiul codului surs\u0103, instrumentul nucleului eBPF \u0219i interfa\u021ba sa <code>bcc<\/code><br \/>\n fac cercetarea nucleului mai u\u0219oar\u0103 ca niciodat\u0103.<\/p>\n<p>Prietenii, a\u021bi scris dac\u0103 acest articol v-a fost util? Poate ave\u021bi comentarii sau observa\u021bii? Iar cei care sunt interesa\u021bi de cursul \u201eAdministrator Linux\u201d sunt invita\u021bi la <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/u5Jw\/\">ziua por\u021bilor deschise<\/a><\/noindex>, care va avea loc pe 18 aprilie.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">Prima parte.<\/a><\/noindex><br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Sistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103? Partea 2 | ProHoster","description":"Bun\u0103 ziua tuturor, \u00eemp\u0103rt\u0103\u0219im cu voi a doua parte a publica\u021biei \u201eSistemele de fi\u0219iere virtuale \u00een Linux: de ce sunt necesare \u0219i cum func\u021bioneaz\u0103?\u201d Prima parte poate fi citit\u0103","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/31333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31333"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23299"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}