{"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\/nl\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","title":{"rendered":"Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze? Deel 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo allemaal, we delen de tweede deel van de publicatie \u2018Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze?\u2019 Het eerste deel is hier te lezen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">here<\/a><\/noindex>. Ter herinnering, deze publicatiereeks is gelanceerd ter gelegenheid van de nieuwe editie van de cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/tjnD\/\">\u2018Linux Beheerder\u2019<\/a><\/noindex>, die binnenkort van start gaat.<\/p>\n<p><b>Hoe VFS te observeren met eBPF- en bcc-tools<\/b><\/p>\n<p>De eenvoudigste manier om te begrijpen hoe de kernel met bestanden omgaat <code>sysfs<\/code> is door dit in de praktijk te bekijken, en de eenvoudigste manier om ARM64 te observeren is door gebruik te maken van eBPF. eBPF (afkorting van Berkeley Packet Filter) bestaat uit een virtuele machine die draait in <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/bpf_collabsummit_2015feb20.pdf\">de kernel<\/a><\/noindex>, die door geprivilegieerde gebruikers kan worden opgevraagd (<code>query<\/code>) vanuit de opdrachtregel. De kernelbronnen informeren de lezer over wat de kernel kan doen; het uitvoeren van eBPF-tools in een draaiend systeem laat zien wat de kernel daadwerkelijk doet. <\/p>\n<p><img decoding=\"async\" alt=\"Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze? Deel 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>Gelukkig is het vrij eenvoudig om eBPF te gebruiken met de tools <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\">bcc<\/a><\/noindex>, die beschikbaar zijn als pakketten uit de algemene distributie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/INSTALL.md\">Linux<\/a><\/noindex> en die uitgebreid zijn gedocumenteerd <noindex><a rel=\"nofollow\" href=\"http:\/\/brendangregg.com\/ebpf.html\">door Bernard Gregg.<\/a><\/noindex>De tools <code>bcc<\/code> zijn scripts in Python met kleine stukjes code in C, wat betekent dat iedereen die bekend is met beide talen deze gemakkelijk kan aanpassen. In <code>bcc\/tools<\/code> zijn er 80 Python-scripts, wat betekent dat het waarschijnlijk is dat een ontwikkelaar of systeembeheerder iets kan vinden dat geschikt is voor hun taak. <br \/>\nOm een oppervlakkig begrip te krijgen van welke werkzaamheden VFS in een draaiend systeem uitvoert, probeer <code>vfscount<\/code> of <code>vfsstat.<\/code>Dit toont bijvoorbeeld aan dat tientallen aanroepen van <code>vfs_open()<\/code> en 'zijn vrienden' letterlijk elke seconde plaatsvinden.<\/p>\n<p><img decoding=\"async\" alt=\"Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze? Deel 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> is een Python-script, met C-code-invoegingen, dat eenvoudigweg het aantal aanroepen van VFS-functies telt.<\/p><\/blockquote>\n<p>Laten we een eenvoudiger voorbeeld geven en kijken wat er gebeurt wanneer we een USB-stick in de computer steken en het systeem deze detecteert.<\/p>\n<p><img decoding=\"async\" alt=\"Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze? Deel 2\" src=\"\/wp-content\/uploads\/2019\/04\/5c756fe1b6d4c5906631e5da24b59dca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p>Met eBPF kunnen we zien wat er gebeurt in <code>\/sys<\/code>, wanneer een USB-stick is ingevoegd. Hier is een eenvoudig en een complex voorbeeld.<\/p><\/blockquote>\n<p>In het voorbeeld hierboven, <code>bcc<\/code> de tool <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/tools\/trace_example.txt\">trace.py<\/a><\/noindex> geeft een bericht weer wanneer het commando wordt uitgevoerd <code>sysfs_create_files()<\/code>. We zien dat <code>sysfs_create_files()<\/code> is uitgevoerd met behulp van <code>kworker<\/code> een thread in reactie op het feit dat de stick is ingevoerd, maar welk bestand is er op dat moment aangemaakt? Het tweede voorbeeld toont de volledige kracht van eBPF. Hier <code>trace.py<\/code> geeft een reverse kernel backtrace weer (optie -K) en de naam van het bestand dat is gemaakt <code>sysfs_create_files()<\/code>. Invoegen in enkele citaten is code in C die een herkenbare formatteerstring bevat, geleverd door een Python-script dat LLVM aanroept <i>just-in-time compiler<\/i>. Deze string compileert hij en voert deze uit in een virtuele machine binnen de kernel. De volledige functiehandtekening <code>sysfs_create_files ()<\/code> moet worden gereproduceerd in de tweede opdracht, zodat de formatteerstring naar een van de parameters kan verwijzen. Fouten in dit C-codefragment leiden tot herkenbare fouten van de C-compiler. Bijvoorbeeld, als de parameter -l ontbreekt, zie je \"Failed to compile BPF text.\" Ontwikkelaars die goed bekend zijn met C en Python zullen de tools <code>bcc<\/code> eenvoudig uitbreidbaar en aanpasbaar vinden.<\/p>\n<p>Wanneer een USB-stick wordt ingevoegd, toont de kernel backtrace aan dat PID 7711 de thread is <code>kworker<\/code>, die het bestand heeft aangemaakt <code>\"events\"<\/code> in <code>sysfs<\/code>. Dienovereenkomstig zal de aanroep met <code>sysfs_remove_files()<\/code> laten zien dat het verwijderen van de stick heeft geleid tot het verwijderen van het bestand <code>events<\/code>, wat overeenkomt met het algemene concept van referentietelling. Hierbij zal het bekijken van <code>sysfs_create_link ()<\/code> met eBPF tijdens het invoegen van de USB-stick laten zien dat er minstens 48 symbolische links zijn aangemaakt.<\/p>\n<p>Wat is dus de betekenis van het bestand events? Het gebruik van <noindex><a rel=\"nofollow\" href=\"http:\/\/northstar-www.dartmouth.edu\/doc\/solaris-forte\/manuals\/c\/user_guide\/cscope.html\">cscope<\/a><\/noindex> om te zoeken naar <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>, toont aan dat deze aanroept <code>disk_add_events ()<\/code>, en dat ofwel <code>\"media_change\"<\/code>, ofwel <code>\"eject_request\"<\/code> in het evenementbestand kunnen worden geschreven. Hier informeert de bloklaag van de kernel userspace over het inserten en ejecten van de \"schijf\". Let op hoe informatief deze onderzoeksmethode is bij het invoegen van de USB-stick vergeleken met pogingen om te begrijpen hoe alles werkt puur vanuit de broncodes.<\/p>\n<p><b>Alleen-lezen wortelbesturingssystemen maken ingebouwde apparaten mogelijk<\/b><\/p>\n<p>Natuurlijk schakelt niemand de server of zijn computer uit door de stekker uit het stopcontact te trekken. Maar waarom? Omdat ingeladen bestandssystemen op fysieke opslagapparaten uitgestelde schrijvers kunnen hebben, en de datastructuren die hun status opslaan mogelijk niet synchroniseren met de records in de opslag. Wanneer dit gebeurt, moeten systeembeheerders wachten op de volgende herstart om het hulpprogramma <code>fsck filesystem-recovery<\/code> uit te voeren en in het slechtste geval gegevens te verliezen. <\/p>\n<p>Toch weten we allemaal dat veel IoT-apparaten, evenals routers, thermostaten en auto's, nu op Linux draaien. Veel van deze apparaten hebben praktisch geen gebruikersinterface, en er is geen manier om ze \"schoon\" uit te schakelen. Stel je voor dat je een auto met een lege accu opstart, terwijl de voeding van de controller aan <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.automotivelinux.org\/_media\/eg-rhsa\/agl_referencehardwarespec_v0.1.0_20171018.pdf\">Linux<\/a><\/noindex> constant op en neer fluctueert. Hoe gebeurt het dat het systeem opstart zonder een lange <code>fsck<\/code>wanneer de motor eindelijk begint te draaien? Het antwoord is eenvoudig. Ingebouwde apparaten vertrouwen op het rootbestandssysteem <noindex><a rel=\"nofollow\" href=\"https:\/\/elinux.org\/images\/1\/1f\/Read-only_rootfs.pdf\">alleen voor lezen<\/a><\/noindex> (afgekort <code>ro-rootfs<\/code> (read-only root filesystem). <\/p>\n<p><code>ro-rootfs<\/code> bieden veel voordelen die minder voor de hand liggend zijn dan onveranderlijkheid. Een van de voordelen is dat malware niet kan schrijven naar <code>\/usr<\/code> of <code>\/lib<\/code>, mits geen enkel Linux-proces daar kan schrijven. Een ander voordeel is dat een grotendeels onveranderlijk bestandssysteem cruciaal is voor de veldondersteuning van apparaten op afstand, aangezien het ondersteunend personeel gebruikmaakt van lokale systemen die nominieel identiek zijn aan de systemen ter plaatse. Misschien is het belangrijkste (maar ook het meest verraderlijke) voordeel dat ro-rootfs ontwikkelaars dwingt na te denken over welke systeemelementen onveranderlijk zullen zijn, al in de ontwerpfase van het systeem. Werken met ro-rootfs kan onhandig en pijnlijk zijn, zoals vaak het geval is met const-variabelen in programmeertalen, maar de voordelen wegen ruimschoots op tegen de bijkomende kosten.<\/p>\n<p>Cre\u00ebren <code>rootfs<\/code> readonly vereist enige extra inspanning van ontwikkelaars van ingebedde systemen, en hier komt de VFS in het spel. Linux vereist dat bestanden in <code>\/var<\/code> schrijfrechten hebben, en bovendien zullen veel populaire applicaties die ingebedde systemen draaien, proberen configuratie- <code>dot-bestanden<\/code> in <code>$HOME<\/code>. Een van de oplossingen voor configuratiebestanden in de thuisdirectory is meestal hun voorafgaande generatie en verzameling in <code>rootfs<\/code>in te stellen. Voor <code>\/var<\/code> een van de mogelijke benaderingen is om het in een aparte partitie te monteren die schrijfbaar is, terwijl de root zelf <code>\/<\/code> alleen-lezen is. Een andere populaire alternatieve is het gebruik van bind of overlay mounts.<\/p>\n<p><b>Gekoppelde en overliggende mounts, gebruikt door containers<\/b> <\/p>\n<p>Uitvoeren van het commando <code>man mount<\/code> is de beste manier om te leren over gekoppelde en overliggende mounts, die ontwikkelaars en systeembeheerders in staat stellen om een bestandssysteem op \u00e9\u00e9n pad te cre\u00ebren en het vervolgens aan applicaties op een ander pad beschikbaar te stellen. Voor embedded systemen betekent dit de mogelijkheid om bestanden op te slaan in <code>\/var<\/code> een alleen-lezen flash-geheugen, maar een overliggend of gekoppeld gemonteerd pad vanaf <code>tmpfs<\/code> in <code>\/var<\/code> bij het opstarten stelt applicaties in staat om daar notities (scrawl) te schrijven. Bij de volgende opstart zullen de wijzigingen in <code>\/var<\/code> verloren gaan. Overliggend mounten cre\u00ebert een samenvoeging tussen <code>tmpfs<\/code> en het onderliggende bestandssysteem, en maakt het mogelijk om zogenaamd wijzigingen aan te brengen in bestaande bestanden in <code>ro-tootf<\/code> terwijl gekoppeld mounten nieuwe lege <code>tmpfs<\/code> mappen zichtbaar kan maken als schrijfbare in <code>ro-rootfs<\/code> paden. Terwijl <code>overlayfs<\/code> is het juiste (<code>proper<\/code>) type bestandssysteem, gekoppeld mounten is ge\u00efmplementeerd in <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/Documentation\/filesystems\/sharedsubtree.txt\">de VFS-namespace<\/a><\/noindex>.<\/p>\n<p>Gebaseerd op de beschrijving van overliggend en gekoppeld mounten, is het geen verrassing dat <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/os\/docs\/latest\/kernel-modules.html\">Linux-containers<\/a><\/noindex> ze actief gebruiken. Laten we eens kijken wat er gebeurt wanneer we <noindex><a rel=\"nofollow\" href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd-nspawn.html\">systemd-nspawn<\/a><\/noindex> gebruiken om een container te starten, met het hulpmiddel <code>mountsnoop<\/code> van <code>bcc<\/code>.<\/p>\n<p>Aanroep <code>system-nspawn<\/code> start de container tijdens de uitvoering <code>mountsnoop.py<\/code>.<\/p>\n<p>Laten we kijken naar het resultaat:<\/p>\n<p>Start <code>mountsnoop<\/code> tijdens het 'opstarten' van de container toont aan dat de runtime-omgeving van de container sterk afhankelijk is van gekoppeld mounten (alleen het begin van een lange uitvoer wordt weergegeven).<\/p>\n<p>Hier <code>systemd-nspawn<\/code> levert geselecteerde bestanden van <code>. Functies<\/code> en <code>sysfs<\/code> de host naar de container als paden in zijn <code>rootfs<\/code>. Naast <code>de MS_BIND<\/code> vlag, die het gekoppeld mounten instelt, bepalen enkele andere vlaggen in het gemonteerde systeem de relatie tussen wijzigingen in de namespace van de host en de container. Bijvoorbeeld, gekoppeld mounten kan ofwel wijzigingen in <code>\/proc<\/code> en <code>\/sys<\/code> naar de container doorlaten of verbergen, afhankelijk van de aanroep. <\/p>\n<p><b>Conclusie<\/b><\/p>\n<p>De interne werking van Linux begrijpen kan een onmogelijke taak lijken, aangezien de kernel zelf een enorme hoeveelheid code bevat, om nog maar te zwijgen van de toepassingen van de gebruikersruimte in Linux en de systeemaanroepinterfaces in C-bibliotheken, zoals <code>glibc<\/code>. Een van de manieren om vooruitgang te boeken, is door de broncode van een subsysteem van de kernel te lezen, met de nadruk op het begrijpen van systeemeisen en headers die naar de gebruikersruimte verwijzen, evenals de belangrijkste interne interfaces van de kernel, zoals de tabel <code>file_operations<\/code>. Bestandsbewerkingen volgen het principe 'alles is een bestand', waardoor het beheer ervan bijzonder prettig is. De bronbestanden van de kernel in de bovenliggende map <code>fs\/<\/code> vertegenwoordigen de implementatie van virtuele bestandssystemen, die een laag van een schil bieden, waardoor een brede en relatief eenvoudige compatibiliteit van populaire bestandssystemen en opslagapparaten mogelijk is. Koppelen met bindmounts en overlappen via Linux-namespaces is de magie van VFS, die het mogelijk maakt om containers en alleen-lezen rootbestandenystemen te cre\u00ebren. In combinatie met het bestuderen van de broncode, maakt de kern eBPF en zijn interface <code>bcc<\/code><br \/>\n het onderzoeken van de kernel gemakkelijker dan ooit.<\/p>\n<p>Vrienden, laat ons weten of deze artikel nuttig voor jullie was. Misschien hebben jullie opmerkingen of suggesties? En voor degenen die ge\u00efnteresseerd zijn in de cursus 'Linux Administrator', nodigen we jullie uit voor <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/u5Jw\/\">open day<\/a><\/noindex>, die op 18 april plaatsvindt.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">Eerste deel.<\/a><\/noindex><br \/>\n<br \/>Bron: <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.3 - 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\/nl\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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 Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze? Deel 2 | ProHoster","description":"Hallo allemaal, we delen de tweede deel van de publicatie \u2018Virtuele bestandssystemen in Linux: waarom zijn ze nodig en hoe werken ze?\u2019 Het eerste deel is hier te lezen","canonical_url":"https:\/\/prohoster.info\/nl\/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":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/31333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=31333"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/31333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/23299"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=31333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=31333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=31333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}