Un sistema de archivos virtual (VFS) o conmutador de sistema de archivos virtual es una capa de abstracción encima de un sistema de archivos más concreto. El propósito de un VFS es permitir que las aplicaciones cliente tengan acceso a diversos tipos de sistemas de archivos concretos de una manera uniforme. Puede ser utilizada para tender un puente sobre las diferencias en los sistemas de archivos de Windows, de Mac OS y Unix, de modo que las aplicaciones pudieran tener acceso a archivos en los sistemas de archivos locales de esos tipos sin tener que saber a qué tipo de sistema de archivos están teniendo acceso.
Un VFS especifica una interfaz (o un contrato) entre el núcleo y un sistema de archivos en concreto. Por lo tanto, es fácil agregar nuevos sistemas de archivos al núcleo simplemente satisfaciendo el contrato. Los términos del contrato pueden volverse incompatibles de una versión a otra, lo que requeriría que sistemas de archivos concretos fuesen recompilados, y posiblemente modificados antes de la recompilación, para permitirles trabajar con un nuevo lanzamiento del sistema operativo; o el proveedor del sistema operativo pueda realizar solamente cambios retrocompatibles al contrato, de modo que un sistema de archivos concreto construido para un lanzamiento dado del sistema operativo trabaje con las versiones futuras del mismo sistema operativo.
Implementaciones
Uno de los primeros mecanismos virtuales del sistema de archivos dentro de los sistemas Unix-like fue introducido por Sun Microsystems en SunOS 2.0 en 1985. Este permitió que las llamadas del sistema UNIX tuvieran acceso a sistemas de archivos locales de UFS y a sistemas de archivos remotos NFS transparentemente. Por esta razón, los vendedores de UNIX que licenciaron el código del NFS de Sun copiaron a menudo el diseño de VFS del mismo Sun. Otros sistemas de archivos se podían acoplar en él también: había una implementación del sistema de archivos de FAT del MS-DOS desarrollado en Sun que se acopló en SunOS VFS, aunque no fue empaquetado como producto hasta SunOS 4.1. La implementación de SunOS era la base del mecanismo de VFS en el System V Release 4.
John Heidemann desarrolló un VFS que bajo SunOS 4.0 para el sistema de archivos experimental Ficus file system. Este diseño proporcionado para la reutilización del código entre tipos de sistemas de archivos con semánticas diferenciadas pero similares (e.g., un sistema de archivos encriptante podría reutilizar todo el código de nombramiento y de almacenamiento de un sistema de archivos no encriptante). Heidemann adaptó este trabajo para el uso en 4.4BSD como parte de su investigación de tesis; los descendientes de este código sostienen las implementaciones del sistema de archivos en derivados modernos de BSD incluyendo Mac OS X.
Otros mecanismos de sistema de archivos virtual en sistemas tipo UNIX incluyen el Interruptor de Sistema de Archivos en System V Release 3, el Sistema de Archivos Genérico en Ultrix, y el VFS en GNU/Linux. En OS/2 y Microsoft Windows, el mecanismo de sistema de archivos virtual se llama Sistema de Archivos Instalable.
El mecanismo del sistema de archivos en espacio de usuario (FUSE (Linux)) permite que el código de espacio de usuario se acople en el mecanismo del sistema de archivos virtual en GNU/Linux, FreeBSD, de OpenSolaris, y Mac OS X.
En Microsoft Windows, los sistemas de archivos virtuales pueden también implementarse a través de las extensiones de consola de nombre de usuario en espacio de usuario, sin embargo, no soportan las interfaces de programación de aplicaciones del sistema de más bajo nivel de acceso de archivos, de modo que no todas las aplicaciones serán capaces de acceder sistemas de archivos que se hayan implementado como extensiones de nombre de usuario.
KIO y el GNOME VFS proveen de mecanismos similares en los entornos de escritorio de KDE y de GNOME, con limitaciones similares, aunque pueden ser hechos para utilizar técnicas FUSE y por lo tanto integrarse suavemente en el sistema.
Sistemas de archivos virtuales de un solo archivo
Se ponen en ejecución algunos sistemas de archivos virtuales de una manera tal que la ilusión de un sistema de archivos pueda ser creada usando el acceso a un solo archivo en el sistema de archivos subyacente. La ventaja primaria a este tipo de implementación es que es centralizado y fácil quitar. Un sistema de archivos virtual del solo-archivo puede incluir todas las características básicas esperadas de cualquier sistema de archivos (virtual o de otra manera), pero el acceso a la estructura interna de estos sistemas de archivos se limita a menudo a los programas escritos específicamente para hacer uso el sistema de archivos virtual del archivo-único (en vez de la implementación a través de un driver permitiendo el acceso universal). Otra desventaja importante es que el funcionamiento es relativamente bajo cuando está comparado a otros sistemas de archivos virtuales. De resultado inferior es sobre todo debido al coste de mezclar archivos virtuales cuando los datos se escriben o se suprimen del sistema de archivos virtual.
Referencias
- Put virtual filesystems to work
- Vnodes: An Architecture for Multiple File System Types in Sun UNIX
- The Linux Virtual File-system Layer
- Linux kernel's Virtual File System
- The Linux VFS, Chapter 4 of Linux File Systems by Moshe Bar (McGraw-Hill, 2001). ISBN 0-07-212955-7
- Chapter 12 of Understanding the Linux Kernel by Daniel P. Bovet, Marco Cesati (O'Reilly Media, 2005). ISBN 0-596-00565-2
Véase también
- 9P - Sistema de ficheros distribuido que enlaza directamente a la capa VFS del Plan 9 de los laboratorios Bell haciendo transparente todos los accesos remotos al sistema de ficheros.
- Gnome VFS
- FUSE (Linux y Kurisu OS)
- Sistema de Ficheros Instalable, una API para sistema de ficheros para IBM OS/2 y Microsoft Windows NT.
- Sistema de Archivos Virtual Toronto, un VFS para OS/2 diseñado por IBM Toronto que permite montar diversos sistemas de ficheros bajo una estructura común.
- GmailFS - sistema de archivos que utiliza Gmail como método de almacenamiento
Enlaces externos
- Workflux.net Archivado el 9 de julio de 2008 en Wayback Machine. Solución empresarial de administración de archivos y proyectos en línea. En Español.
- AVFS - Un Sistema de Archivos Virtual para montar archivos comprimidos o remotos.
- fs-driver Controlador de sistema de ficheros ext3 para Microsoft Windows.
- GMail Drive Controlador para usar GMail como un disco duro virtuales
/google%2Dhacks/gmail%2Dfilesystem/gmail%2Dfilesystem.html Sistema de ficheros GMail para Linux], basado en FUSE (Linux).
- FUSE - Filesystem in Userspace - sistema de ficheros virtual para Linux.
- LUFS - Linux Userland FileSystem - sistema de archivos virtual con soporte para localfs, sshfs , ftpfs, gnutellafs, locasefs, gvfs, cardfs, cefs y más.
- Commons VFS - sistema de archivos virtual para Java, con soporte para Cifs, ftp, http, Zip (file format), Tar (file format), gzip, bzip2, y más.
- MillScript VFS - sistema de archivos virtual para Java, influenciado por el subsistema KIO en KDE, trabajo de Steve Leach sobre un VFS en JSpice y para Apache Commons VFS.
- KIO - (KDE IO) - un sistema de manejo de archivos con soporte para red.
- flipcode - Programando un Sistema de Archivos Virtual