Este tutorial muestra cómo configurar un servidor de almacenamiento independiente en Debian Lenny. En lugar de NFS, usaré GlusterFS aquí. El sistema cliente podrá acceder al almacenamiento como si fuera un sistema de archivos local. GlusterFS es un sistema de archivos en clúster capaz de escalar a varios peta-bytes. Agrega varios bloques de almacenamiento sobre la interconexión Infiniband RDMA o TCP/IP en un gran sistema de archivos de red paralelo. Los bloques de almacenamiento se pueden fabricar con cualquier hardware básico, como servidores x86-64 con SATA-II RAID e Infiniband HBA.
Ambos sistemas deberían poder resolver el nombre de host del otro sistema. Si esto no se puede hacer a través de DNS, debe editar el archivo /etc/hosts para que tenga el siguiente aspecto en ambos sistemas:
127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
192.168.0.101 client1.example.com client1
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts |
(También es posible usar direcciones IP en lugar de nombres de host en la siguiente configuración. Si prefiere usar direcciones IP, no tiene que preocuparse por si los nombres de host se pueden resolver o no).
2 Configuración del servidor GlusterFS
servidor1.ejemplo.com:
GlusterFS no está disponible como paquete Debian para Debian Lenny, por lo tanto, tenemos que construirlo nosotros mismos. Primero instalamos los requisitos previos:
aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev
Luego, descargamos la última versión de GlusterFS de http://www.gluster.org/download.php y la construimos de la siguiente manera:
cd /tmp
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.1.tar.gz
tar xvfz glusterfs-2.0.1.tar .gz
cd glusterfs-2.0.1
./configure --prefix=/usr> /dev/null
server1:/tmp/glusterfs-2.0.1# ./configure --prefix=/usr > /dev/null
GlusterFS configure summary
===========================
FUSE cliente : no
Infiniband verbos : no
epoll IO multiplex : sí
Berkeley-DB :yes
libglusterfsclient : yes
mod_glusterfs : no ()
argp-standalone : no
server1:/tmp/glusterfs-2.0.1#
hacer &&hacer instalar
ldconfig
El comando
glusterfs --version
ahora debería mostrar la versión de GlusterFS que acaba de compilar (2.0.1 en este caso):
server1:/tmp/glusterfs-2.0.1# glusterfs --version
glusterfs 2.0.1 creado el 29 de mayo de 2009 17:23:10
Revisión del repositorio:5c1d9108c1529a1155963cb1911f8870a674ab5b
Copyright (c) 2006 -2009 Z RESEARCH Inc.
GlusterFS viene SIN GARANTÍA EN ABSOLUTO.
Usted puede redistribuir copias de GlusterFS bajo los términos de la Licencia Pública General GNU.
servidor1:/tmp/glusterfs-2.0.1#
A continuación, creamos algunos directorios:
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
mkdir /etc/glusterfs
Ahora creamos el archivo de configuración del servidor GlusterFS /etc/glusterfs/glusterfsd.vol que define qué directorio se exportará (/data/export) y qué cliente puede conectarse (192.168.0.101 =client1.example.com):
vi /etc/glusterfs/glusterfsd.vol
volume posix
type storage/posix
option directory /data/export
end-volume
volume locks
type features/locks
option mandatory-locks on
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow 192.168.0.101 # Edit and add list of allowed clients comma separated IP addrs(names) here
subvolumes brick
end-volume |
Tenga en cuenta que es posible utilizar comodines para las direcciones IP (como 192.168.*) y que puede especificar varias direcciones IP separadas por comas (por ejemplo, 192.168.0.101,192.168.0.102).
Luego creamos los enlaces de inicio del sistema para el script de inicio glusterfsd...
update-rc.d glusterfsd defaults
... e inicie glusterfsd:
/etc/init.d/glusterfsd start
3 Configuración del cliente GlusterFS
cliente1.ejemplo.com:
En el cliente, necesitamos instalar fuse y GlusterFS. En lugar de instalar el paquete libfuse2 desde el repositorio de Debian, instalamos una versión parcheada con mejor soporte para GlusterFS.
Primero volvemos a instalar los prerrequisitos:
aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev
Luego construimos fuse de la siguiente manera (puede encontrar la última versión de fuse parcheada en ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/):
cd /tmp
wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
tar -zxvf fuse-2.7.4glfs11.tar. gz
cd fuse-2.7.4glfs11
./configure
hacer &&hacer instalar
Luego construimos GlusterFS (igual que en el servidor)...
cd /tmp
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.1.tar.gz
tar xvfz glusterfs-2.0.1.tar .gz
cd glusterfs-2.0.1
./configure --prefix=/usr> /dev/null
hacer &&hacer instalar
ldconfig
glusterfs --version
... y crea los siguientes dos directorios:
mkdir /mnt/glusterfs
mkdir /etc/glusterfs
A continuación creamos el archivo /etc/glusterfs/glusterfs.vol:
vi /etc/glusterfs/glusterfs.vol
volume remote
type protocol/client
option transport-type tcp
option remote-host server1.example.com # can be IP or hostname
option remote-subvolume brick
end-volume
volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes remote
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume |
¡Asegúrese de utilizar el nombre de host del servidor o la dirección IP correctos en la opción de línea de host remoto!
¡Eso es todo! Ahora podemos montar el sistema de archivos GlusterFS en /mnt/glusterfs con uno de los siguientes dos comandos:
glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
o
mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
Ahora debería ver el nuevo recurso compartido en los resultados de...
mount
cliente1:~# montar
/dev/mapper/vg0-root en / escribir ext3 (rw,errors=remount-ro)
tmpfs en /lib/init/rw escribir tmpfs (rw,nosuid,modo =0755)
proc en /proc tipo proc (rw,noexec,nosuid,nodev)
sysfs en /sys tipo sysfs (rw,noexec,nosuid,nodev)
udev en /dev tipo tmpfs (rw,mode=0755)
tmpfs en /dev/shm escriba tmpfs (rw,nosuid,nodev)
devpts en /dev/pts escriba devpts (rw,noexec,nosuid,gid=5, mode=620)
/dev/sda1 en /boot type ext3 (rw)
fusectl en /sys/fs/fuse/connections type fusectl (rw)
/etc/glusterfs/glusterfs. vol en /mnt/glusterfs escriba fuse.glusterfs (rw,max_read=131072,allow_other,default_permissions)
cliente1:~#
... y...
df -h
cliente1:~# df -h
Sistema de archivos Tamaño Utilizado Avail Use% Montado en
/dev/mapper/vg0-root 19G 812M 17G 5 % /
tmpfs 253M 253M 253M init/rw
udev 10m 80k 10m 1%/dev
tmpfs 253m 0 253m 0%/dev/shm
/dev/sda1 471m 20m 427m 5%/arranque
/etc /glusterfs/glusterfs.vol
29G 811M 27G 3 % /mnt/glusterfs
cliente1:~#
En lugar de montar el recurso compartido GlusterFS manualmente en el cliente, puede modificar /etc/fstab para que el recurso compartido se monte automáticamente cuando se inicie el cliente.
Abra /etc/fstab y agregue la siguiente línea:
vi /etc/fstab
[...]
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0 |
Para probar si su /etc/fstab modificado está funcionando, reinicie el cliente:
reboot
Después del reinicio, debería encontrar el recurso compartido en las salidas de...
df -h
... y...
mount
4 Enlaces
- GlusterFS:http://www.gluster.org/
- Debian:http://www.debian.org/