GNU/Linux >> Tutoriales Linux >  >> Debian

Configurar ATA sobre Ethernet (AoE) en Debian 8 (iniciador y destino)

Este tutorial le muestra cómo configurar un cliente AoE (iniciador) y un servidor (objetivo) en Debian 8/Jessie). El término AoE significa "ATA sobre Ethernet", que es un protocolo de red de área de almacenamiento (SAN) que permite a los clientes de AoE utilizar dispositivos de almacenamiento en el servidor AoE (remoto) a través de una red Ethernet normal. "Remoto" en este caso significa "dentro de la misma LAN" porque AoE no se puede enrutar fuera de una LAN (esta es una gran diferencia en comparación con iSCSI). Para el cliente AoE (iniciador), el almacenamiento remoto parece un disco duro normal conectado localmente.

1 nota preliminar

Estoy usando dos servidores Debian 8 aquí:

  • servidor1.ejemplo.com (Iniciador):dirección IP 192.168.1.100
  • servidor2.ejemplo.com (Objetivo):dirección IP 192.168.1.101

2 Cargue el módulo AoE Kernel en ambos sistemas

servidor1/servidor2:

Como primer paso, debemos asegurarnos de que el Kernel de nuestros servidores sea compatible con ATA Over Ethernet. Ejecute el siguiente comando como usuario root.

grep ATA_OVER /boot/config-`uname -r`

Esto debería mostrar algo como esto:

[email protected]:/tmp# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
[email protected]:/tmp#

Esto significa que AoE se incorporó como un módulo del núcleo. Ahora comprobaremos si el módulo está cargado:

lsmod | grep aoe

Si no obtiene nada de vuelta, significa que no está cargado. En este caso, podemos cargarlo de la siguiente manera:

modprobe aoe

Verifiquemos nuevamente si el módulo está cargado:

lsmod | grep aoe
[email protected]:/tmp# lsmod | grep aoe
aoe 51917 0
[email protected]:/tmp#

Para que el módulo se cargue automáticamente cuando se inicia el sistema, agregamos el módulo aoe a /etc/modules:

nano /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

aoe

3 Configuración del destino (servidor2)

servidor2:

Primero, configuramos el objetivo AoE (servidor2):

apt-get install vblade

Podemos utilizar volúmenes lógicos no utilizados, archivos de imagen, discos duros (p. ej., /dev/sdb), particiones de disco duro (p. ej., /dev/sdb1) o dispositivos RAID (p. ej., /dev/md0) para el almacenamiento. En este ejemplo, usaré un archivo de imagen de 20 GB que se almacena en la carpeta /storage.

mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000

Esto crea el archivo de imagen /storage/storage1.img con un tamaño de 20 GB.

Si desea utilizar un volumen lógico en su lugar, puede crear uno con un tamaño de 20 GB llamado almacenamiento1 en el grupo de volúmenes vg0 como este:

lvcreate -L20G -n storage1 vg0

Ahora exportamos nuestro dispositivo de almacenamiento de la siguiente manera:

vbladed 0 1 eth0 /storage/storage1.img

El primer número (0) es el número de estante (mayor), el segundo (1) el número de ranura (menor), cambia estos números a tu gusto. Cada dispositivo AoE se identifica mediante un par mayor/menor que debe ser único (si está exportando varios dispositivos), con mayor entre 0 y 65535 y menor entre 0 y 255. La parte eth0 le dice a vbladed qué dispositivo ethernet usar (si su dispositivo ethernet es eth1, entonces use eth1; puede conocer sus dispositivos ethernet ejecutando

ifconfig

).

Para iniciar la exportación automáticamente siempre que inicie el destino, abra /etc/rc.local...

nano /etc/rc.local

... y agregue la siguiente línea (antes de la línea de salida 0):

[...]
/usr/sbin/vbladed 0 1 eth0 /storage/storage1.img
[...]

4 Configuración del cliente/iniciador AoE (servidor1)

servidor1:

En server1, instalamos el iniciador:

apt-get install aoetools

Ahora comprobamos qué dispositivos de almacenamiento AoE están disponibles:

aoe-discover

No se preocupe, el comando no mostrará ningún resultado. El comando:

aoe-stat

ahora debería mostrar los dispositivos de almacenamiento:

[email protected]:/tmp# aoe-stat
e0.1 20.971GB eth0 1024 up
[email protected]:/tmp#

En este punto, tenemos un nuevo dispositivo de bloque disponible en la caja del cliente llamado /dev/etherd/e0.1. Si echamos un vistazo al árbol /dev, aparece un nuevo nodo:

ls -la /dev/etherd/
[email protected]:/tmp# ls -la /dev/etherd/
total 0
drwxr-xr-x 2 root root 160 Mar 22 08:46 .
drwxr-xr-x 19 root root 3160 Mar 22 08:34 ..
c-w--w---- 1 root disk 152, 3 Mar 22 08:34 discover
brw-rw---- 1 root disk 152, 0 Mar 22 08:46 e0.1
cr--r----- 1 root disk 152, 2 Mar 22 08:34 err
c-w--w---- 1 root disk 152, 6 Mar 22 08:34 flush
c-w--w---- 1 root disk 152, 4 Mar 22 08:34 interfaces
c-w--w---- 1 root disk 152, 5 Mar 22 08:34 revalidate
[email protected]:/tmp#

Para usar ese dispositivo /dev/etherd/e0.1, debemos formatearlo:

fdisk /dev/etherd/e0.1
[email protected]:/tmp# fdisk /dev/etherd/e0.1
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x2922f0be.
Command (m for help): <-- n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): <-- p
Partition number (1-4, default 1): <-- 1
First sector (2048-40959999, default 2048): <-- ENTER
Last sector, +sectors or +size{K,M,G,T,P} (2048-40959999, default 40959999): <-- ENTER
Created a new partition 1 of type 'Linux' and of size 19.5 GiB.
Command (m for help): <-- w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Ahora creamos un sistema de archivos en /dev/etherd/e0.1p1...

mkfs.ext4 /dev/etherd/e0.1p1
[email protected]:/tmp# mkfs.ext4 /dev/etherd/e0.1p1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 5119744 4k blocks and 1281120 inodes
Filesystem UUID: 2342cd83-bd45-4975-96c0-b0f366b73778
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

... y montarlo con fines de prueba:

mount /dev/etherd/e0.1p1 /mnt

Ahora debería ver el nuevo dispositivo en las salidas de...

mount
[email protected]:/tmp# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=204220k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,data=ordered)
[email protected]:/tmp#

... y

df -h
[email protected]:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /mnt
[email protected]:/tmp#

Puedes desmontarlo así:

umount /mnt

Para que el dispositivo se monte automáticamente en el momento del arranque, p. en el directorio /almacenamiento, creamos ese directorio...

mkdir /storage

... y agregue la siguiente línea a /etc/fstab:

nano /etc/fstab
[...]
/dev/etherd/e0.1p1       /storage        ext4    defaults,auto,_netdev 0 0

Esto por sí solo no es suficiente para tener el dispositivo montado en el momento del arranque porque las cosas de AoE se cargan después de leer /etc/fstab. Por lo tanto abrimos /etc/rc.local...

nano /etc/rc.local

... y agregue las siguientes líneas (antes de la línea de salida 0):

[...]
aoe-discover
sleep 5
mount -a
[...]

Para fines de prueba, ahora puede reiniciar el sistema:

reboot

Después del reinicio, el dispositivo debe estar montado:

mount
[email protected]:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]
df -h
[email protected]:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /storage

Ahora podemos hacer una escritura de prueba en la partición montada:

touch /storage/test.txt

Comprueba con el comando ls si el archivo ha sido escrito:

ls -la /storage
[email protected]:/tmp# ls -la /storage
total 24
drwxr-xr-x 3 root root 4096 Mar 22 09:06 .
drwxr-xr-x 23 root root 4096 Mar 22 09:05 ..
drwx------ 2 root root 16384 Mar 22 09:00 lost+found
-rw-r--r-- 1 root root 0 Mar 22 09:06 test.txt
[email protected]:/tmp#

El archivo test.txt se ha escrito con éxito en el volumen que montamos desde el servidor2.

5 Enlaces

  • Definición del protocolo AoE:http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
  • Debian:http://www.debian.org/

Debian
  1. Cómo instalar y configurar Debian 8 Docker Host minimalista

  2. Cómo configurar el servidor y el cliente NTP en Debian 9 Stretch Linux

  3. Cómo configurar contenedores virtuales con LXC y soporte de cuotas en Debian 8

  4. Cómo configurar el servidor Rsyslog en Debian 11

  5. Uso de ATA a través de Ethernet (AoE) en CentOS 6.3 (iniciador y destino)

Cómo configurar vsftpd en Debian

Cómo configurar Symfony 4 en el servidor Debian 9

Cómo configurar un trabajo cron en Debian 10

Cómo instalar el cliente de correo electrónico Thunderbird en Debian y configurar su cuenta de GMail en Thunderbird

Cómo instalar y configurar Apache Spark en Ubuntu/Debian

Cómo instalar y configurar Sendmail en Debian 10