Copyright
©
2009 Juan Andrés Ghigliazza.
Se concede permiso para copiar,
distribuir y/o modificar este documento bajo los términos de la
Licencia de Documentación Libre de GNU,
Versión 1.3 o cualquier otra versión posterior publicada por la
Free Software Foundation; sin Secciones Invariantes ni Textos de
Cubierta Delantera ni Textos de Cubierta Trasera.
Una copia de la
licencia se puede ver aquí.
1 Introducción
AoE (Ata over ethernet) es un protocolo de red que nos permite compartir discos ATA mediante redes ethernet. Este documento no explica en detalle el protocolo, sino que solamente explica como configurarlo en algunas distribuciones de GNU/Linux mediante un ejemplo.
1.1 Ejemplo
Se cuenta con dos hosts. En uno de ellos, llamado host-a, se necesita más espacio de almacenamiento pero no se pueden instalar más discos locales. En el otro, llamado host-b, si se pueden instalar nuevos discos locales. La idea es que se instale un nuevo disco local en host-b, y se lo exporte mediante el protocolo AoE para que host-a lo pueda usar.
El OS de host-b es Debian lenny, y el de host-a CentOS 4. El nuevo disco en host-b a exportar mediante AoE es /dev/hda1.
2 Configuración del servidor (host-b)
Chequear que el kernel soporte AoE. El kernel de Debian lenny si lo soporta, por lo tanto no habría que hacer nada. Si se está usando otra versión o distribución, habría que ver la forma de hacerlo; se puede tomar como referencia el siguiente artículo: http://www.debian-administration.org/articles/553.
Instalar los paquetes vblade y vblade-persist.
Exportar el disco mediante AoE, con el comando vblade-persist. Hay que ejecutar el comando 3 veces:
La primera para configurar el dispositivo exportado. Los dos números que aparecen luego de setup son los identificadores del disco exportado; el primero es el shelf (o major) y el segundo es el slot (o minor). El siguiente parámetro es la interfase de red por cual exportarlo, y el último el dispositivo de bloques a exportar.
vblade-persist setup 0 0 eth0 /dev/hda
La segunda para hacer que se exporte automáticamente en el booteo:
vblade-persist auto 0 0
Y la última para arrancarlo:
vblade-persist start 0 0
A partir de este momento, el disco debería estar exportado, y se debería poder ver desde otro host conectado al mismo switch ethernet2. Se puede comprobar si se está viendo desde otro host, con el comando aoe-stat, y es un buen momento para hacerlo.
3 Configuración del cliente (host-a)
Lamentablemente, en CentOS 4 no existe soporte para AoE; esto implica que hay que compilar un módulo para el kernel. En esta sección se describen los procedimientos de compilación y de configuración de este módulo.
3.1 Compilación del módulo aoe
El procedimiento para compilar e instalar el módulo aoe es el siguiente:
Instalar con yum los paquetes kernel-devel, make y gcc.
Bajar la última versión del módulo AoE desde http://support.coraid.com/support/linux/ y extraer su contenido a un directorio temporal.
Dentro del directorio temporal, se creará un nuevo directorio con los fuentes del módulo. El nombre de este depende de la versión; por ejemplo, si la versión fuera la 6.72, el nombre sería aoe6-72. Estando en este directorio ejecutar make.
Luego, desde el mismo lugar y con el usuario root, ejecutar make install.
3.2 Configuraciones para el módulo aoe
Las reglas udev para el módulo aoe (las cuales crean dispositivos que permiten usar comandos como aoe-discover y aoe-flush), tienen una sintaxis más nueva que la que se usa en CentOS 4. Para que funcionen entonces, hay que modificar el archivo /etc/udev/rules.d/60-aoe.rules cambiando las líneas debajo de "aoe char devices", para que queden como sigue:
# aoe char devices SYSFS{dev}="152:*", KERNEL="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" SYSFS{dev}="152:*", KERNEL="err", NAME="etherd/%k", GROUP="disk", MODE="0440" SYSFS{dev}="152:*", KERNEL="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" SYSFS{dev}="152:*", KERNEL="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" SYSFS{dev}="152:*", KERNEL="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" # aoe block devices KERNEL="etherd*", NAME="%k", GROUP="disk"
Hacer que el módulo aoe se cargue durante el booteo. Una de las formas de hacerlo, es agregar la línea modprobe aoe en el archivo /etc/rc.local.
Luego, reiniciar host-a y ejecutar aoe-stat. Si todo está bien configurado, debería aparecer algo como:
e0.0 10.248GB eth0 1024 up
A partir de aquí, desde host-a se ve el dispositivo exportado mediante AoE por host-b, y este es /dev/etherd/e0.0. Al mismo se lo puede usar como cualquier otro dispositivo de bloques, o sea que se le puede construir un sistema de archivos, o crear particiones, o incluso formar un RAID junto con algún otro dispositivo.
1En realidad, lo que se exporta mediante AoE es cualquier dispositivo de bloques. Esto implica que no tendría que ser un disco entero, sino que podría ser una partición.
2El disco exportado no se puede ver desde un host que no este conectado al mismo switch ethernet, ya que AoE es un protocolo que funciona sobre ethernet y no sobre TCP/IP. Esto implica que los paquetes no son ruteables.