{"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\/es\/blog\/administrirovanie\/virtualnye-fajlovye-sistemy-v-linux-zachem-oni-nuzhny-i-kak-oni-rabotayut-chast-2","title":{"rendered":"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan? Parte 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hola a todos, compartimos con ustedes la segunda parte de la publicaci\u00f3n \"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan?\" La primera parte se puede leer <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">aqu\u00ed<\/a><\/noindex>. Recordemos que esta serie de publicaciones coincide con el lanzamiento de un nuevo ciclo del curso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/tjnD\/\">\u00abAdministrador de Linux\u00bb<\/a><\/noindex>, que comenzar\u00e1 muy pronto.<\/p>\n<p><b>C\u00f3mo supervisar VFS con herramientas eBPF y bcc<\/b><\/p>\n<p>La forma m\u00e1s sencilla de entender c\u00f3mo el n\u00facleo maneja los archivos <code>sysfs<\/code> \u2013 es observarlo en la pr\u00e1ctica, y la manera m\u00e1s f\u00e1cil de observar ARM64 es usar eBPF. eBPF (abreviatura de Berkeley Packet Filter) consiste en una m\u00e1quina virtual que se ejecuta en el <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/bpf_collabsummit_2015feb20.pdf\">n\u00facleo<\/a><\/noindex>, que los usuarios privilegiados pueden consultar (<code>query<\/code>) desde la l\u00ednea de comandos. El c\u00f3digo fuente del n\u00facleo informa al lector sobre lo que el n\u00facleo puede hacer; ejecutar herramientas eBPF en un sistema en funcionamiento muestra lo que el n\u00facleo realmente hace. <\/p>\n<p><img decoding=\"async\" alt=\"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan? Parte 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>Afortunadamente, comenzar a usar eBPF es bastante f\u00e1cil con las herramientas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\">bcc<\/a><\/noindex>, que est\u00e1n disponibles como paquetes en la distribuci\u00f3n general <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/INSTALL.md\">Linux<\/a><\/noindex> y est\u00e1n documentadas en detalle <noindex><a rel=\"nofollow\" href=\"http:\/\/brendangregg.com\/ebpf.html\">por Bernard Greg.<\/a><\/noindex>. Las herramientas <code>bcc<\/code> son scripts en Python con peque\u00f1as inserciones de c\u00f3digo en C, lo que significa que cualquiera que est\u00e9 familiarizado con ambos lenguajes puede modificarlos f\u00e1cilmente. En <code>bcc\/tools<\/code> hay 80 scripts de Python, lo que significa que probablemente un desarrollador o administrador de sistemas podr\u00e1 encontrar algo adecuado para resolver la tarea. <br \/>\nPara obtener al menos una visi\u00f3n superficial de qu\u00e9 trabajo realizan VFS en un sistema en funcionamiento, intente <code>vfscount<\/code> o <code>vfsstat<\/code>. Esto mostrar\u00e1, por ejemplo, que decenas de llamadas <code>vfs_open()<\/code> y \u00absus amigos\u00bb ocurren literalmente cada segundo.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan? Parte 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> es un script en Python, con inserciones de c\u00f3digo en C, que simplemente cuenta las llamadas a funciones VFS.<\/p><\/blockquote>\n<p>Demos un ejemplo m\u00e1s trivial y veamos qu\u00e9 sucede cuando insertamos una memoria USB en la computadora y el sistema la detecta.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan? Parte 2\" src=\"\/wp-content\/uploads\/2019\/04\/5c756fe1b6d4c5906631e5da24b59dca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p>Con eBPF se puede observar qu\u00e9 ocurre en <code>\/sys<\/code>, cuando se inserta una memoria USB. Aqu\u00ed se muestra un ejemplo simple y uno complejo.<\/p><\/blockquote>\n<p>En el ejemplo mostrado arriba, <code>bcc<\/code> herramienta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/iovisor\/bcc\/blob\/master\/tools\/trace_example.txt\">trace.py<\/a><\/noindex> imprime un mensaje cuando se ejecuta el comando <code>sysfs_create_files().<\/code>Vemos que <code>sysfs_create_files().<\/code> se ha ejecutado mediante <code>kworker<\/code> flujos en respuesta a que se insert\u00f3 la memoria USB, pero \u00bfqu\u00e9 archivo se cre\u00f3 en ese momento? El segundo ejemplo muestra toda la potencia de eBPF. Aqu\u00ed <code>trace.py<\/code> se imprime el rastreo inverso del n\u00facleo (kernel backtrace) (opci\u00f3n -K) y el nombre del archivo que se cre\u00f3 <code>sysfs_create_files().<\/code>. La inserci\u00f3n en declaraciones individuales es c\u00f3digo en C, que incluye una cadena de formato f\u00e1cilmente reconocible, proporcionada por un script de Python que ejecuta LLVM <i>compilador just-in-time<\/i>. Esta cadena se compila y se ejecuta en una m\u00e1quina virtual dentro del n\u00facleo. La firma completa de la funci\u00f3n <code>sysfs_create_files ()<\/code> debe ser reproducida en el segundo comando para que la cadena de formato pueda referenciar uno de los par\u00e1metros. Los errores en este fragmento de c\u00f3digo en C provocan errores reconocibles del compilador de C. Por ejemplo, si falta el par\u00e1metro -l, ver\u00e1s \"Failed to compile BPF text.\" Los desarrolladores que est\u00e9n familiarizados con C y Python encontrar\u00e1n las herramientas <code>bcc<\/code> f\u00e1ciles de extender y modificar.<\/p>\n<p>Cuando se inserta el dispositivo USB, el rastreo inverso del n\u00facleo mostrar\u00e1 que el PID 7711 es el hilo <code>kworker<\/code>, que cre\u00f3 el archivo <code>\"events\"<\/code> en <code>sysfs<\/code>. Por lo tanto, la llamada a <code>sysfs_remove_files()<\/code> mostrar\u00e1 que la eliminaci\u00f3n del dispositivo llev\u00f3 a la eliminaci\u00f3n del archivo <code>events<\/code>, lo que concuerda con el concepto general de conteo de referencias. Al mismo tiempo, la visualizaci\u00f3n de <code>sysfs_create_link ()<\/code> con eBPF durante la inserci\u00f3n del dispositivo USB mostrar\u00e1 que se han creado al menos 48 enlaces simb\u00f3licos.<\/p>\n<p>Entonces, \u00bfcu\u00e1l es el prop\u00f3sito del archivo events? El uso de <noindex><a rel=\"nofollow\" href=\"http:\/\/northstar-www.dartmouth.edu\/doc\/solaris-forte\/manuals\/c\/user_guide\/cscope.html\">cscope<\/a><\/noindex> para buscar <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>, muestra que llama a <code>disk_add_events ()<\/code>, y ya sea <code>\"media_change\"<\/code>, o <code>\"eject_request\"<\/code> pueden ser escritos en el archivo de eventos. Aqu\u00ed, la capa de bloques del n\u00facleo informa al espacio de usuario sobre la inserci\u00f3n y extracci\u00f3n del \"disco\". Observe cu\u00e1n informativo es este m\u00e9todo de investigaci\u00f3n al comparar la inserci\u00f3n del dispositivo USB con intentar averiguar c\u00f3mo funciona todo exclusivamente a partir del c\u00f3digo fuente.<\/p>\n<p><b>Los sistemas de archivos ra\u00edz de solo lectura hacen posibles los dispositivos integrados<\/b><\/p>\n<p>Por supuesto, nadie apaga el servidor o su computadora desconectando el enchufe de la pared. Pero, \u00bfpor qu\u00e9? Todo porque los sistemas de archivos montados en dispositivos de almacenamiento f\u00edsico pueden tener escrituras pendientes, y las estructuras de datos que registran su estado pueden no sincronizarse con las entradas en el almacenamiento. Cuando esto ocurre, los propietarios del sistema deben esperar al siguiente arranque para ejecutar la utilidad <code>fsck filesystem-recovery<\/code> y, en el peor de los casos, perder datos. <\/p>\n<p>Sin embargo, todos sabemos que muchos dispositivos IoT, as\u00ed como enrutadores, termostatos y autom\u00f3viles, ahora funcionan con Linux. Muchos de estos dispositivos pr\u00e1cticamente no tienen interfaz de usuario y no hay forma de apagarlos 'correctamente'. Imag\u00ednese arrancar un autom\u00f3vil con la bater\u00eda descargada, cuando la alimentaci\u00f3n del dispositivo de control est\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.automotivelinux.org\/_media\/eg-rhsa\/agl_referencehardwarespec_v0.1.0_20171018.pdf\">Linux<\/a><\/noindex> constantemente saltando hacia arriba y hacia abajo. \u00bfC\u00f3mo es que el sistema arranca sin un largo <code>fsck<\/code>, cuando el motor finalmente comienza a funcionar? Y la respuesta es simple. Los dispositivos integrados dependen de un sistema de archivos ra\u00edz <noindex><a rel=\"nofollow\" href=\"https:\/\/elinux.org\/images\/1\/1f\/Read-only_rootfs.pdf\">solo de lectura<\/a><\/noindex> (abreviado <code>ro-rootfs<\/code> (sistema de archivos ra\u00edz solo de lectura). <\/p>\n<p><code>ro-rootfs<\/code> ofrecen muchas ventajas que son menos obvias que la autenticidad. Una de las ventajas es que el malware no puede escribir en <code>\/usr<\/code> o <code>\/lib<\/code>, si ning\u00fan proceso de Linux puede escribir all\u00ed. Otra es que un sistema de archivos en gran medida inmutable es crucial para el soporte en campo de dispositivos remotos, ya que el personal de soporte utiliza sistemas locales que son nominalmente id\u00e9nticos a los sistemas en el sitio. Tal vez la ventaja m\u00e1s importante (pero tambi\u00e9n la m\u00e1s enga\u00f1osa) es que el ro-rootfs obliga a los desarrolladores a decidir qu\u00e9 objetos del sistema ser\u00e1n inmutables ya en la etapa de dise\u00f1o del sistema. Trabajar con ro-rootfs puede ser inc\u00f3modo y doloroso, como a menudo sucede con las variables const en los lenguajes de programaci\u00f3n, pero sus beneficios f\u00e1cilmente compensan los gastos generales adicionales.<\/p>\n<p>Creaci\u00f3n <code>rootfs<\/code> solo de lectura requiere un esfuerzo adicional por parte de los desarrolladores de sistemas integrados, y aqu\u00ed es donde entra en juego el VFS. Linux requiere que los archivos en <code>\/var<\/code> sean accesibles para escritura, y adem\u00e1s, muchas aplicaciones populares que ejecutan sistemas integrados intentar\u00e1n crear archivos de configuraci\u00f3n <code>dot-files<\/code> en <code>$HOME<\/code>. Una de las soluciones para los archivos de configuraci\u00f3n en el directorio home suele ser su generaci\u00f3n previa y compilaci\u00f3n en <code>rootfs<\/code>. Para <code>\/var<\/code> uno de los enfoques posibles es montarlo en una partici\u00f3n separada, accesible para escritura, mientras que el mismo <code>\/<\/code> se monta solo como de lectura. Otra alternativa popular es el uso de montajes enlazados o superpuestos (bind or overlay mounts).<\/p>\n<p><b>Montajes enlazados y superpuestos, su uso en contenedores<\/b> <\/p>\n<p>Ejecutar el comando <code>man mount<\/code> es la mejor manera de aprender sobre montajes enlazados y superpuestos, que permiten a los desarrolladores y administradores de sistemas crear un sistema de archivos en una ruta y luego ofrecerlo a las aplicaciones en otra. Para sistemas embebidos, esto significa la posibilidad de almacenar archivos en <code>\/var<\/code> en una unidad flash, accesible solo como de lectura, pero el montaje superpuesto o enlazado de la ruta desde <code>tmpfs<\/code> en <code>\/var<\/code> al arrancar permitir\u00e1 que las aplicaciones escriban notas en ese espacio. En la pr\u00f3xima activaci\u00f3n, los cambios en <code>\/var<\/code> se perder\u00e1n. El montaje superpuesto crea una uni\u00f3n entre <code>tmpfs<\/code> y el sistema de archivos subyacente y permite hacer cambios aparentes en archivos existentes en <code>ro-tootf<\/code> mientras que el montaje enlazado puede hacer que nuevas carpetas vac\u00edas sean visibles como accesibles para escritura en <code>tmpfs<\/code> rutas. Mientras que <code>ro-rootfs<\/code> overlayfs <code>es el tipo de sistema de archivos correcto, el montaje enlazado se implementa en<\/code> el espacio de nombres VFS<code>Basado en la descripci\u00f3n de los montajes superpuestos y enlazados, nadie se sorprende de que<\/code>los contenedores de Linux <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/Documentation\/filesystems\/sharedsubtree.txt\">los utilicen activamente. Observemos qu\u00e9 sucede cuando usamos<\/a><\/noindex>.<\/p>\n<p>systemd-nspawn <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/os\/docs\/latest\/kernel-modules.html\">para ejecutar un contenedor, usando la herramienta<\/a><\/noindex> mountsnoop <noindex><a rel=\"nofollow\" href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd-nspawn.html\">Llamada<\/a><\/noindex> system-nspawn <code>inicia el contenedor mientras est\u00e1 funcionando<\/code> desde <code>bcc<\/code>.<\/p>\n<p>mountsnoop.py <code>Veamos qu\u00e9 ha resultado:<\/code> durante el 'arranque' del contenedor, muestra que el entorno de ejecuci\u00f3n del contenedor depende en gran medida del montaje enlazado (Solo se muestra el comienzo de la larga salida). <code>proporciona archivos seleccionados en<\/code>.<\/p>\n<p>procfs<\/p>\n<p>Lanzamiento <code>inicia el contenedor mientras est\u00e1 funcionando<\/code> del host al contenedor como rutas en su<\/p>\n<p>Aqu\u00ed <code>Llamada<\/code> . Adem\u00e1s de <code>MS_BIND<\/code> y <code>sysfs<\/code> el flag que establece el montaje enlazado, algunos otros flags en el sistema montado determinan la relaci\u00f3n entre los cambios en el espacio de nombres del host y del contenedor. Por ejemplo, el montaje enlazado puede omitir cambios en <code>rootfs<\/code>en el contenedor, o ocultarlos dependiendo de la llamada. <code>en el contenedor, o ocultarlos dependiendo de la llamada.<\/code> en el contenedor, o ocultarlos dependiendo de la llamada. <code>\/proc<\/code> y <code>\/sys<\/code> en el contenedor, o ocultarlos dependiendo de la llamada. <\/p>\n<p><b>Conclusi\u00f3n<\/b><\/p>\n<p>Comprender el funcionamiento interno de Linux puede parecer una tarea imposible, ya que el n\u00facleo mismo contiene una enorme cantidad de c\u00f3digo, dejando de lado las aplicaciones del espacio de usuario de Linux y las interfaces de llamadas al sistema en bibliotecas en C, como <code>glibc<\/code>. Una de las formas de avanzar es leer el c\u00f3digo fuente de un subsistema del n\u00facleo con un enfoque en entender las llamadas al sistema y los encabezados dirigidos al espacio de usuario, as\u00ed como los principales interfaces internas del n\u00facleo, por ejemplo, la tabla <code>file_operations<\/code>. Las operaciones de archivos garantizan el principio de que \u00abtodo es un archivo\u00bb, por lo que gestionarlas es especialmente satisfactorio. Los archivos fuente del n\u00facleo en C en el directorio de nivel superior <code>fs\/<\/code> representan la implementaci\u00f3n de sistemas de archivos virtuales, que son una capa que proporciona una amplia y relativamente sencilla compatibilidad con sistemas de archivos y dispositivos de almacenamiento populares. El montaje por enlace y la superposici\u00f3n a trav\u00e9s de los espacios de nombres en Linux es la magia del VFS, que permite crear contenedores y sistemas de archivos ra\u00edz de solo lectura. Junto con el estudio del c\u00f3digo fuente, la herramienta del n\u00facleo eBPF y su interfaz <code>bcc<\/code><br \/>\n hacen que investigar el n\u00facleo sea m\u00e1s f\u00e1cil que nunca.<\/p>\n<p>Amigos, \u00bfles result\u00f3 \u00fatil este art\u00edculo? \u00bfTienen alg\u00fan comentario o sugerencia? Aquellos interesados en el curso de \u00abAdministrador de Linux\u00bb est\u00e1n invitados a nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/u5Jw\/\">d\u00eda de puertas abiertas<\/a><\/noindex>, que se llevar\u00e1 a cabo el 18 de abril.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/446614\/\">Primera parte.<\/a><\/noindex><br \/>\n<br \/>Fuente: <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 - 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\/es\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan? Parte 2 | ProHoster","description":"Hola a todos, compartimos con ustedes la segunda parte de la publicaci\u00f3n \"Sistemas de archivos virtuales en Linux: \u00bfpara qu\u00e9 sirven y c\u00f3mo funcionan?\" La primera parte se puede leer","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/31333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31333"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23299"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}