Armazenamento · 10 min read · Feb 02, 2026

Usando ATA sobre Ethernet (AoE) no CentOS 7 (Iniciador e Destino)

Este guia explica como você pode configurar um destino AoE e um iniciador AoE (cliente), ambos executando o CentOS 7. AoE significa “ATA sobre Ethernet” e é um protocolo de rede de área de armazenamento (SAN) que permite que iniciadores AoE utilizem dispositivos de armazenamento no (remoto) destino AoE usando cabos ethernet normais. “Remoto” neste caso significa “dentro da mesma LAN” porque AoE não é roteável fora de uma LAN (esta é uma grande diferença em comparação com o iSCSI). Para o iniciador AoE, o armazenamento remoto parece um disco rígido normal, conectado localmente.

1 Nota Preliminar

Estou usando dois servidores CentOS 7 aqui:

  • server1.example.com (Iniciador): endereço IP 192.168.1.100
  • server2.example.com (Destino): endereço IP 192.168.1.101

2 Habilitar Repositórios Adicionais

server1/server2:

Primeiro, importamos as chaves GPG para pacotes de software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Em seguida, habilitamos o repositório EPEL em nosso sistema CentOS, pois muitos dos pacotes que vamos instalar ao longo deste tutorial não estão disponíveis no repositório oficial do CentOS 7:

yum -y install epel-release
yum -y install yum-priorities

Edite /etc/yum.repos.d/epel.repo…

nano /etc/yum.repos.d/epel.repo

… e adicione a linha priority=10 à seção [epel]:

[epel]
name=Pacotes Extras para o Linux Empresarial 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
[...]

Em seguida, atualizamos nossos pacotes existentes no sistema:

yum -y update

3 Carregando o Módulo do Kernel AoE em Ambos os Sistemas

server1/server2:

Antes de começarmos, devemos garantir que o kernel suporte AoE:

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

Isso deve exibir algo como isto:

[root@server1 ~]# grep ATA_OVER /boot/config-`uname -r`  
CONFIG_ATA_OVER_ETH=m  
[root@server1 ~]#

Isso significa que o AoE foi construído como um módulo do kernel. Vamos verificar se o módulo já está carregado:

lsmod | grep aoe

Se você não receber nada de volta, isso significa que não está carregado. Nesse caso, podemos carregá-lo da seguinte forma:

modprobe aoe

Vamos verificar novamente se o módulo está carregado:

lsmod | grep aoe
[root@server1 ~]# lsmod | grep aoe  
aoe 54175 0  
[root@server1 ~]#

Para que o módulo seja carregado automaticamente quando o sistema inicializa, adicionamos a seguinte linha ao /etc/rc.local:

nano /etc/rc.local
[...]
modprobe aoe
[...]

4 Configurando o Servidor (Destino) no Servidor 2

server2:

Primeiro, configuramos o destino (server2):

rpm -i http://download.opensuse.org/repositories/home:/cyberorg:/ltsp/CentOS_7/x86_64/vblade-22-3.1.x86_64.rpm

Podemos usar volumes lógicos não utilizados, arquivos de imagem, discos rígidos (por exemplo, /dev/sdb), partições de disco rígido (por exemplo, /dev/sdb1) ou dispositivos RAID (por exemplo, /dev/md0) para o armazenamento.

Neste exemplo, usarei um arquivo de imagem de 10GB que está localizado na pasta de armazenamento /storage.

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

Isso criará um arquivo de imagem /storage/storage1.img com um tamanho de 10GB.

Se você quiser usar um volume lógico em vez disso, pode criar um com um tamanho de 10GB chamado storage1 no grupo de volumes vg0 assim:

lvcreate -L10G -n storage1 vg0

Agora exportamos nosso dispositivo de armazenamento da seguinte forma:

vbladed 0 1 ens33 /storage/storage1.img

O primeiro número (0) é o número da prateleira (maior), o segundo (1) é o número do slot (menor), altere esses números conforme sua preferência. Cada dispositivo AoE é identificado por um par maior/menor que deve ser único (se você estiver exportando vários dispositivos), com maior entre 0-65535 e menor entre 0-255. A parte ens33 informa ao vbladed qual dispositivo ethernet usar, você pode descobrir os detalhes sobre seus dispositivos ethernet executando

ifconfig

).

Para iniciar a exportação automaticamente sempre que você inicializar o destino, abra /etc/rc.local…

nano /etc/rc.local

… e adicione a seguinte linha a ele (após a linha modprobe aoe!):

[...]
vbladed 0 1 ens33 /storage/storage1.img
[...]

5 Configurando o Cliente (Iniciador) no Servidor 1

server1:

No server1, instalamos o iniciador. Não há pacote disponível para o CentOS 7, mas o do CentOS 6 funciona bem, então usaremos isso aqui.

rpm -i http://download.opensuse.org/repositories/system:/aoetools/CentOS_CentOS-6/x86_64/aoetools-36-1.2.x86_64.rpm

Agora verificamos quais dispositivos de armazenamento AoE estão disponíveis:

aoe-discover

O comando

aoe-stat

deverá agora mostrar os dispositivos de armazenamento:

[root@server1 ~]# aoe-stat  
e0.1 10.485GB ens33 1024 up  
[root@server1 ~]#

Neste ponto, temos um novo dispositivo de bloco disponível na caixa do cliente chamado /dev/etherd/e0.1. Se olharmos para a árvore /dev, um novo nó aparece:

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 esse dispositivo, devemos formatá-lo:

fdisk /dev/etherd/e0.1
[root@server1 ~]# fdisk /dev/etherd/e0.1  
Dispositivo contém nem uma tabela de partição DOS válida, nem rótulo de disco Sun, SGI ou OSF  
Construindo um novo rótulo de disco DOS com identificador de disco 0xed572fd4.  
As alterações permanecerão na memória apenas até você decidir gravá-las.  
Depois disso, é claro, o conteúdo anterior não poderá ser recuperado.  
   
   
O número de cilindros para este disco é definido como 2610.  
Não há nada de errado com isso, mas isso é maior que 1024,  
e pode, em certas configurações, causar problemas com:  
1) software que é executado no tempo de inicialização (por exemplo, versões antigas do LILO)  
2) software de inicialização e particionamento de outros sistemas operacionais  
   (por exemplo, DOS FDISK, OS/2 FDISK)  
Aviso: flag inválida 0x0000 da tabela de partição 4 será corrigida por w(rite)  
   
Comando (m para ajuda): <-- n  
 Ação do comando  
   e   partição estendida  
   p   partição primária (1-4)  
 <-- p  
 Número da partição (1-4): <-- 1  
Primeiro setor (2048-20479999, padrão 2048): <-- ENTER  
 Usando valor padrão 1  
Último setor, +setores ou +tamanho{K,M,G} (2048-20479999, padrão 20479999): <-- ENTER  
Usando valor padrão 20479999  
Partição 1 do tipo Linux e de tamanho 9.8 GiB está definida  
   
Comando (m para ajuda): <-- t  
 Partição selecionada 1  
Código hexadecimal (tipo L para listar códigos): <-- L  
   
 0  Vazio           1e  Oculto W95 FAT1 80  Antigo Minix       bf  Solaris  
 1  FAT12           24  NEC DOS         81  Minix / antigo 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  Estendida       41  PPC PReP Boot   85  Linux estendida  da  Dados não FS  
 6  FAT16           42  SFS             86  Conjunto de volume NTFS db  CP/M / CTOS / .  
 7  HPFS/NTFS       4d  QNX4.x         87  Conjunto de volume NTFS de  Dell Utilitário  
 8  AIX             4e  QNX4.x 2ª parte 88  Linux texto simples df  BootIt  
 9  AIX inicializável  4f  QNX4.x 3ª parte 8e  Linux LVM       e1  Acesso DOS  
 a  OS/2 Gerenciador de Inicialização 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  secundário DOS  
16  FAT16 Oculto    63  GNU HURD ou Sys ab  Inicialização 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  Multidão DiskSecure bb  Boot Wizard hid fe  LANstep  
1c  FAT3 Oculto W95 75  PC/IX           be  inicialização Solaris  ff  BBT  
Código hexadecimal (tipo L para listar códigos): <-- 83  
   
 Comando (m para ajuda): <-- w  
 A tabela de partição foi alterada!  
   
Chamando ioctl() para reler a tabela de partição.  
Sincronizando discos.  
[root@server1 ~]#

Depois disso, há um novo dispositivo /dev/etherd/e0.1p1 que você pode ver na saída 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 ~]#

Agora criamos um sistema de arquivos em /dev/etherd/e0.1p1…

mkfs.ext4 /dev/etherd/e0.1p1

… e montamos para fins de teste:

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

Você deve agora ver o novo dispositivo nas saídas de…

mount
[root@server1 ~]# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)  
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
configfs on /sys/kernel/config type configfs (rw,relatime)  
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)  
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)  
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,seclabel,data=ordered)  
[root@server1 ~]#

… e

df -h
[root@server1 ~]# df -h  
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em  
/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 ~]#

Você pode desmontá-lo assim:

umount /mnt

Para que o dispositivo seja montado automaticamente na inicialização, por exemplo, no diretório /storage, criamos esse diretório…

mkdir /storage

… e adicionamos a seguinte linha ao /etc/fstab:

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

Isso sozinho não é suficiente para que o dispositivo seja montado na inicialização, porque as coisas do AoE são carregadas após o /etc/fstab ser lido. Portanto, abrimos /etc/rc.local…

nano /etc/rc.local

… e adicionamos as seguintes linhas a ele (após a linha modprobe aoe!):

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

Para fins de teste, você pode agora reiniciar o sistema:

reboot

Após a reinicialização, o dispositivo deve estar montado:

mount
[root@server1 ~]# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)  
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
configfs on /sys/kernel/config type configfs (rw,relatime)  
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)  
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)  
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,seclabel,data=ordered)  
[root@server1 ~]#
df -h
[root@server1 ~]# df -h  
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em  
/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 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.