Parallel Virtual File System (PVFS) Introducción: El sistema de archivos paralelo Parallel Virtual File System, permite a las distintas aplicaciones (paralelas y seriales) almacenar data en servidores de discos distribuidos en red. El éxito del PVFS consiste en el alto rendimiento que este posee al escribir archivos de gran tamaño. Como funciona PVFS Para entender el funcionamiento del sistema PVFS se debe comenzar por entender cuales son los diferentes roles que puede desempeñar una estación dentro del sistema. Estos roles son: Servidor de Meta datos Servidor de I/O Clientes Es importante resaltar que una estación puede jugar uno o todos los roles, teniendo presente que en el sistema solo debe existir solamente un servidor de meta datos. La siguiente figura ilustra la estructura del sistema PVFS. El servidor meta datos esta representado como el nodo head, los nodos I/O están representados como los nodos n1 hasta el n8.
Servidor de Meta Datos Aquí se mantiene la información de los archivos y directorios que están almacenados en el sistema PVFS, tal como permisos, dueños, localización de la data. Los clientes contactan al servidor de meta datos para realizar cualquier operación sobre la data, como por ejemplo: Copiar, eliminar, mover, abrir o cerrar archivos, leer directorios. Servidores I/O Es en estos servidores donde se almacena la data, puede existir varios de estos se y por supuesto, el espacio total de escritura del sistema lo da la suma de todos los espacios proporcionados por cada uno de los servidores I/O. Clientes Son los usuarios del sistema PVFS. Aplicaciones que acceden a los directorios y archivos contenidos dentro del sistema PVFS. Funcionamiento Los clientes se comunican a través de la red con el servidor de meta datos y con los servidores de discos para realizar cualquier operación sobre el sistema, ya sea de lectura o de escritura. La siguiente figura ilustra lo antes descrito.
Construcción de los componentes del PVFS Descarga de los archivos fuentes Se descarga los Fuentes desde la siguiente dirección URL: http://www.parl.clemson.edu/pvfs/, estos son pvfs- versión y pvfs-kernel- versión. La versión del pvfs y la versión del pvfs-kernel no tienen que ser explícitamente iguales. Descompresión de los archivos Se descomprime y se desempaqueta Se hace un enlace simbolico a pvfs- versión. o Ejemplo ln s pvfs-1.6.0 pvfs Compilación del PVFS- VERSION Se cambia al directorio pvfs y se ejecuta la siguiente sintaxis. o./configure enalbe-lfs La opción enable-lfs permite la escritura de archivos de tamaños mayores a 2 Gb aproximadamente. Se compila ejecutando la siguiente sintanxis. o make Se instala ejecutando la siguiente sintaxis. o make install Compilación del PVFS-KERNEL- VERSION Se cambia al directorio pvfs-kernel- versión Se ejecuta la siguente sintaxis o./configure with-libpvfs-dir=../pvfs/lib La opción with-libpvfs-dir es para incluir las librerias del pvfs en la compilacion del modulo Se compila ejecutando la siguiente sintaxis. o make Se instala ejecutando la siguiente sintaxis o make install Se copia el archivo mount.pvfs al directorio /sbin
Se copia el modulo para el kernel pvfs.o al directorio /lib/modules/ versión /kernel/drivers /net Configuración del PVFS en el nodo metadata-server Se elige cual será el directorio donde residirán los meta datos. En nuestro caso será el directorio /pvfs-meta-data. Este directorio debe estar en una partición que tenga en suficiente espacio libre para almacenar dichos datos, no tiene que ser necesariamente una partición para este proposito. Se cambia al directorio /pvfs-metad-data y se ejecuta la siguiente sintaxis o mkmgrconf se contestan la siguientes preguntas. Este comando crea los archivos.iodtab que contiene la información concerniente a la lista de las direcciones IP y puertos de por el cual los demonios iod escuchan y.pvfsdir el cual contiene los permisos y el directorio en donde se almacenara la metadata. Enter the root directory (metadata directory): /pvfs-meta-data Enter the user id of directory: root Enter the group id of directory: root Enter the mode of the root directory: 777 Enter the hostname that will run the manager: localhost Enter the port number on the host for manager: (Port number 3000 is the default): 3000 Enter the I/O nodes: (can use form node1, node2,... or nodename{#-#,#,#}): nodo1, nodo2, nodo3, nodo4 Enter the port number for the iods: (Port number 7000 is the default): 7000 configuración de los servidores de disco (IO servers) Se elige la partición la cual va a almacenar los datos, dicha partición debe poseer espacio libre considerable, en nuestro caso esta partición tiene punto de montaje /pvfs-data Los permisos y dueños de este directorio: o Dueño nobody o Grupo nobody o Perimos 700 Si los nodos io servers son de diferente arquitectura a el nodo metadata server, se debe compilar e instalar el paquete bajo esta arquitectura, siguiendo los pasos antes descritos para la compilación del mismo. Una vez instalado el paque se configura el archivo iod.conf, este archivo va en el directorio /etc. El contenido de este archivo es: o datadir /pvfs-data o user nobody o group nobody
Configuración de los clientes Se crea el directorio (punto de montaje) /pvfs o mkdir /pvfs Se crea el siguiente dispositivo dispositivo o mknod /dev/pvfsd c 60 0 Se crea el siguente archivo en el directorio /etc/pvfstab y su contenido es el sigueinte o head:/pvfs-meta-data /pvfs pvfs port=3000 0 0 Inicio y detención de los demonios en los ioservers Se inicia el servicio ejecutando la siguiente sintaxis o /usr/local/sbin/iod Se detiene el servicio ejecutando la siguiente sintaxis o Killall iod Inicio y detención de los demonios en el metadaserver Se inicia el servicio ejecutando la siguiente sintaxis o /usr/local/sbin/mgr Se inicia detiene el servicio ejecutando la siguiente sintaxis o Killall mgr Inicio de los clientes Cargar el modulo del pvfs o Insmod pvfs.o Se ejecuta la siguiente sintaxis o /usr/local/sbin/pvfsd Se monta el directorio desde el servidor de metadatos con la siguiente sintaxis o mount.pvfs head:/pvfs-meta /pvfs Para desmontar el directorio se hace con la sigueinte sintaxis o Umount /pvfs
Test del espacio disponible en el client Cambice al directorio /pvfs y ejecute la sigeuinte sintaxis o df -h /pvfs Para comprobar que se puede escribir archivos de grandes tamaños en la partición ejecute la siguiente sintaxis o dd if=/dev/zero of=/pvfs/test bs=1m count=10000 Herramientas de utilidad Como hacer ping directamente a loa servidores de disco (ioservers) o /usr/local/bin/iod-ping h nodo1 p 7000 Como hacer ping directamente a el servidor de metadatos. o /usr/local/sbin/mgr-ping h head p 3000