Ce guide explique comment configurer une cible AoE et un initiateur AoE (client), tous deux exécutant Ubuntu 12.10. 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.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
J'utilise ici deux serveurs Ubuntu 12.10 :
- 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 26960 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 :modules du noyau à charger au démarrage.## Ce fichier contient les noms des modules du noyau qui doivent être chargés# au démarrage temps, un par ligne. Les lignes commençant par "#" sont ignorées.looplprtcaoe |
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 stockage1 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) :
[...]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 :
découvrir aoe
La commande
stat-aoe
devrait maintenant afficher les périphériques de stockage :
[email protected] :~# aoe-stat
e0.1 21,474 Go 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 2012-10-01 16:24 .
drwxr-xr-x 16 root root 3800 2012-10-01 16:21 ..
c-w--w---- 1 disque racine 152, 3 2012-10-01 16:21 découvrir
brw-rw---- 1 disque racine 152, 16 2012-10-01 16:24 e0.1
cr--r----- 1 disque racine 152, 2 2012-10-01 16 :21 err
c-w--w---- 1 disque racine 152, 6 2012-10-01 16:21 flush
c-w--w---- 1 disque racine 152, 4 2012-10 -01 16:21 interfaces
c-w--w---- 1 disque racine 152, 5 2012-10-01 16:21 revalider
[email protected] :~#
Dans la sortie de
fdisk -l
vous devriez maintenant également trouver le nouveau disque dur :
[email protected] :~# fdisk -l
Disque /dev/sda : 32,2 Go, 32212254720 octets
255 têtes, 63 secteurs/piste, 3 916 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Identificateur de disque:0x00016BE9
Démarrage du périphérique Blocs de fin Blocs ID Système
/ dev / sda1 * 1 32 248832 83 Linux
La partition 1 ne se termine pas sur la limite du cylindre.
/ dev / sda2 32 3917 31205377 5 étendus
/ dev / sda5 32 3917 31205376 8e Linux LVM
disque /dev/Etherd/e0.1:21,5 gb, 21474836480 bocaux
255 têtes, 63 secteurs/piste, 2 610 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S ( minimum/optimal) : 512 octets / 512 octets
Identifiant de disque : 0x00000000
Di sk /dev/etherd/e0.1 ne contient pas une table de partition valide
[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'un nouveau DOS disklabel avec identifiant de disque 0x3093ae28.
Les modifications resteront en mémoire uniquement, jusqu'à que vous décidiez de les écrire.
Après cela, bien sûr, le contenu précédent ne sera pas récupérable.
Attention : indicateur non valide 0x0000 de la table de partition 4 sera corrigée par w(rite)
AVERTISSEMENT : le mode compatible DOS est obsolète. Il est fortement recommandé de
désactiver le mode (commande 'c') et changer les unités d'affichage en
secteurs (commande 'u').
Commande (m pour l'aide) :<-- n
Action de commande
e étendu
p partition principale (1-4)
<-- p
Numéro de partition (1-4) : <- - 1
Premier cylindre (1-2610, 1 par défaut) : <-- ENTER
En utilisant la valeur par défaut 1
Dernier cylindre, + cylindres ou +taille{K, M, G} (1 -2610, 2610 par défaut) : <-- ENTER
En utilisant la valeur par défaut 2610
Command (m for help) : <-- t
Partition sélectionnée 1
Hex code (tapez L pour répertorier les codes) : <-- 83
Commande (m pour l'aide) : <-- w
La table de partition a été modifiée !
Appeler ioctl() pour relire la table de partition.
Synchronisation des disques.
[email protected] :~#
Ensuite, la sortie de
fdisk -l
devrait ressembler à ceci :
[email protected] :~# fdisk -l
Disque /dev/sda : 32,2 Go, 32212254720 octets
255 têtes, 63 secteurs/piste, 3 916 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Identificateur de disque:0x00016BE9
Démarrage du périphérique Blocs de fin Blocs ID Système
/ dev / sda1 * 1 32 248832 83 Linux
La partition 1 ne se termine pas sur la limite du cylindre.
/ dev / sda2 32 3917 31205377 5 étendus
/ dev / sda5 32 3917 31205376 8e Linux LVM
disque /dev/Etherd/e0.1:21,5 gb, 21474836480 bocaux
255 têtes, 63 secteurs/piste, 2 610 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S ( minimum/optimal) : 512 octets / 512 octets
Identifiant de disque : 0x3093ae28
Démarrage de l'appareil Démarrer Fin Blocs Id Système
/dev/etherd/e0.1p1 1 2610 20964793+ 83 Linux
~# 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 :
monter /dev/etherd/e0.1p1 /mntVous devriez maintenant voir le nouvel appareil dans les sorties de...
monter[email protected] :~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec ,nosuid,nodev)
aucun sur /sys type sysfs (rw,noexec,nosuid,nodev)
aucun sur /sys/fs/fuse/connections type fusectl (rw)
aucun sur / sys/kernel/debug type debugfs (rw)
aucun sur /sys/kernel/security type securityfs (rw)
aucun sur /dev type devtmpfs (rw,mode=0755)
aucun sur /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
aucun sur /dev/shm type tmpfs (rw,nosuid,nodev)
aucun sur /var/run tapez tmpfs (rw,nosuid,mode=0755)
aucun sur /var/lock tapez tmpfs (rw,noexec,nosuid,nodev)
aucun sur /lib/init/rw tapez tmpfs (rw,nosuid ,mode=0755)
aucun sur /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 sur /boot type ext2 (rw)
/dev/etherd /e0.1p1 sur /mnt type ext4 (rw)
[email protected] :~#... et
df -h[email protected] :~# df -h
Système de fichiers Taille Utilisé Disponible Utilisation % Monté sur
/dev/mapper/server1-root
18G 838M 16G 5 % /
Aucun 243M 180K 242M 1% / dev
Aucun 247m 0 247m 0% / dev / shm
Aucun 247m 32k 247m 1% / var / run
Aucun 247m 0 247m 0% / var / Lock
Aucun 247m 0 247m 0% / lib / init / rw
Aucun 18G 838M 16G 5% / var / lib / ureadahead / debugfs
/ dev / sda1 228m 17m 199m 8% / démarrage
/dev/etherd/e0.1p1 20G 172M 19G 1 % /mnt
[email protected] :~#Vous pouvez le démonter comme ceci :
umount /mntPour que l'appareil soit monté automatiquement au démarrage, par ex. dans le répertoire /storage, on crée ce répertoire...
mkdir /stockage... 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-discoversleep 5mount -a[...] |
À des fins de test, vous pouvez maintenant redémarrer le système :
redémarrer
Après le redémarrage, l'appareil doit être monté :
monter
[email protected] :~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec ,nosuid,nodev)
aucun sur /sys type sysfs (rw,noexec,nosuid,nodev)
aucun sur /sys/fs/fuse/connections type fusectl (rw)
aucun sur / sys/kernel/debug type debugfs (rw)
aucun sur /sys/kernel/security type securityfs (rw)
aucun sur /dev type devtmpfs (rw,mode=0755)
aucun sur /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
aucun sur /dev/shm type tmpfs (rw,nosuid,nodev)
aucun sur /var/run tapez tmpfs (rw,nosuid,mode=0755)
aucun sur /var/lock tapez tmpfs (rw,noexec,nosuid,nodev)
aucun sur /lib/init/rw tapez tmpfs (rw,nosuid ,mode=0755)
aucun sur /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 sur /boot type ext2 (rw)
/dev/etherd /e0.1p1 sur /storage type ext4 (rw,_netdev)
[email protected] :~#
df -h
[email protected] :~# df -h
Système de fichiers Taille Utilisé Disponible Utilisation % Monté sur
/dev/mapper/server1-root
18G 838M 16G 5 % /
Aucun 243M 180K 242M 1% / dev
Aucun 247m 0 247m 0% / dev / shm
Aucun 247m 32k 247m 1% / var / run
Aucun 247m 0 247m 0% / var / Lock
Aucun 247m 0 247m 0% / lib / init / rw
Aucun 18G 838M 16G 5% / var / lib / ureadahead / debugfs
/ dev / sda1 228m 17m 199m 8% / démarrage
/dev/etherd/e0.1p1 20G 172M 19G 1 % /stockage
[email protected] :~#
5 liens
- Définition du protocole AoE :http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Ubuntu :http://www.ubuntu.com/