Configuração de Rede · 7 min read · Jan 07, 2026
Configurar ATA sobre Ethernet (AoE) no Debian 8 (Iniciador e Destino)
Este tutorial mostra como configurar um cliente AoE (iniciador) e um servidor (destino) no Debian 8 /Jessie). O termo AoE significa “ATA sobre Ethernet”, que é um protocolo de rede de área de armazenamento (SAN) que permite que clientes AoE utilizem dispositivos de armazenamento no servidor AoE (remoto) através de uma rede ethernet normal. “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 iSCSI). Para o cliente AoE (iniciador), o armazenamento remoto parece um disco rígido normal, conectado localmente.
1 Nota Preliminar
Estou usando dois servidores Debian 8 aqui:
- server1.example.com (Iniciador): endereço IP 192.168.1.100
- server2.example.com (Destino): endereço IP 192.168.1.101
2 Carregar o Módulo do Kernel AoE em ambos os sistemas
server1/server2:
Como primeiro passo, precisamos garantir que o Kernel em nossos servidores suporte ATA sobre Ethernet. Execute o seguinte comando como usuário root.
grep ATA_OVER /boot/config-`uname -r`Isso deve exibir algo como isto:
root@server1:/tmp# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
root@server1:/tmp#Isso significa que o AoE foi construído como um módulo do kernel. Agora vamos verificar se o módulo está carregado:
lsmod | grep aoeSe você não receber nada, isso significa que não está carregado. Neste caso, podemos carregá-lo da seguinte forma:
modprobe aoeVamos verificar novamente se o módulo está carregado:
lsmod | grep aoeroot@server1:/tmp# lsmod | grep aoe
aoe 51917 0
root@server1:/tmp#Para que o módulo seja carregado automaticamente quando o sistema inicializa, adicionamos o módulo ao /etc/modules:
nano /etc/modules# /etc/modules: módulos do kernel a serem carregados na inicialização.
#
# Este arquivo contém os nomes dos módulos do kernel que devem ser carregados
# na inicialização, um por linha. Linhas que começam com "#" são ignoradas.
# Parâmetros podem ser especificados após o nome do módulo.
aoe3 Configurando o Destino (server2)
server2:
Primeiro, configuramos o destino AoE (server2):
apt-get install vbladePodemos 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 20GB que está armazenado na pasta /storage.
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000Isso cria o arquivo de imagem /storage/storage1.img com um tamanho de 20GB.
Se você quiser usar um volume lógico em vez disso, pode criar um com um tamanho de 20GB chamado storage1 no grupo de volumes vg0 assim:
lvcreate -L20G -n storage1 vg0Agora exportamos nosso dispositivo de armazenamento da seguinte forma:
vbladed 0 1 eth0 /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 eth0 informa ao vbladed qual dispositivo ethernet usar (se seu dispositivo ethernet for eth1, então use eth1 - você pode descobrir 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 (antes da linha exit 0):
[...]
/usr/sbin/vbladed 0 1 eth0 /storage/storage1.img
[...] 4 Configurando o Cliente AoE / Iniciador (server1)
server1:
No server1, instalamos o iniciador:
apt-get install aoetoolsAgora verificamos quais dispositivos de armazenamento AoE estão disponíveis:
aoe-discoverNão se preocupe, o comando não mostrará nenhuma saída. O comando:
aoe-statdeve agora mostrar os dispositivos de armazenamento:
root@server1:/tmp# aoe-stat
e0.1 20.971GB eth0 1024 up
root@server1:/tmp#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:/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
root@server1:/tmp#Para usar esse dispositivo /dev/etherd/e0.1, devemos formatá-lo:
fdisk /dev/etherd/e0.1root@server1:/tmp# fdisk /dev/etherd/e0.1Bem-vindo ao fdisk (util-linux 2.25.2).
As alterações permanecerão na memória apenas até você decidir escrevê-las.
Tenha cuidado antes de usar o comando de escrita.O dispositivo não contém uma tabela de partição reconhecida.
Criou uma nova etiqueta de disco DOS com o identificador de disco 0x2922f0be.Comando (m para ajuda): <-- n
Tipo de partição
p primária (0 primária, 0 estendida, 4 livres)
e estendida (container para partições lógicas)
Selecione (padrão p): <-- p
Número da partição (1-4, padrão 1): <-- 1
Primeiro setor (2048-40959999, padrão 2048): <-- ENTER
Último setor, +setores ou +tamanho{K,M,G,T,P} (2048-40959999, padrão 40959999): <-- ENTERCriada uma nova partição 1 do tipo 'Linux' e de tamanho 19.5 GiB.Comando (m para ajuda): <-- wA tabela de partição foi alterada.
Chamando ioctl() para reler a tabela de partição.
Sincronizando discos.Agora criamos um sistema de arquivos em /dev/etherd/e0.1p1…
mkfs.ext4 /dev/etherd/e0.1p1root@server1:/tmp# mkfs.ext4 /dev/etherd/e0.1p1
mke2fs 1.42.12 (29-Aug-2014)
Criando sistema de arquivos com 5119744 4k blocos e 1281120 inodes
UUID do sistema de arquivos: 2342cd83-bd45-4975-96c0-b0f366b73778
Backups do superbloco armazenados em blocos:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000Alocando tabelas de grupo: feito
Escrevendo tabelas de inode: feito
Criando diário (32768 blocos): feito
Escrevendo superblocos e informações de contabilidade do sistema de arquivos: feito… e montamos para fins de teste:
mount /dev/etherd/e0.1p1 /mntAgora você deve ver o novo dispositivo nas saídas de…
mountroot@server1:/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)
root@server1:/tmp#… e
df -hroot@server1:/tmp# df -h
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em
/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
root@server1:/tmp#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, pois as configurações 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 (antes da linha exit 0):
[...]
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:
mountroot@server1:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]df -hroot@server1:/tmp# df -h
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em
/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% /storageAgora podemos fazer um teste de gravação na partição montada:
touch /storage/test.txtA verificação com o comando ls se o arquivo foi gravado:
ls -la /storageroot@server1:/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
root@server1:/tmp#O arquivo test.txt foi gravado com sucesso no volume que montamos do server2.
5 Links
- Definição do Protocolo AoE: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Debian: http://www.debian.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.