CentOS AoE · 10 min read · Feb 02, 2026
Utilisation d'ATA sur Ethernet (AoE) sur CentOS 7 (Initiateur et Cible)
Ce guide explique comment vous pouvez configurer une cible AoE et un initiateur AoE (client), tous deux exécutant CentOS 7. AoE signifie “ATA sur Ethernet” et est un protocole de réseau de stockage (SAN) qui permet aux initiateurs AoE d’utiliser des dispositifs de stockage sur la cible AoE (distante) en utilisant un câblage ethernet normal. “Distante” dans ce cas signifie “à l’intérieur du même LAN” car AoE n’est pas routable en dehors d’un LAN (c’est une différence majeure par rapport à iSCSI). Pour l’initiateur AoE, le stockage distant ressemble à un disque dur normal, attaché localement.
1 Remarque Préliminaire
J’utilise ici deux serveurs CentOS 7 :
- server1.example.com (Initiateur) : adresse IP 192.168.1.100
- server2.example.com (Cible) : adresse IP 192.168.1.101
2 Activer des Dépôts Supplémentaires
server1/server2 :
Tout d’abord, nous importons les clés GPG pour les paquets logiciels :
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*Ensuite, nous activons le dépôt EPEL sur notre système CentOS car beaucoup des paquets que nous allons installer au cours de ce tutoriel ne sont pas disponibles dans le dépôt officiel de CentOS 7 :
yum -y install epel-releaseyum -y install yum-prioritiesÉditez /etc/yum.repos.d/epel.repo…
nano /etc/yum.repos.d/epel.repo… et ajoutez la ligne priority=10 à la section [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
[...]Ensuite, nous mettons à jour nos paquets existants sur le système :
yum -y update3 Chargement du Module du Noyau AoE sur les Deux Systèmes
server1/server2 :
Avant de commencer, nous devons nous assurer que le noyau prend en charge AoE :
grep ATA_OVER /boot/config-`uname -r`Cela devrait afficher quelque chose comme ceci :
[root@server1 ~]# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
[root@server1 ~]#Cela signifie qu’AoE a été construit en tant que module du noyau. Vérifions si le module est déjà chargé :
lsmod | grep aoeSi vous ne recevez rien, cela signifie qu’il n’est pas chargé. Dans ce cas, nous pouvons le charger comme suit :
modprobe aoeVérifions à nouveau si le module est chargé :
lsmod | grep aoe[root@server1 ~]# lsmod | grep aoe
aoe 54175 0
[root@server1 ~]#Pour que le module soit chargé automatiquement au démarrage du système, nous ajoutons la ligne suivante à /etc/rc.local :
nano /etc/rc.local[...]
modprobe aoe
[...]4 Configuration du Serveur (Cible) sur le Serveur 2
server2 :
Tout d’abord, nous configurons la cible (server2) :
rpm -i http://download.opensuse.org/repositories/home:/cyberorg:/ltsp/CentOS_7/x86_64/vblade-22-3.1.x86_64.rpmNous pouvons utiliser des volumes logiques inutilisés, des fichiers image, des disques durs (par exemple, /dev/sdb), des partitions de disque dur (par exemple, /dev/sdb1) ou des dispositifs RAID (par exemple, /dev/md0) pour le stockage.
Dans cet exemple, j’utiliserai un fichier image de 10 Go situé dans le dossier de stockage /storage.
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=10000Cela créera un fichier image /storage/storage1.img d’une taille de 10 Go.
Si vous souhaitez utiliser un volume logique à la place, vous pouvez en créer un d’une taille de 10 Go nommé storage1 dans le groupe de volumes vg0 comme ceci :
lvcreate -L10G -n storage1 vg0Maintenant, nous exportons notre dispositif de stockage comme suit :
vbladed 0 1 ens33 /storage/storage1.imgLe premier nombre (0) est le numéro de l’étagère (majeur), le second (1) le numéro de l’emplacement (mineur), changez ces numéros à votre convenance. Chaque dispositif AoE est identifié par une paire majeur/mineur qui doit être unique (si vous exportez plusieurs dispositifs), avec majeur entre 0-65535 et mineur entre 0-255. La partie ens33 indique à vbladed quel dispositif ethernet utiliser, vous pouvez trouver les détails sur vos dispositifs ethernet en exécutant
ifconfig).
Pour démarrer l’exportation automatiquement chaque fois que vous démarrez la cible, ouvrez /etc/rc.local…
nano /etc/rc.local… et ajoutez la ligne suivante (après la ligne modprobe aoe !) :
[...]
vbladed 0 1 ens33 /storage/storage1.img
[...]5 Configuration du Client (Initiateur) sur le Serveur 1
server1 :
Sur server1, nous installons l’initiateur. Il n’y a pas de paquet pour CentOS 7 disponible, mais celui de CentOS 6 fonctionne très bien, donc nous allons l’utiliser ici.
rpm -i http://download.opensuse.org/repositories/system:/aoetools/CentOS_CentOS-6/x86_64/aoetools-36-1.2.x86_64.rpmMaintenant, nous vérifions quels dispositifs de stockage AoE sont disponibles :
aoe-discoverLa commande
aoe-statdevrait maintenant afficher les dispositifs de stockage :
[root@server1 ~]# aoe-stat
e0.1 10.485GB ens33 1024 up
[root@server1 ~]#À ce stade, nous avons un nouveau dispositif de bloc disponible sur la boîte cliente nommé /dev/etherd/e0.1. Si nous regardons dans l’arborescence /dev, un nouveau nœud apparaît :
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 ~]#Pour utiliser ce dispositif, nous devons le formater :
fdisk /dev/etherd/e0.1[root@server1 ~]# fdisk /dev/etherd/e0.1
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xed572fd4.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): <-- n
Command action
e extended
p primary partition (1-4)
<-- p
Partition number (1-4): <-- 1
First sector (2048-20479999, default 2048): <-- ENTER
Using default value 1
Last sector, +sectors or +size{K,M,G} (2048-20479999, default 20479999): <-- ENTER
Using default value 20479999
Partition 1 of type Linux and of size 9.8 GiB is set
Command (m for help): <-- t
Selected partition 1
Hex code (type L to list codes): <-- L
0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old 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 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
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 bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
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 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Hex code (type L to list codes): <-- 83
Command (m for help): <-- w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@server1 ~]#Ensuite, il y a un nouveau dispositif /dev/etherd/e0.1p1 que vous pouvez voir dans la sortie 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 ~]#Maintenant, nous créons un système de fichiers sur /dev/etherd/e0.1p1…
mkfs.ext4 /dev/etherd/e0.1p1… et le montons à des fins de test :
mount /dev/etherd/e0.1p1 /mntVous devriez maintenant voir le nouveau dispositif dans les sorties 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 ~]#… et
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 ~]#Vous pouvez le démonter comme ceci :
umount /mntPour que le dispositif soit monté automatiquement au démarrage, par exemple dans le répertoire /storage, nous créons ce répertoire…
mkdir /storage… et ajoutons la ligne suivante à /etc/fstab :
nano /etc/fstab[...]
/dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0Cela seul n’est pas suffisant pour que le dispositif soit monté au démarrage car les éléments AoE sont chargés après que /etc/fstab soit lu. Par conséquent, nous ouvrons /etc/rc.local…
nano /etc/rc.local… et ajoutons les lignes suivantes (après la ligne modprobe aoe !) :
[...]
aoe-discover
sleep 5
mount -a
[...]À des fins de test, vous pouvez maintenant redémarrer le système :
rebootAprès le redémarrage, le dispositif devrait être monté :
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,nosuid,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid)
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,nosuid,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,seclabel,size=188060k,mode=700)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,nosuid,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 Liens
- Définition du protocole AoE : http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS : http://www.centos.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.