Questa guida spiega come impostare un target AoE e un iniziatore AoE (client), entrambi con Debian Squeeze. AoE sta per "ATA over Ethernet" ed è un protocollo SAN (Storage Area Network) che consente agli iniziatori AoE di utilizzare dispositivi di archiviazione sulla destinazione AoE (remota) utilizzando il normale cablaggio Ethernet. "Remote" in questo caso significa "all'interno della stessa LAN" perché AoE non è instradabile al di fuori di una LAN (questa è una grande differenza rispetto a iSCSI). Per l'iniziatore AoE, l'archiviazione remota appare come un normale disco rigido collegato localmente.
1 Nota preliminare
Sto usando due server Debian Squeeze qui:
- server1.example.com (iniziatore):indirizzo IP 192.168.0.100
- server2.example.com (Target):indirizzo IP 192.168.0.101
2 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:
[email protetta]:~# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
[e-mail protetta]:~#
Ciò significa che AoE è stato creato come modulo del kernel. Verifichiamo se il modulo è già caricato:
lsmod | grep aoe
Se non ricevi nulla in cambio, significa che non è caricato. In questo caso possiamo caricarlo come segue:
modprobe aoe
Controlliamo ancora se il modulo è caricato:
lsmod | grep aoe
[email protetta]:~# lsmod | grep aoe
aoe 21380 0
[email protetta]:~#
Per caricare automaticamente il modulo all'avvio del sistema, aggiungiamo il modulo aoe a /etc/modules:
vi /etc/modules
# /etc/modules:moduli del kernel da caricare all'avvio.## Questo file contiene i nomi dei moduli del kernel che devono essere caricati# all'avvio volta, uno per riga. Le righe che iniziano con "#" vengono ignorate.# I parametri possono essere specificati dopo il nome del modulo.aoeloop |
3 Impostazione del target (server2)
server2:
Per prima cosa impostiamo la destinazione (server2):
apt-get install vblade
Possiamo utilizzare volumi logici inutilizzati, file di immagine, dischi rigidi (es. /dev/sdb), partizioni di dischi rigidi (es. /dev/sdb1) o dispositivi RAID (es. /dev/md0) per l'archiviazione. In questo esempio creerò un volume logico di 20 GB denominato storage1 nel gruppo di volumi vg0:
lvcreate -L20G -n storage1 vg0
(Se vuoi usare un file immagine, puoi crearlo come segue:
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000
Questo crea il file immagine /storage/storage1.img con una dimensione di 20 GB.
)
Ora esportiamo il nostro dispositivo di archiviazione come segue:
vbladed 0 1 eth0 /dev/vg0/storage1
Il primo numero (0) è il numero dello scaffale (principale), 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 univoca (se si stanno esportando più dispositivi), con maggiore tra 0-65535 e minore tra 0-255. La parte eth0 dice a vbladed quale dispositivo ethernet usare (se il tuo dispositivo ethernet è eth1, usa eth1 - puoi scoprire i tuoi dispositivi ethernet eseguendo
ifconfig
).
Per avviare l'esportazione automaticamente ogni volta che avvii il target, apri /etc/rc.local...
vi /etc/rc.local
... e aggiungi la riga seguente (prima della riga 0 di uscita):
[...]/usr/sbin/vbladed 0 1 eth0 /dev/vg0/storage1[...] |
4 Configurazione dell'iniziatore (server1)
server1:
Sul server1, installiamo l'iniziatore:
apt-get install aoetools
Ora controlliamo quali dispositivi di archiviazione AoE sono disponibili:
aoe-scopri
Il comando
aoe-stat
ora dovrebbe mostrare i dispositivi di archiviazione:
[email protetta]:~# aoe-stat
e0.1 21.474 GB eth0 up
[email protetta]:~#
A questo punto abbiamo un nuovo dispositivo a blocchi disponibile sul box client chiamato /dev/etherd/e0.1. Se diamo un'occhiata all'albero /dev appare un nuovo nodo:
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 16 mar 13:33 ..
c-w--w---- 1 disco root 152, 3 16 mar 13:33 scopri
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 interfacce
c-w--w---- 1 root disco 152, 5 16 mar 13:33 riconvalida
[email protetta]:~#
Nell'output di
fdisk -l
ora dovresti trovare anche il nuovo disco rigido:
[email protected]:~# fdisk -l
Disco /dev/sda: 32,2 GB, 32212254720 byte
255 teste, 63 settori/traccia, 3916 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte
Dimensione del settore (logico/fisico): 512 byte / 512 byte
Dimensione I/O (minimo/ottimale): 512 byte / 512 byte
Identificatore per disco:0x00029d5c
Blocchi di avvio avvio del dispositivo Sistema ID
/dev /sda1*1 3793 30461952 83 Linux
/dev /sda2 3793 3917 992257 5 esteso
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disco /dev/etherd/e0.1: 21.5 GB, 21474836480 byte
10 6 settori/traccia br />Unità = cilindri di 16065 * 512 = 8225280 byte
Dimensione del settore (logico/fisico): 512 byte / 512 byte
Dimensione I/O (minimo/ottimale): 512 byte / 512 byte
Identificatore disco: 0x00000000
Disco /dev/etherd/e0.1 non contiene un val id tabella delle partizioni
[email protetta]:~#
Per utilizzare quel dispositivo, dobbiamo formattarlo:
fdisk /dev/etherd/e0.1
[email protetta]:~# fdisk /dev/etherd/e0.1
Il dispositivo non contiene né una tabella delle partizioni DOS valida, né un'etichetta disco Sun, SGI o OSF
Creazione di una nuova etichetta disco DOS con identificatore disco 0xa00b110d.
Le modifiche rimarranno solo in memoria, fino a quando non deciderai di scriverle.
In seguito, ovviamente, i contenuti precedenti non saranno recuperabili.
I numero di cilindri per questo disco è impostato su 2610.
Non c'è niente di viene eseguito al avvio (ad es., vecchie versioni di LILO)
2) avvio e partizionamento del software da altri OS
(ad es. DOS FDISK, OS/2 FDISK)
Avviso: flag 0x0000 non valido di la tabella delle partizioni 4 verrà corretta da w(rite)
Command (m for help): <-- n
Command action
e estesa
p partizione primaria ( 1-4)
<-- p
Numero partizione (1-4): <-- 1
Primo cilindro (1-2610, predefinito 1):<-- E NTER
Utilizzo del valore predefinito 1
Ultimo cilindro o +dimensione o +dimensioneM o +dimensioneK (1-2610, predefinito 2610):<-- ENTER
Utilizzo del valore predefinito 2610
Comando (m for guida): <-- t
Partizione 1 selezionata
Codice esadecimale (digitare L per elencare i codici): <-- 83
Comando (m per aiuto): <-- w
La tabella delle partizioni è stata alterata!
Chiamando ioctl() per rileggere la tabella delle partizioni.
Sincronizzazione dischi.
[ e-mail protetta]:~#
Successivamente, l'output di
fdisk -l
dovrebbe apparire come segue:
[email protected]:~# fdisk -l
Disco /dev/sda: 32,2 GB, 32212254720 byte
255 teste, 63 settori/traccia, 3916 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte
Dimensione del settore (logico/fisico): 512 byte / 512 byte
Dimensione I/O (minimo/ottimale): 512 byte / 512 byte
Identificatore per disco:0x00029d5c
Blocchi di avvio avvio del dispositivo Sistema ID
/dev /sda1*1 3793 30461952 83 Linux
/dev /sda2 3793 3917 992257 5 esteso
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disco /dev/etherd/e0.1: 21.5 GB, 21474836480 byte
10 6 settori/traccia br />Unità = cilindri di 16065 * 512 = 8225280 byte
Dimensione del settore (logico/fisico): 512 byte / 512 byte
Dimensione I/O (minimo/ottimale): 512 byte / 512 byte
Identificatore disco: 0x0cf58b15
Avvio del dispositivo Avvia End Blocchi Id System
/dev/etherd/e0.1p1 1 2610 20964793+ 83 Linux
[email protected]:~#
Ora creiamo un filesystem su /dev/etherd/e0.1p1...
mkfs.ext4 /dev/etherd/e0.1p1
... e montalo a scopo di test:
monta /dev/etherd/e0.1p1 /mnt
Ora dovresti vedere il nuovo dispositivo negli output di...
montare
[email protetta]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc su /proc tipo proc (rw,noexec,nosuid,nodev)
sysfs su /sys tipo sysfs (rw,noexec,nosuid,nodev)
udev su / dev tipo tmpfs (rw,mode=0755)
tmpfs su /dev/shm tipo tmpfs (rw,nosuid,nodev)
devpts su /dev/pts tipo devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw)
[email protected]:~#
... e
df -h; 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 protetta]:~#
Puoi smontarlo in questo modo:
smonta /mnt
Per avere il dispositivo montato automaticamente all'avvio, ad es. nella directory /storage, creiamo quella directory...
mkdir /archiviazione
... e aggiungi la seguente riga a /etc/fstab:
vi /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é il materiale AoE viene caricato dopo la lettura di /etc/fstab. Quindi apriamo /etc/rc.local...
vi /etc/rc.local
... e aggiungi le seguenti righe (prima della riga 0 di uscita):
[...]aoe-discoversleep 5mount -a[...] |
A scopo di test, ora puoi riavviare il sistema:
riavvio
Dopo il riavvio, il dispositivo dovrebbe essere montato:
montare
[email protetta]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc su /proc tipo proc (rw,noexec,nosuid,nodev)
sysfs su /sys tipo sysfs (rw,noexec,nosuid,nodev)
udev su / dev tipo tmpfs (rw,mode=0755)
tmpfs su /dev/shm tipo tmpfs (rw,nosuid,nodev)
devpts su /dev/pts tipo devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/etherd/e0.1p1 on /storage type ext4 (rw,_netdev)
[email protected]:~#
df -h; lib/init/rw
UDEV 244M 108K 244m 1%/dev
tmpfs 249m 0 249m 0%/dev/shm
/dev/etherd/e0.1p1 20g 172m 19g 1%/archiviazione/archiviazione
[email protetta]:~#
5 link
- Definizione del protocollo AoE:http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Debian:http://www.debian.org/