Networking · 10 min read · Feb 02, 2026

Utilizzare ATA Over Ethernet (AoE) su CentOS 7 (Inizializzatore e Destinazione)

Questa guida spiega come puoi configurare un obiettivo AoE e un iniziatore AoE (client), entrambi in esecuzione su CentOS 7. AoE sta per “ATA over Ethernet” ed è un protocollo di rete di archiviazione (SAN) che consente agli iniziatori AoE di utilizzare dispositivi di archiviazione sull’obiettivo AoE (remoto) utilizzando normali cavi ethernet. “Remoto” in questo caso significa “all’interno della stessa LAN” perché AoE non è instradabile al di fuori di una LAN (questa è una differenza importante rispetto a iSCSI). Per l’iniziatore AoE, l’archiviazione remota appare come un normale disco rigido collegato localmente.

1 Nota Preliminare

Sto utilizzando due server CentOS 7 qui:

  • server1.example.com (Inizializzatore): indirizzo IP 192.168.1.100
  • server2.example.com (Destinazione): indirizzo IP 192.168.1.101

2 Abilitare Repositories Aggiuntivi

server1/server2:

Per prima cosa, importiamo le chiavi GPG per i pacchetti software:

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

Poi abilitiamo il repository EPEL sul nostro sistema CentOS poiché molti dei pacchetti che installeremo nel corso di questo tutorial non sono disponibili nel repository ufficiale di CentOS 7:

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

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

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

… e aggiungi la riga priority=10 alla sezione [epel]:

[epel]
name=Extra Packages for 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
[...]

Poi aggiorniamo i pacchetti esistenti sul sistema:

yum -y update

3 Caricamento del Modulo del Kernel AoE su Entrambi i Sistemi

server1/server2:

Prima di iniziare, dobbiamo assicurarci che il kernel supporti AoE:

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

Questo dovrebbe visualizzare qualcosa del genere:

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

Questo significa che AoE è stato costruito come un modulo del kernel. Controlliamo se il modulo è già caricato:

lsmod | grep aoe

Se non ottieni nulla, significa che non è caricato. In questo caso possiamo caricarlo come segue:

modprobe aoe

Controlliamo di nuovo se il modulo è caricato:

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

Per avere il modulo caricato automaticamente all’avvio del sistema, aggiungiamo la seguente riga a /etc/rc.local:

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

4 Configurazione del Server (Destinazione) su Server 2

server2:

Per prima cosa, configuriamo l’obiettivo (server2):

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

Possiamo utilizzare volumi logici non utilizzati, file immagine, dischi rigidi (ad es. /dev/sdb), partizioni di dischi rigidi (ad es. /dev/sdb1) o dispositivi RAID (ad es. /dev/md0) per l’archiviazione.

In questo esempio, utilizzerò un file immagine di 10GB che si trova nella cartella di archiviazione /storage.

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

Questo creerà un file immagine /storage/storage1.img con una dimensione di 10GB.

Se vuoi utilizzare un volume logico invece, puoi crearne uno con una dimensione di 10GB chiamato storage1 nel gruppo di volumi vg0 in questo modo:

lvcreate -L10G -n storage1 vg0

Ora esportiamo il nostro dispositivo di archiviazione come segue:

vbladed 0 1 ens33 /storage/storage1.img

Il primo numero (0) è il numero dello scaffale (maggiore), il secondo (1) è il numero dello slot (minore), cambia questi numeri a tuo piacimento. Ogni dispositivo AoE è identificato da una coppia maggiore/minore che deve essere unica (se stai esportando più dispositivi), con maggiore compreso tra 0-65535 e minore compreso tra 0-255. La parte ens33 dice a vbladed quale dispositivo ethernet utilizzare, puoi trovare i dettagli sui tuoi dispositivi ethernet eseguendo

ifconfig

Per avviare l’esportazione automaticamente ogni volta che avvii il target, apri /etc/rc.local…

nano /etc/rc.local

… e aggiungi la seguente riga (dopo la riga modprobe aoe!):

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

5 Configurazione del Client (Inizializzatore) su Server 1

server1:

Su server1, installiamo l’inizializzatore. Non esiste un pacchetto per CentOS 7 disponibile, ma quello di CentOS 6 funziona bene, quindi lo utilizzeremo qui.

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

Ora controlliamo quali dispositivi di archiviazione AoE sono disponibili:

aoe-discover

Il comando

aoe-stat

dovrebbe ora mostrare i dispositivi di archiviazione:

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

A questo punto abbiamo un nuovo dispositivo a blocchi disponibile sulla macchina client chiamato /dev/etherd/e0.1. Se diamo un’occhiata all’albero /dev appare un nuovo 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 ~]#

Per utilizzare quel dispositivo, dobbiamo formattarlo:

fdisk /dev/etherd/e0.1
[root@server1 ~]# fdisk /dev/etherd/e0.1  
Il dispositivo non contiene né una tabella delle partizioni DOS valida, né un'etichetta del disco Sun, SGI o OSF  
Costruendo una nuova etichetta del disco DOS con identificatore del disco 0xed572fd4.  
Le modifiche rimarranno in memoria solo fino a quando non decidi di scriverle.  
Dopo di che, ovviamente, il contenuto precedente non sarà recuperabile.  
   
   
Il numero di cilindri per questo disco è impostato su 2610.  
Non c'è nulla di sbagliato in questo, ma questo è più grande di 1024,  
e potrebbe in alcune configurazioni causare problemi con:  
1) software che viene eseguito all'avvio (ad es., vecchie versioni di LILO)  
2) software di avvio e partizionamento di altri OS  
   (ad es., DOS FDISK, OS/2 FDISK)  
Attenzione: il flag non valido 0x0000 della tabella delle partizioni 4 sarà corretto da w (scrivi)  
   
Comando (m per aiuto): <-- n  
 Azione del comando  
   e   partizione estesa  
   p   partizione primaria (1-4)  
 <-- p  
 Numero della partizione (1-4): <-- 1  
Primo settore (2048-20479999, valore predefinito 2048): <-- ENTER  
 Utilizzando il valore predefinito 1  
Ultimo settore, +settori o +dimensione{K,M,G} (2048-20479999, valore predefinito 20479999): <-- ENTER  
Utilizzando il valore predefinito 20479999  
La partizione 1 di tipo Linux e di dimensione 9.8 GiB è impostata  
   
Comando (m per aiuto): <-- t  
 Partizione selezionata 1  
Codice esadecimale (tipo L per elencare i codici): <-- L  
   
 0  Vuoto           1e  FAT1 W95 Nascosto 80  Vecchio Minix       bf  Solaris  
 1  FAT12           24  DOS NEC         81  Minix / vecchio Lin c1  DRDOS/sec (FAT-  
 2  XENIX root      39  Pianeta 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 nascosto C:  c7  Syrinx  
 5  Esteso          41  PPC PReP Boot   85  Linux esteso  da  Non-FS dati  
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .  
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility  
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt  
 9  AIX avviabile   4f  QNX4.x 3rd part 8e  Linux LVM       e1  accesso DOS  
 a  OS/2 Boot Manag 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 Nascosto  56  Golden Bow      a7  NeXTSTEP       f1  SpeedStor  
12  Diagnostico Compaq 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor  
14  FAT16 Nascosto <3 61  SpeedStor       a9  NetBSD          f2  DOS secondario  
16  FAT16 Nascosto  63  GNU HURD o Sys ab  Avvio Darwin      fb  VMware VMFS  
17  HPFS/NTF Nascosto 64  Novell Netware  b7  BSDI fs        fc  VMware VMKCORE  
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto  
1b  FAT3 Nascosto W95 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep  
1c  FAT3 Nascosto W95 75  PC/IX           be  avvio Solaris    ff  BBT  
Codice esadecimale (tipo L per elencare i codici): <-- 83  
   
 Comando (m per aiuto): <-- w  
 La tabella delle partizioni è stata modificata!  
   
Chiamando ioctl() per rileggere la tabella delle partizioni.  
Sincronizzando i dischi.  
[root@server1 ~]#

Dopo, c’è un nuovo dispositivo /dev/etherd/e0.1p1 che puoi vedere nell’output di

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 ~]#

Ora creiamo un filesystem su /dev/etherd/e0.1p1…

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

… e montiamolo per scopi di test:

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

Dovresti ora vedere il nuovo dispositivo negli output di…

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  
Filesystem Size Used Avail Use% Mounted on  
/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 ~]#

Puoi smontarlo in questo modo:

umount /mnt

Per avere il dispositivo montato automaticamente all’avvio, ad esempio nella directory /storage, creiamo quella directory…

mkdir /storage

… e aggiungiamo la seguente riga a /etc/fstab:

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

Questo da solo non è sufficiente per avere il dispositivo montato all’avvio perché le cose AoE vengono caricate dopo che /etc/fstab è stato letto. Pertanto apriamo /etc/rc.local…

nano /etc/rc.local

… e aggiungiamo le seguenti righe (dopo la riga modprobe aoe!):

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

Per scopi di test, ora puoi riavviare il sistema:

reboot

Dopo il riavvio, il dispositivo dovrebbe essere montato:

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,nosuid,seclabel)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,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  
Filesystem Size Used Avail Use% Mounted on  
/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 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.