Configuration réseau · 8 min read · Jan 07, 2026

Configurer ATA over Ethernet (AoE) sur Debian 8 (Initiateur et Cible)

Ce tutoriel vous montre comment configurer un client AoE (initiateur) et un serveur (cible) sur Debian 8 /Jessie). Le terme AoE signifie “ATA over Ethernet” qui est un protocole de réseau de stockage (SAN) permettant aux clients AoE d’utiliser des dispositifs de stockage sur le serveur AoE (à distance) via un réseau ethernet normal. “À distance” 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 le client AoE (initiateur), le stockage distant ressemble à un disque dur normal, attaché localement.

1 Remarque Préliminaire

J’utilise ici deux serveurs Debian 8 :

  • server1.example.com (Initiateur) : adresse IP 192.168.1.100
  • server2.example.com (Cible) : adresse IP 192.168.1.101

2 Charger le Module du Noyau AoE sur les deux systèmes

server1/server2 :

En premier lieu, nous devons nous assurer que le noyau de nos serveurs prend en charge ATA Over Ethernet. Exécutez la commande suivante en tant qu’utilisateur root.

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

Cela devrait afficher quelque chose comme ceci :

root@server1:/tmp# grep ATA_OVER /boot/config-`uname -r`  
CONFIG_ATA_OVER_ETH=m  
root@server1:/tmp#

Cela signifie qu’AoE a été intégré en tant que module du noyau. Maintenant, nous allons vérifier si le module est chargé :

lsmod | grep aoe

Si vous ne recevez rien, cela signifie qu’il n’est pas chargé. Dans ce cas, nous pouvons le charger comme suit :

modprobe aoe

Vérifions à nouveau si le module est chargé :

lsmod | grep aoe
root@server1:/tmp# lsmod | grep aoe  
aoe 51917 0  
root@server1:/tmp#

Pour que le module soit chargé automatiquement au démarrage du système, nous ajoutons le module aoe à /etc/modules :

nano /etc/modules
# /etc/modules: modules du noyau à charger au démarrage.
#
# Ce fichier contient les noms des modules du noyau qui doivent être chargés
# au démarrage, un par ligne. Les lignes commençant par "#" sont ignorées.
# Les paramètres peuvent être spécifiés après le nom du module.

aoe

3 Configuration de la Cible (server2)

server2 :

Tout d’abord, nous configurons la cible AoE (server2) :

apt-get install vblade

Nous pouvons utiliser des volumes logiques non utilisé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 20 Go stocké dans le dossier /storage.

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

Cela crée le fichier image /storage/storage1.img d’une taille de 20 Go.

Si vous souhaitez utiliser un volume logique à la place, vous pouvez en créer un d’une taille de 20 Go nommé storage1 dans le groupe de volumes vg0 comme ceci :

lvcreate -L20G -n storage1 vg0

Maintenant, nous exportons notre dispositif de stockage comme suit :

vbladed 0 1 eth0 /storage/storage1.img

Le 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 eth0 indique à vbladed quel dispositif ethernet utiliser (si votre dispositif ethernet est eth1, utilisez eth1 - vous pouvez découvrir 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 (avant la ligne exit 0) :

[...]  
/usr/sbin/vbladed 0 1 eth0 /storage/storage1.img  
[...]  

4 Configuration du Client AoE / Initiateur (server1)

server1 :

Sur server1, nous installons l’initiateur :

apt-get install aoetools

Maintenant, nous vérifions quels dispositifs de stockage AoE sont disponibles :

aoe-discover

Ne vous inquiétez pas, la commande ne montrera aucune sortie. La commande :

aoe-stat

devrait maintenant afficher les dispositifs de stockage :

root@server1:/tmp# aoe-stat  
e0.1 20.971GB eth0 1024 up  
root@server1:/tmp#

À 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:/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#

Pour utiliser ce dispositif /dev/etherd/e0.1, nous devons le formater :

fdisk /dev/etherd/e0.1
root@server1:/tmp# fdisk /dev/etherd/e0.1
Bienvenue dans fdisk (util-linux 2.25.2).  
Les changements resteront en mémoire uniquement, jusqu'à ce que vous décidiez de les écrire.  
Soyez prudent avant d'utiliser la commande d'écriture.
Le dispositif ne contient pas de table de partition reconnue.  
Créé une nouvelle étiquette de disque DOS avec l'identifiant de disque 0x2922f0be.
Commande (m pour l'aide) : <-- n  
Type de partition  
p primaire (0 primaire, 0 étendue, 4 libre)  
e étendue (contenant pour les partitions logiques)  
Sélectionner (par défaut p) : <-- p  
Numéro de partition (1-4, par défaut 1) : <-- 1  
Premier secteur (2048-40959999, par défaut 2048) : <-- ENTER  
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-40959999, par défaut 40959999) : <-- ENTER
Créé une nouvelle partition 1 de type 'Linux' et de taille 19.5 GiB.
Commande (m pour l'aide) : <-- w
La table de partition a été modifiée.  
Appel de ioctl() pour relire la table de partition.  
Synchronisation des disques.

Maintenant, nous créons un système de fichiers sur /dev/etherd/e0.1p1…

mkfs.ext4 /dev/etherd/e0.1p1
root@server1:/tmp# mkfs.ext4 /dev/etherd/e0.1p1  
mke2fs 1.42.12 (29-Aug-2014)  
Création du système de fichiers avec 5119744 blocs de 4k et 1281120 inodes  
UUID du système de fichiers : 2342cd83-bd45-4975-96c0-b0f366b73778  
Sauvegardes du superbloc stockées sur les blocs :  
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,  
 4096000
Allocation des tables de groupe : fait  
Écriture des tables d'inodes : fait  
Création du journal (32768 blocs) : fait  
Écriture des superblocs et des informations de comptabilité du système de fichiers : fait

… et le monter à des fins de test :

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

Vous devriez maintenant voir le nouveau dispositif dans les sorties de…

mount
root@server1:/tmp# mount  
sysfs sur /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc sur /proc type proc (rw,nosuid,nodev,noexec,relatime)  
udev sur /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)  
devpts sur /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs sur /run type tmpfs (rw,nosuid,relatime,size=204220k,mode=755)  
/dev/sda1 sur / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs sur /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs sur /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs sur /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs sur /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup sur /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore sur /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup sur /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup sur /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup sur /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup sur /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup sur /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup sur /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup sur /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
systemd-1 sur /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)  
mqueue sur /dev/mqueue type mqueue (rw,relatime)  
debugfs sur /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs sur /dev/hugepages type hugetlbfs (rw,relatime)  
rpc_pipefs sur /run/rpc_pipefs type rpc_pipefs (rw,relatime)  
/dev/etherd/e0.1p1 sur /mnt type ext4 (rw,relatime,data=ordered)  
root@server1:/tmp#

… et

df -h
root@server1:/tmp# df -h  
Système de fichiers Taille Utilisé Disponible Utilisation% Monté sur  
/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#

Vous pouvez le démonter comme ceci :

umount /mnt

Pour 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 0

Cela seul n’est pas suffisant pour que le dispositif soit monté au démarrage car les éléments AoE sont chargés après la lecture de /etc/fstab. Par conséquent, nous ouvrons /etc/rc.local…

nano /etc/rc.local

… et ajoutons les lignes suivantes (avant la ligne exit 0) :

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

À des fins de test, vous pouvez maintenant redémarrer le système :

reboot

Après le redémarrage, le dispositif devrait être monté :

mount
root@server1:/tmp# mount  
[...snip...]  
/dev/etherd/e0.1p1 sur /storage type ext4 (rw,relatime,data=ordered)  
[...snip...]
df -h
root@server1:/tmp# df -h  
Système de fichiers Taille Utilisé Disponible Utilisation% Monté sur  
/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% /storage

Maintenant, nous pouvons faire un test d’écriture sur la partition montée :

touch /storage/test.txt

Vérifiez avec la commande ls si le fichier a été écrit :

ls -la /storage
root@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#

Le fichier test.txt a été écrit avec succès sur le volume que nous avons monté depuis server2.

5 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.