Questa guida spiega come impostare un target AoE e un iniziatore AoE (client), entrambi con Ubuntu 12.10. 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.
Non garantisco che questo funzionerà per te!
1 Nota preliminare
Sto usando due server Ubuntu 12.10 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 26960 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.looplprtcaoe |
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):
[...]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 2012-10-01 16:24 .
drwxr-xr-x 16 root root 3800 2012-10-01 16:21 ..
c-w--w---- 1 disco root 152, 3 2012-10-01 16:21 scopri
brw-rw---- 1 disco di root 152, 16 2012-10-01 16:24 e0.1
cr--r----- 1 disco di root 152, 2 2012-10-01 16:21 err
c-w--w---- 1 disco di root 152, 6 2012-10-01 16:21 flush
c-w--w---- 1 disco di root 152, 4 2012-10 -01 16:21 interfacce
c-w--w---- 1 disco di root 152, 5 2012-10-01 16:21 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 del disco:0x00016be9
Blocchi di avvio avvio del dispositivo Sistema ID
/dev /sda1*1 32 248832 83 linux
partizione 1 non termina sul limite del cilindro.
/dev/sda2 32 3917 31205377 5 esteso
/dev/sda5 32 3917 31205376 8e linux lvm
disk /dev/etherd/e0.1:21,5 gb, 21474836480 bytes
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
Di sk /dev/etherd/e0.1 non contiene una tabella delle partizioni valida
[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 0x3093ae28.
Le modifiche rimarranno solo in memoria, fino a quando non deciderai di scriverle.
Dopo ciò, ovviamente, il contenuto precedente non sarà recuperabile.
Attenzione:flag 0x0000 non valido della tabella delle partizioni 4 verrà corretto da w(rite)
AVVERTENZA: la modalità compatibile con DOS è deprecata. È vivamente consigliato di
disattivare la modalità (comando 'c') e cambiare unità di visualizzazione in
settori (comando 'u').
Comando (m per aiuto):<-- n
Comando azione
e esteso
p partizione primaria (1-4)
<-- p
Numero partizione (1-4): <- - 1
Primo cilindro (1-2610, predefinito 1): <-- ENTER
Utilizzo del valore predefinito 1
Ultimo cilindro, +cilindri o +dimensione{K,M,G} (1 -2610, predefinito 2610): <-- ENTER
Utilizzo del valore predefinito 2610
Comando (m for guida): <-- t
Partizione 1 selezionata
Esadecimale code (digitare L per elencare i codici): <-- 83
Command (m for help): <-- w
La tabella delle partizioni è stata alterata!
Chiamando ioctl() per rileggere la tabella delle partizioni.
Sincronizzazione dischi.
[email 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 del disco:0x00016be9
Blocchi di avvio avvio del dispositivo Sistema ID
/dev /sda1*1 32 248832 83 linux
partizione 1 non termina sul limite del cilindro.
/dev/sda2 32 3917 31205377 5 esteso
/dev/sda5 32 3917 31205376 8e linux lvm
disk /dev/etherd/e0.1:21,5 gb, 21474836480 bytes
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: 0x3093ae28
Dispositivo Avvio Inizio Fine Blocchi Id Sistema
/dev/etherd/e0.1p1 1 2610 20964793+ 83 protetto
]~ 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 /mntOra dovresti vedere il nuovo dispositivo negli output di...
montare[email protetta]:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec ,nosuid,nodev)
none su /sys tipo sysfs (rw,noexec,nosuid,nodev)
none su /sys/fs/fuse/connections tipo fusectl (rw)
none su / sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts tipo devpts (rw,noexec,nosuid,gid=5,mode=0620)
none su /dev/shm tipo tmpfs (rw,nosuid,nodev)
none su /var/run digita tmpfs (rw,nosuid,mode=0755)
none su /var/lock digita tmpfs (rw,noexec,nosuid,nodev)
none su /lib/init/rw digita tmpfs (rw,nosuid ,mode=0755)
none su /var/lib/ureadahead/debugfs tipo debugfs (rw,relatime)
/dev/sda1 su /boot tipo ext2 (rw)
/dev/etherd /e0.1p1 su /mnt digita ext4 (rw)
[email protetta]:~#... e
df -h[email protected]:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 838M 16G 18G 838M 16G 5% /<> Nessuno 243M 180K 242M 1%/Dev
Nessuno 247m 0 247m 0%/Dev/Shm
Nessuno 247M 32K 247M 1%/var/run
Nessuno 247m 0 247m 0%/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var Lock
Nessuno 247m 0 247m 0%/lib/init/rw
Nessuno 18g 838m 16g 5%/var/lib/ureadahead/debugfs
/dev/sda1 228m 17m 199m 8%/boot
/dev/etherd/e0.1p1 20G 172M 19G 1% /mnt
[email protetta]:~#Puoi smontarlo in questo modo:
smonta /mntPer 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/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec ,nosuid,nodev)
none su /sys tipo sysfs (rw,noexec,nosuid,nodev)
none su /sys/fs/fuse/connections tipo fusectl (rw)
none su / sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts tipo devpts (rw,noexec,nosuid,gid=5,mode=0620)
none su /dev/shm tipo tmpfs (rw,nosuid,nodev)
none su /var/run digita tmpfs (rw,nosuid,mode=0755)
none su /var/lock digita tmpfs (rw,noexec,nosuid,nodev)
none su /lib/init/rw digita tmpfs (rw,nosuid ,mode=0755)
none su /var/lib/ureadahead/debugfs tipo debugfs (rw,relatime)
/dev/sda1 su /boot tipo ext2 (rw)
/dev/etherd /e0.1p1 su /tipo di archiviazione ext4 (rw,_netdev)
[email protetta]:~#
df -h
[email protected]:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 838M 16G 18G 838M 16G 5% /<> Nessuno 243M 180K 242M 1%/Dev
Nessuno 247m 0 247m 0%/Dev/Shm
Nessuno 247M 32K 247M 1%/var/run
Nessuno 247m 0 247m 0%/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var/var Lock
Nessuno 247m 0 247m 0%/lib/init/rw
Nessuno 18g 838m 16g 5%/var/lib/ureadahead/debugfs
/dev/sda1 228m 17m 199m 8%/boot
/dev/etherd/e0.1p1 20G 172M 19G 1% /archiviazione
[email protetta]:~#
5 link
- Definizione del protocollo AoE:http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Ubuntu:http://www.ubuntu.com/