fuse_sistema de archivos en espacio de usuario

3

Click here to load reader

Upload: adrian-alba-cedillo

Post on 30-Jul-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FUSE_Sistema de Archivos en Espacio de Usuario

FUSE es realmente útil para la creación de sistemas de archivos virtuales. A

diferencia de los tradicionales sistemas de archivos, que, en esencia, guardan y

recuperan los datos desde un disco, los sistemas de archivos virtuales en realidad

no almacenan datos propios. Actúan como una visualización o traducción de un

sistema de archivos existente o dispositivo de almacenamiento.

FUSE

Filesystem in Userspace (FUSE, Sistema de archivos en Espacio de usuario) es

un módulo cargable de núcleo para sistemas operativos de computador tipo Unix,

que permite a usuarios no privilegiados crear sus propios sistemas de archivos sin

necesidad de editar el código del núcleo, permite crear sistemas de archivos sin

necesidad de ser root para montarlos

Esto se logra mediante la ejecución del código del sistema de archivos en el

espacio de usuario, mientras que el módulo FUSE sólo proporciona un "puente" a

la interfaz del núcleo real. FUSE fue oficialmente fusionado con la corriente

principal del kernel Linux en la versión 2.6.14.

FUSE fue desarrollado originalmente para apoyar FAV pero desde entonces se

convirtió en un proyecto independiente. Ahora un buen número de proyectos de

algunos otros lo están utilizando. La implementación de un sistema de archivos es

simple, un sistema de ficheros hola mundo está a menos de 100 líneas. He aquí

un ejemplo de sesión:

~ / Fusible / ejemplo $ mkdir / tmp / fusible

~ / Fusible / ejemplo $. / Hola / tmp / fusible

~ / Fusible / ejemplo $ ls-l / tmp / fusible

0 total

-R - r - r - 1 root pie 13 01 de enero 1970 hola

~ / Fusible / ejemplo $ cat / tmp / fusible / hello

Hello World!

~ / Fusible / ejemplo $ fusermount-u / tmp / fusible

~ / Fusible / ejemplo $

Page 2: FUSE_Sistema de Archivos en Espacio de Usuario

Instalación.

Algunos proyectos incluyen el paquete entero FUSE (para una instalación más

sencilla). En otros casos, o simplemente para probar el FUSE ejemplos se debe

instalar primero. La instalación es simple, después de desempaquetar escriba:

>. / Configure

> Hacer

> Make install

Si esto produce un error, por favor siga leyendo.

El script de configuración tratar de adivinar la ubicación de las fuentes del kernel.

En caso de que esto no es correcto puede ser especificado usando la opción -

with-kernel parámetro. Construir el módulo kernel necesita un árbol de fuentes del

núcleo configurado coincide con el núcleo en ejecución. Si usted construye su

propio núcleo esto no es problema. Por otro lado, si un núcleo precompilado se

utiliza, las cabeceras del núcleo utilizados por el proceso de generación de FUSE

primero debe estar preparado. Hay dos posibilidades:

Un paquete contiene las cabeceras del kernel para el kernel binario está

disponible en la distribución (por ejemplo, en Debian es el paquete kernel-headers-

XYZ por-kernel-image XYZ)

La fuente del kernel debe estar preparado:

Extraiga el código fuente del núcleo en un directorio

Copiar configuración del núcleo en ejecución (por lo general se encuentra en /

boot / config-XYZ) a. Config en la parte superior del árbol de código fuente

Ejecute make preparar

Probarlo.

Después de la instalación, usted puede probar los sistemas de archivos en el

directorio de ejemplo. Para ver lo que está sucediendo trate de añadir la opción-d.

Esta es la salida producida al ejecutar cat / tmp / fusible / hola en otro shell:

~ / Fusible / example>. / Hola / tmp / fusible-d

único: 2, código de operación: LOOKUP (1), ino: 1, insize: 26

LOOKUP / hello

Page 3: FUSE_Sistema de Archivos en Espacio de Usuario

INO: 2

único: 2, error: 0 (éxito), tallas grandes: 72

única: 3, código de operación: OPEN (14), ino: 2, insize: 24

única: 3, error: 0 (éxito), tallas grandes: 8

único: insize 2,:: 4, código de operación: LEER (15), 32 ino

LEA 4096 bytes de 0

LEA 4096 bytes

exclusivo: 4, error: 0 (éxito), tallas grandes: 4104

único: 0, código de operación: RELEASE (18), ino: 2, insize: 24

Más operaciones se pueden probar con el sistema de archivos de ejemplo

fusexmp. Esto sólo refleja el directorio raíz de manera similar a mount - bind / /

punto de montaje. Esto no es muy útil en sí mismo, pero se puede utilizar como

plantilla para crear un nuevo sistema de ficheros.

Por defecto, los sistemas de ficheros FUSE ejecutar múltiples subprocesos. Esto

se puede comprobar entrando en el punto de montaje del sistema de archivos

recursivamente en fusexmp. Multi-threaded operación se puede desactivar

mediante la adición de la opción-s.

Algunas opciones se pueden pasar al módulo kernel FUSE y la biblioteca. Ver la

salida de fusexmp-h para ver la lista de estas opciones.

¿Cómo funciona?

La siguiente figura muestra la ruta de una llamada de sistema de archivos (por

ejemplo, estadísticas) en el ejemplo hola mundo de arriba:

El módulo de núcleo y se comunican FUSE FUSE biblioteca a través de un

descriptor de fichero especial que se obtiene mediante la apertura / dev / fusible.

Este archivo se puede abrir varias veces, y el descriptor de fichero obtenido se

pasa a la llamada al sistema mount, para que coincida con el descriptor con el

sistema de archivos montado.