CentOS, AoE · 10 min read · Feb 02, 2026
Uso de ATA sobre Ethernet (AoE) en CentOS 7 (Iniciador y Destino)
Esta guía explica cómo puedes configurar un destino AoE y un iniciador AoE (cliente), ambos ejecutando CentOS 7. AoE significa “ATA sobre Ethernet” y es un protocolo de red de área de almacenamiento (SAN) que permite a los iniciadores AoE utilizar dispositivos de almacenamiento en el destino AoE (remoto) utilizando cableado ethernet normal. “Remoto” en este caso significa “dentro de la misma LAN” porque AoE no es enrutable fuera de una LAN (esta es una gran diferencia en comparación con iSCSI). Para el iniciador AoE, el almacenamiento remoto se ve como un disco duro normal conectado localmente.
1 Nota Preliminar
Estoy usando dos servidores CentOS 7 aquí:
- server1.example.com (Iniciador): dirección IP 192.168.1.100
- server2.example.com (Destino): dirección IP 192.168.1.101
2 Habilitar Repositorios Adicionales
server1/server2:
Primero, importamos las claves GPG para los paquetes de software:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*Luego habilitamos el repositorio EPEL en nuestro sistema CentOS ya que muchos de los paquetes que vamos a instalar en el transcurso de este tutorial no están disponibles en el repositorio oficial de CentOS 7:
yum -y install epel-releaseyum -y install yum-prioritiesEdita /etc/yum.repos.d/epel.repo…
nano /etc/yum.repos.d/epel.repo… y agrega la línea priority=10 a la sección [epel]:
[epel]
name=Paquetes Extra para Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]Luego actualizamos nuestros paquetes existentes en el sistema:
yum -y update3 Cargando el Módulo del Kernel AoE en Ambos Sistemas
server1/server2:
Antes de comenzar, debemos asegurarnos de que el kernel soporte AoE:
grep ATA_OVER /boot/config-`uname -r`Esto debería mostrar algo como esto:
[root@server1 ~]# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
[root@server1 ~]#Esto significa que AoE fue construido como un módulo del kernel. Verifiquemos si el módulo ya está cargado:
lsmod | grep aoeSi no obtienes nada, esto significa que no está cargado. En este caso, podemos cargarlo de la siguiente manera:
modprobe aoeVerifiquemos nuevamente si el módulo está cargado:
lsmod | grep aoe[root@server1 ~]# lsmod | grep aoe
aoe 54175 0
[root@server1 ~]#Para que el módulo se cargue automáticamente cuando el sistema arranque, agregamos la siguiente línea a /etc/rc.local:
nano /etc/rc.local[...]
modprobe aoe
[...] 4 Configurando el Servidor (Destino) en el Servidor 2
server2:
Primero, configuramos el destino (server2):
rpm -i http://download.opensuse.org/repositories/home:/cyberorg:/ltsp/CentOS_7/x86_64/vblade-22-3.1.x86_64.rpmPodemos usar volúmenes lógicos no utilizados, archivos de imagen, discos duros (por ejemplo, /dev/sdb), particiones de disco duro (por ejemplo, /dev/sdb1) o dispositivos RAID (por ejemplo, /dev/md0) para el almacenamiento.
En este ejemplo, usaré un archivo de imagen de 10GB que se encuentra en la carpeta de almacenamiento /storage.
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=10000Esto creará un archivo de imagen /storage/storage1.img con un tamaño de 10GB.
Si deseas usar un volumen lógico en su lugar, puedes crear uno con un tamaño de 10GB llamado storage1 en el grupo de volúmenes vg0 de la siguiente manera:
lvcreate -L10G -n storage1 vg0Ahora exportamos nuestro dispositivo de almacenamiento de la siguiente manera:
vbladed 0 1 ens33 /storage/storage1.imgEl primer número (0) es el número de estante (mayor), el segundo (1) es el número de ranura (menor), cambia estos números a tu gusto. Cada dispositivo AoE se identifica por un par mayor/menor que debe ser único (si estás exportando múltiples dispositivos), con mayor entre 0-65535 y menor entre 0-255. La parte ens33 le dice a vbladed qué dispositivo ethernet usar, puedes encontrar los detalles sobre tus dispositivos ethernet ejecutando
ifconfig).
Para iniciar la exportación automáticamente cada vez que arranques el destino, abre /etc/rc.local…
nano /etc/rc.local… y agrega la siguiente línea a él (¡después de la línea modprobe aoe!):
[...]
vbladed 0 1 ens33 /storage/storage1.img
[...] 5 Configurando el Cliente (Iniciador) en el Servidor 1
server1:
En server1, instalamos el iniciador. No hay un paquete disponible para CentOS 7, pero el de CentOS 6 funciona bien, así que lo usaremos aquí.
rpm -i http://download.opensuse.org/repositories/system:/aoetools/CentOS_CentOS-6/x86_64/aoetools-36-1.2.x86_64.rpmAhora verificamos qué dispositivos de almacenamiento AoE están disponibles:
aoe-discoverEl comando
aoe-statahora debería mostrar los dispositivos de almacenamiento:
[root@server1 ~]# aoe-stat
e0.1 10.485GB ens33 1024 up
[root@server1 ~]#En este punto, tenemos un nuevo dispositivo de bloque disponible en la caja del cliente llamado /dev/etherd/e0.1. Si miramos el árbol /dev, aparece un nuevo nodo:
ls -la /dev/etherd/[root@server1 ~]# ls -la /dev/etherd/
total 0
drwxr-xr-x. 2 root root 160 Jun 30 14:49 .
drwxr-xr-x. 21 root root 3240 Jun 30 14:32 ..
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover
brw-rw----. 1 root disk 152, 0 Jun 30 14:49 e0.1
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate
[root@server1 ~]#Para usar ese dispositivo, debemos formatearlo:
fdisk /dev/etherd/e0.1[root@server1 ~]# fdisk /dev/etherd/e0.1
El dispositivo contiene ni una tabla de particiones DOS válida, ni una etiqueta de disco Sun, SGI o OSF
Construyendo una nueva etiqueta de disco DOS con el identificador de disco 0xed572fd4.
Los cambios permanecerán en memoria solo hasta que decidas escribirlos.
Después de eso, por supuesto, el contenido anterior no será recuperable.
El número de cilindros para este disco se establece en 2610.
No hay nada de malo en eso, pero esto es más grande que 1024,
y podría en ciertas configuraciones causar problemas con:
1) software que se ejecuta en el tiempo de arranque (por ejemplo, versiones antiguas de LILO)
2) software de arranque y particionamiento de otros sistemas operativos
(por ejemplo, DOS FDISK, OS/2 FDISK)
Advertencia: bandera inválida 0x0000 de la tabla de particiones 4 será corregida por w(escribir)
Comando (m para ayuda): <-- n
Acción del comando
e extendido
p partición primaria (1-4)
<-- p
Número de partición (1-4): <-- 1
Primer sector (2048-20479999, valor predeterminado 2048): <-- ENTER
Usando el valor predeterminado 1
Último sector, +sectores o +tamaño{K,M,G} (2048-20479999, valor predeterminado 20479999): <-- ENTER
Usando el valor predeterminado 20479999
La partición 1 de tipo Linux y de tamaño 9.8 GiB está configurada
Comando (m para ayuda): <-- t
Partición seleccionada 1
Código hexadecimal (tipo L para listar códigos): <-- L
0 Vacío 1e Oculto W95 FAT1 80 Viejo Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / viejo Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 oculto C: c7 Syrinx
5 Extendida 41 PPC PReP Boot 85 Linux extendido da Datos no FS
6 FAT16 42 SFS 86 NTFS conjunto de volumen db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS conjunto de volumen de de Dell Utility
8 AIX 4e QNX4.x 2da parte 88 Linux texto plano df BootIt
9 AIX arrancable 4f QNX4.x 3ra parte 8e Linux LVM e1 acceso DOS
a OS/2 Gestor de Arranque 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 FAT12 Oculto 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Diagnóstico Compaq 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 FAT16 Oculto <3 61 SpeedStor a9 NetBSD f2 DOS secundario
16 FAT16 Oculto 63 GNU HURD o Sys ab Arranque de Darwin fb VMware VMFS
17 HPFS/NTF Oculto 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 swap BSDI fd Linux raid auto
1b FAT3 Oculto W95 70 DiskSecure Mult bb Boot Wizard oculto fe LANstep
1c FAT3 Oculto W95 75 PC/IX be arranque Solaris ff BBT
Código hexadecimal (tipo L para listar códigos): <-- 83
Comando (m para ayuda): <-- w
¡La tabla de particiones ha sido alterada!
Llamando a ioctl() para volver a leer la tabla de particiones.
Sincronizando discos.
[root@server1 ~]#Después, hay un nuevo dispositivo /dev/etherd/e0.1p1 que puedes ver en la salida de
ls -l /dev/etherd/[root@server1 ~]# ls -l /dev/etherd/
total 0
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover
brw-rw----. 1 root disk 152, 0 Jun 30 14:54 e0.1
brw-rw----. 1 root disk 152, 1 Jun 30 14:54 e0.1p1
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate
[root@server1 ~]#Ahora creamos un sistema de archivos en /dev/etherd/e0.1p1…
mkfs.ext4 /dev/etherd/e0.1p1… y lo montamos para fines de prueba:
mount /dev/etherd/e0.1p1 /mntAhora deberías ver el nuevo dispositivo en las salidas de…
mount[root@server1 ~]# mount
sysfs en /sys tipo sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc en /proc tipo proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs en /dev tipo devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)
securityfs en /sys/kernel/security tipo securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs en /dev/shm tipo tmpfs (rw,nosuid,nodev,seclabel)
devpts en /dev/pts tipo devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs en /run tipo tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs en /sys/fs/cgroup tipo tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup en /sys/fs/cgroup/systemd tipo cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore en /sys/fs/pstore tipo pstore (rw,nosuid,nodev,noexec,relatime)
cgroup en /sys/fs/cgroup/cpu,cpuacct tipo cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup en /sys/fs/cgroup/memory tipo cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup en /sys/fs/cgroup/devices tipo cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup en /sys/fs/cgroup/hugetlb tipo cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup en /sys/fs/cgroup/net_cls tipo cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup en /sys/fs/cgroup/freezer tipo cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup en /sys/fs/cgroup/perf_event tipo cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup en /sys/fs/cgroup/blkio tipo cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup en /sys/fs/cgroup/cpuset tipo cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
configfs en /sys/kernel/config tipo configfs (rw,relatime)
/dev/mapper/centos-root en / tipo xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs en /sys/fs/selinux tipo selinuxfs (rw,relatime)
systemd-1 en /proc/sys/fs/binfmt_misc tipo autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs en /sys/kernel/debug tipo debugfs (rw,relatime)
mqueue en /dev/mqueue tipo mqueue (rw,relatime,seclabel)
hugetlbfs en /dev/hugepages tipo hugetlbfs (rw,relatime,seclabel)
/dev/sda1 en /boot tipo xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs en /run/user/0 tipo tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
/dev/etherd/e0.1p1 en /mnt tipo ext4 (rw,relatime,seclabel,data=ordered)
[root@server1 ~]#… y
df -h[root@server1 ~]# df -h
Sistema de archivos Tamaño Usado Disponible Uso% Montado en
/dev/mapper/centos-root 28G 1.3G 27G 5% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 192M 306M 39% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt
[root@server1 ~]#Puedes desmontarlo así:
umount /mntPara que el dispositivo se monte automáticamente al arrancar, por ejemplo, en el directorio /storage, creamos ese directorio…
mkdir /storage… y agregamos la siguiente línea a /etc/fstab:
nano /etc/fstab[...]
/dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0Esto solo no es suficiente para que el dispositivo se monte al arrancar porque las cosas de AoE se cargan después de que se lee /etc/fstab. Por lo tanto, abrimos /etc/rc.local…
nano /etc/rc.local… y agregamos las siguientes líneas a él (¡después de la línea modprobe aoe!):
[...]
aoe-discover
sleep 5
mount -a
[...] Para fines de prueba, ahora puedes reiniciar el sistema:
rebootDespués del reinicio, el dispositivo debería estar montado:
mount[root@server1 ~]# mount
sysfs en /sys tipo sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc en /proc tipo proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs en /dev tipo devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)
securityfs en /sys/kernel/security tipo securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs en /dev/shm tipo tmpfs (rw,nosuid,nodev,seclabel)
devpts en /dev/pts tipo devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs en /run tipo tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs en /sys/fs/cgroup tipo tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup en /sys/fs/cgroup/systemd tipo cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore en /sys/fs/pstore tipo pstore (rw,nosuid,nodev,noexec,relatime)
cgroup en /sys/fs/cgroup/cpu,cpuacct tipo cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup en /sys/fs/cgroup/memory tipo cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup en /sys/fs/cgroup/devices tipo cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup en /sys/fs/cgroup/hugetlb tipo cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup en /sys/fs/cgroup/net_cls tipo cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup en /sys/fs/cgroup/freezer tipo cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup en /sys/fs/cgroup/perf_event tipo cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup en /sys/fs/cgroup/blkio tipo cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup en /sys/fs/cgroup/cpuset tipo cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
configfs en /sys/kernel/config tipo configfs (rw,relatime)
/dev/mapper/centos-root en / tipo xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs en /sys/fs/selinux tipo selinuxfs (rw,relatime)
systemd-1 en /proc/sys/fs/binfmt_misc tipo autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs en /sys/kernel/debug tipo debugfs (rw,relatime)
mqueue en /dev/mqueue tipo mqueue (rw,nosuid,seclabel)
hugetlbfs en /dev/hugepages tipo hugetlbfs (rw,nosuid,seclabel)
/dev/sda1 en /boot tipo xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs en /run/user/0 tipo tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
/dev/etherd/e0.1p1 en /mnt tipo ext4 (rw,relatime,seclabel,data=ordered)
[root@server1 ~]#df -h[root@server1 ~]# df -h
Sistema de archivos Tamaño Usado Disponible Uso% Montado en
/dev/mapper/centos-root 28G 1.3G 27G 5% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 192M 306M 39% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt
[root@server1 ~]#6 Enlaces
- Definición del Protocolo AoE: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS: http://www.centos.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.