Ce guide explique comment configurer une cible AoE et un initiateur AoE (client), tous deux exécutant Debian Squeeze. AoE signifie "ATA over Ethernet" et est un protocole de réseau de stockage (SAN) qui permet aux initiateurs AoE d'utiliser des périphériques de stockage sur la cible AoE (distante) en utilisant un câblage Ethernet normal. "Distant" 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, connecté localement.
1 Remarque préliminaire
J'utilise ici deux serveurs Debian Squeeze :
- server1.example.com (initiateur) :adresse IP 192.168.0.100
- server2.example.com (cible) :adresse IP 192.168.0.101
2 Chargement du module noyau aoe sur les deux systèmes
serveur1/serveur2 :
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 :
[email protected]:~# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
[email protected]:~#
Cela signifie qu'AoE a été construit en tant que module du noyau. Vérifions si le module est déjà chargé :
lsmod | grep aoe
Si vous ne recevez rien en retour, 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
[email protected]:~# lsmod | grep aoe
aoe 21380 0
[email protected]:~#
Pour que le module soit chargé automatiquement au démarrage du système, nous ajoutons le module aoe à /etc/modules :
vi /etc/modules
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. # Parameters can be specified after the module name. aoe loop |
3 Configuration de la cible (server2)
serveur2 :
Nous configurons d'abord la cible (serveur2) :
apt-get install vblade
Nous 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 périphériques RAID (par exemple /dev/md0) pour le stockage. Dans cet exemple, je vais créer un volume logique de 20 Go nommé storage1 dans le groupe de volumes vg0 :
lvcreate -L20G -n storage1 vg0
(Si vous souhaitez utiliser un fichier image, vous pouvez le créer comme suit :
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.
)
Maintenant, nous exportons notre périphérique de stockage comme suit :
vbladed 0 1 eth0 /dev/vg0/storage1
Le premier chiffre (0) est le numéro d'étagère (majeur), le second (1) le numéro d'emplacement (mineur), changez ces chiffres à votre convenance. Chaque appareil AoE est identifié par un couple majeur/mineur qui doit être unique (si vous exportez plusieurs appareils), avec majeur entre 0-65535 et mineur entre 0-255. La partie eth0 indique à vbladed quel périphérique Ethernet utiliser (si votre périphérique Ethernet est eth1, utilisez eth1 - vous pouvez en savoir plus sur vos périphériques Ethernet en exécutant
ifconfig
).
Pour démarrer l'exportation automatiquement chaque fois que vous démarrez la cible, ouvrez /etc/rc.local...
vi /etc/rc.local
... et ajoutez-y la ligne suivante (avant la ligne exit 0) :
[...] /usr/sbin/vbladed 0 1 eth0 /dev/vg0/storage1 [...] |
4 Configuration de l'initiateur (server1)
serveur1 :
Sur le serveur1, nous installons l'initiateur :
apt-get install aoetools
Nous vérifions maintenant quels périphériques de stockage AoE sont disponibles :
aoe-discover
La commande
aoe-stat
devrait maintenant afficher les périphériques de stockage :
[email protected]:~# aoe-stat
e0.1 21.474GB eth0 up
[email protected]:~#
À ce stade, nous avons un nouveau périphérique de bloc disponible sur la boîte client nommé /dev/etherd/e0.1. Si nous regardons l'arborescence /dev, un nouveau nœud apparaît :
ls -la /dev/etherd/
[email protected]:~# ls -la /dev/etherd/
total 0
drwxr-xr-x 2 root root 160 Mar 16 13:34 .
drwxr-xr-x 14 root root 3000 Mar 16 13:33 ..
c-w--w---- 1 root disk 152, 3 Mar 16 13:33 discover
brw-rw---- 1 root disk 152, 16 Mar 16 13:34 e0.1
cr--r----- 1 root disk 152, 2 Mar 16 13:33 err
c-w--w---- 1 root disk 152, 6 Mar 16 13:33 flush
c-w--w---- 1 root disk 152, 4 Mar 16 13:33 interfaces
c-w--w---- 1 root disk 152, 5 Mar 16 13:33 revalidate
[email protected]:~#
Dans la sortie de
fdisk -l
vous devriez maintenant également trouver le nouveau disque dur :
[email protected]:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00029d5c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3793 30461952 83 Linux
/dev/sda2 3793 3917 992257 5 Extended
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disk /dev/etherd/e0.1: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/etherd/e0.1 doesn't contain a valid partition table
[email protected]:~#
Pour utiliser cet appareil, nous devons le formater :
fdisk /dev/etherd/e0.1
[email protected] :~# fdisk /dev/etherd/e0.1
L'appareil ne contient ni une table de partition DOS valide, ni Sun, SGI ou OSF disklabel
Création d'une nouvelle étiquette de disque DOS avec identifiant de disque 0xa00b110d.
Les modifications resteront en mémoire uniquement, jusqu'à que vous décidiez de les écrire. le nombre de cylindres pour ce disque est défini sur 2 610.
Il n'y a rien de mal à cela, mais ceci est plus que 1024,
et pourrait dans certaines configurations causer des problèmes avec :
1) un logiciel qui s'exécute au démarrage (par exemple, les anciennes versions de LILO)
2) le démarrage et le partitionnement du logiciel à partir d'autres systèmes d'exploitation
(par exemple, DOS FDISK, OS/2 FDISK)
Attention : indicateur non valide 0x0000 de la table de partition 4 sera corrigée par w(rite)
Commande (m pour l'aide) : <-- n
Commande action
e étendu
p partition principale ( 1-4)
<-- p
Numéro de partition (1-4) : <-- 1
Premier cylindre (1-2610, 1 par défaut) :<-- E NTER
En utilisant la valeur par défaut 1
Dernier cylindre ou +taille ou +tailleM ou +tailleK (1-2610, 2610 par défaut) :<-- ENTER
En utilisant la valeur par défaut 2610
Commande (m pour l'aide) : <-- t
Partition sélectionnée 1
Code hexadécimal (tapez L pour répertorier les codes) : <-- 83
Commande (m for help): <-- w
La table de partition a été modifiée !
Appel ioctl() pour relire la table de partition .
Synchronisation des disques.
[ e-mail protégé] :~#
Ensuite, la sortie de
fdisk -l
devrait ressembler à ceci :
[email protected]:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00029d5c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3793 30461952 83 Linux
/dev/sda2 3793 3917 992257 5 Extended
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disk /dev/etherd/e0.1: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0cf58b15
Device Boot Start End Blocks Id System
/dev/etherd/e0.1p1 1 2610 20964793+ 83 Linux
[email protected]:~#
Maintenant, nous créons un système de fichiers sur /dev/etherd/e0.1p1...
mkfs.ext4 /dev/etherd/e0.1p1
... et montez-le à des fins de test :
mount /dev/etherd/e0.1p1 /mnt
Vous devriez maintenant voir le nouvel appareil dans les sorties de...
mount
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw)
[email protected]:~#
... et
df -h
[email protected]:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 806M 27G 3% /
tmpfs 249M 0 249M 0% /lib/init/rw
udev 244M 108K 244M 1% /dev
tmpfs 249M 0 249M 0% /dev/shm
/dev/etherd/e0.1p1 20G 172M 19G 1% /mnt
[email protected]:~#
Vous pouvez le démonter comme ceci :
umount /mnt
Pour que l'appareil soit monté automatiquement au démarrage, par ex. dans le répertoire /storage, on crée ce répertoire...
mkdir /storage
... et ajoutez la ligne suivante à /etc/fstab :
vi /etc/fstab
[...] /dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0 |
Cela seul n'est pas suffisant pour que le périphérique soit monté au démarrage, car les éléments AoE sont chargés après la lecture de /etc/fstab. Nous ouvrons donc /etc/rc.local...
vi /etc/rc.local
... et ajoutez-y 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, l'appareil doit être monté :
mount
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/etherd/e0.1p1 on /storage type ext4 (rw,_netdev)
[email protected]:~#
df -h
[email protected]:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 806M 27G 3% /
tmpfs 249M 0 249M 0% /lib/init/rw
udev 244M 108K 244M 1% /dev
tmpfs 249M 0 249M 0% /dev/shm
/dev/etherd/e0.1p1 20G 172M 19G 1% /storage
[email protected]:~#
5 liens
- Définition du protocole AoE :http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Debian :http://www.debian.org/