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-releaseyum -y install yum-prioritiesEdite /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 update3 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 aoeSe você não receber nada de volta, isso significa que não está carregado. Nesse caso, podemos carregá-lo da seguinte forma:
modprobe aoeVamos 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.rpmPodemos 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=10000Isso 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 vg0Agora exportamos nosso dispositivo de armazenamento da seguinte forma:
vbladed 0 1 ens33 /storage/storage1.imgO 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.rpmAgora verificamos quais dispositivos de armazenamento AoE estão disponíveis:
aoe-discoverO comando
aoe-statdeverá 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 /mntVocê 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 /mntPara 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 0Isso 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:
rebootApó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
- Definição do Protocolo AoE: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS: http://www.centos.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.