Articulo de referencia

Sistema de archivos virtual

Un sistema de archivos virtual ( VFS ) o conmutador de sistema de archivos virtual es una capa abstracta que se superpone a un sistema de archivos más concreto . Su propósito es...

Un sistema de archivos virtual ( VFS ) o conmutador de sistema de archivos virtual es una capa abstracta que se superpone a un sistema de archivos más concreto . Su propósito es permitir que las aplicaciones cliente accedan a diferentes tipos de sistemas de archivos concretos de forma uniforme. Un VFS puede, por ejemplo, utilizarse para acceder a dispositivos de almacenamiento locales y de red de forma transparente, sin que la aplicación cliente note la diferencia. También puede utilizarse para salvar las diferencias entre los sistemas de archivos de Windows , macOS clásico y Unix , de modo que las aplicaciones puedan acceder a archivos en sistemas de archivos locales de esos tipos sin necesidad de saber a qué tipo de sistema de archivos están accediendo.

Un VFS especifica una interfaz (o un "contrato") entre el núcleo y un sistema de archivos concreto. Por lo tanto, es fácil añadir compatibilidad con nuevos tipos de sistemas de archivos al núcleo simplemente cumpliendo dicho contrato. Los términos del contrato podrían cambiar de forma incompatible entre versiones, lo que requeriría recompilar la compatibilidad con el sistema de archivos concreto, y posiblemente modificarla antes de la recompilación, para que funcione con una nueva versión del sistema operativo; o bien, el proveedor del sistema operativo podría realizar únicamente cambios retrocompatibles en el contrato, de modo que la compatibilidad con el sistema de archivos concreto creada para una versión determinada del sistema operativo funcione con versiones futuras.

Implementaciones

La posición de la capa VFS dentro de varias partes de la pila de almacenamiento del kernel de Linux . [ 1 ]

Uno de los primeros mecanismos de sistema de archivos virtual en sistemas tipo Unix fue introducido por Sun Microsystems en SunOS 2.0 en 1985. [ 2 ] Permitía que las llamadas al sistema Unix accedieran a sistemas de archivos UFS locales y sistemas de archivos NFS remotos de forma transparente. Por esta razón, los proveedores de Unix que licenciaban el código NFS de Sun a menudo copiaban el diseño del VFS de Sun. También se podían conectar otros sistemas de archivos: existía una implementación del sistema de archivos FAT de MS-DOS desarrollada en Sun que se conectaba al VFS de SunOS, aunque no se lanzó como producto hasta SunOS 4.1. La implementación de SunOS fue la base del mecanismo VFS en System V Release 4 .

John Heidemann desarrolló un sistema de archivos virtual (VFS) apilable en SunOS 4.0 para el sistema de archivos experimental Ficus . Este diseño permitía la reutilización de código entre diferentes tipos de sistemas de archivos con semántica similar pero distinta ( por ejemplo , un sistema de archivos con cifrado podía reutilizar todo el código de nomenclatura y gestión de almacenamiento de un sistema de archivos sin cifrado). Heidemann adaptó este trabajo para su uso en 4.4BSD como parte de su investigación de tesis ; los derivados de este código son la base de las implementaciones de sistemas de archivos en los derivados modernos de BSD, incluido macOS .

Otros sistemas de archivos virtuales de Unix incluyen el File System Switch en System V Release 3 , el Generic File System en Ultrix y el VFS en Linux . En OS/2 y Microsoft Windows , el mecanismo del sistema de archivos virtual se denomina Installable File System .

El mecanismo Filesystem in Userspace (FUSE) permite que el código de espacio de usuario se integre en el mecanismo de sistema de archivos virtual en Linux, NetBSD , FreeBSD , OpenSolaris y macOS.

En Microsoft Windows, los sistemas de archivos virtuales también se pueden implementar mediante extensiones de espacio de nombres de shell de espacio de usuario; sin embargo, no son compatibles con las interfaces de programación de aplicaciones (API) de acceso al sistema de archivos de nivel más bajo en Windows, por lo que no todas las aplicaciones podrán acceder a los sistemas de archivos implementados como extensiones de espacio de nombres. KIO y GVfs / GIO proporcionan mecanismos similares en los entornos de escritorio KDE y GNOME (respectivamente), con limitaciones similares, aunque se pueden configurar para usar técnicas FUSE y, por lo tanto, integrarse sin problemas en el sistema.

Sistemas de archivos virtuales de archivo único

A veces, el término Sistema de Archivos Virtual se refiere a un archivo o un grupo de archivos (no necesariamente dentro de un sistema de archivos físico) que actúa como un contenedor gestionable que proporciona la funcionalidad de un sistema de archivos físico mediante el uso de software. Ejemplos de dichos contenedores son CBFS Connect de Callback Technologies o un sistema de archivos virtual de un solo archivo en un emulador como PCTask o WinUAE , VirtualBox de Oracle , Virtual PC de Microsoft o VMware .

La principal ventaja de este tipo de sistema de archivos es su centralización y facilidad de eliminación. Un sistema de archivos virtual de un solo archivo puede incluir todas las características básicas esperadas de cualquier sistema de archivos (virtual o físico), pero el acceso a su estructura interna suele estar limitado a programas diseñados específicamente para su uso (en lugar de implementarse mediante un controlador que permita el acceso universal). Otra desventaja importante es su rendimiento relativamente bajo en comparación con otros sistemas de archivos virtuales. Este bajo rendimiento se debe principalmente al coste de reorganizar los archivos virtuales al escribir o eliminar datos del sistema.

Implementación de sistemas de archivos virtuales de archivo único

Ejemplos directos de sistemas de archivos virtuales de un solo archivo incluyen emuladores como PCTask y WinUAE, que encapsulan no solo los datos del sistema de archivos, sino también la disposición del disco emulado. Esto facilita el manejo de una instalación del sistema operativo como cualquier otro software, transfiriéndola mediante medios extraíbles o a través de la red.

Tarea de PC

El emulador de Amiga, PCTask, emulaba una máquina basada en un procesador Intel PC 8088 con una frecuencia de reloj de 4,77 MHz (y posteriormente un 80486 SX con una frecuencia de reloj de 25  MHz). Los usuarios de PCTask podían crear un archivo de gran tamaño en el sistema de archivos de Amiga, y este archivo se accedía virtualmente desde el emulador como si fuera un disco duro de PC real. El archivo podía formatearse con el sistema de archivos FAT16 para almacenar archivos normales de MS-DOS o Windows. [1] [2]

WinUAE

El UAE para Windows , WinUAE , permite que los archivos grandes individuales en Windows se traten como sistemas de archivos de Amiga. En WinUAE, este archivo se denomina archivo duro . [3]

UAE también podría tratar un directorio en el sistema de archivos del host ( Windows , Linux , macOS , AmigaOS ) como un sistema de archivos de Amiga. [4]

Véase también

  • 9P (protocolo) : un protocolo de sistema de archivos distribuido que se asigna directamente a la capa VFS de Plan 9, lo que hace que todo el acceso al sistema de archivos sea transparente a la red.  
  • Sistema de archivos sintético : una interfaz jerárquica para objetos que no son archivos y que aparecen como si fueran archivos regulares en el árbol de un sistema de archivos basado en disco. 

Notas

  1. ^ Emulación en Amiga.Comparación entre PCX y PCTask, emuladores de PC para Amiga.
  2. ^ Véase tambiéneste artículoque explica cómo funciona PCTask.
  3. ^ Ayuda sobre WinUAE(Consulte la sección Archivo duro).
  4. ^ Ayuda sobre WinUAE(Consulte la sección Agregar directorio)

Referencias

  1. Werner Fischer; Georg Schönberger (1 de junio de 2015). "Diagrama de pila de almacenamiento de Linux" . Thomas-Krenn.AG . Consultado el 8 de junio de 2015 .
  2. Kleiman, Steve R. (junio de 1986). "Vnodes: una arquitectura para múltiples tipos de sistemas de archivos en Sun UNIX" (PDF) . USENIX Verano . 86 : 238–247 . Archivado del original (PDF) el 29 de junio de 2014. Recuperado el 31 de diciembre de 2016 .
  • Sistema de archivos virtual del kernel de Linux archivado el 5 de marzo de 2005 en Wayback Machine.
  • Rodríguez, R.; M. Koehler; R. Hyde (junio de 1986). "El sistema de archivos genérico". Actas de la Conferencia Técnica de Verano de USENIX . Atlanta, Georgia: Asociación USENIX . págs. 260–269 . 
  • Karels, M.; MK McKusick (septiembre de 1986). "Hacia una interfaz de sistema de archivos compatible". Actas de la reunión del Grupo Europeo de Usuarios de UNIX . Manchester, Inglaterra: EUUG . págs. 481–496 . 
  • Heidemann, John (1995). Diseño apilable de sistemas de archivos (Informe técnico). UCLA . CSD-950032.
  • El VFS de Linux , Capítulo 4 de Sistemas de archivos de Linux por Moshe Bar ( McGraw-Hill , 2001). ISBN 0-07-212955-7
  • Capítulo 12 de Comprender el núcleo de Linux, de Daniel P. Bovet y Marco Cesati ( O'Reilly Media , 2005). ISBN 0-596-00565-2
  • El modelo VFS de Linux: Estructura de nombres
  • Anatomía del conmutador del sistema de archivos virtual de Linux