Penso che potresti essere in grado di realizzare ciò che desideri utilizzando i dispositivi a blocchi di rete (NBD). Guardando la pagina di wikipedia sull'argomento si parla di uno strumento chiamato nbd
. È composto da un componente client e server.
Esempio
In questo scenario sto configurando un CDROM sul mio laptop Fedora 19 (server) e lo sto condividendo con un sistema Ubuntu 12.10 (client).
installazione$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server
$ sudo apt-get install nbd-server nbd-client
condividere un CD Ora di nuovo sul server (Fedodra 19) faccio una cosa simile usando il suo gestore di pacchetti YUM. Una volta completato inserisco un CD ed eseguo questo comando per condividerlo come dispositivo a blocchi:
$ sudo nbd-server 2000 /dev/sr0
** (process:29516): WARNING **: Specifying an export on the command line is deprecated.
** (process:29516): WARNING **: Please use a configuration file instead.
$
Un rapido controllo per vedere se è in esecuzione:
$ ps -eaf | grep nbd
root 29517 1 0 12:02 ? 00:00:00 nbd-server 2000 /dev/sr0
root 29519 29071 0 12:02 pts/6 00:00:00 grep --color=auto nbd
Montaggio del CD
Ora torniamo al client Ubuntu, dobbiamo connetterci al nbd-server
usando nbd-client
così. NOTA: il nome del server nbd è greeneggs in questo esempio.
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(Su alcuni sistemi, ad esempio Fedora, è necessario modprobe nbd
prima.)
Possiamo confermare che ora c'è un dispositivo a blocchi sul sistema Ubuntu usando lsblk
:
$ sudo lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
sda1 8:1 0 243M 0 part /boot
sda2 8:2 0 1K 0 part
sda5 8:5 0 465.5G 0 part
ubuntu-root (dm-0) 252:0 0 461.7G 0 lvm /
ubuntu-swap_1 (dm-1) 252:1 0 3.8G 0 lvm [SWAP]
sr0 11:0 1 654.8M 0 rom
nbd0 43:0 0 643M 1 disk
nbd0p1 43:1 0 643M 1 part
E ora lo montiamo:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
ha funzionato? La suspense mi sta uccidendo e abbiamo il decollo:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
C'è il contenuto di un LiveCD di CentOS che ho montato nel laptop Fedora 19 e sono riuscito a montarlo come dispositivo a blocchi della rete su Ubuntu.
Un'alternativa a nbd
(se sei interessato) utilizza iSCSI. tgtd
può essere configurato per avere un /dev
dispositivo come archivio di supporto per un particolare IQN iSCSI.
Se sei su un sistema RHEL, devi solo installare scsi-target-utils
e quindi configurare/avviare tgtd
sul sistema sorgente. Configurazione di tgtd
può essere coinvolto, ma Red Hat fornisce molti esempi diversi per i vari scenari.
Ad esempio:
<target iqn.2008-09.com.example:server.target4>
direct-store /dev/sdb # Becomes LUN 1
direct-store /dev/sdc # Becomes LUN 2
direct-store /dev/sdd # Becomes LUN 3
write-cache off
vendor_id MyCompany Inc.
</target>
Per avviarlo su Fedora/RHEL:
# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target
Dovresti installare iscsi-initiator-utils
sul sistema client e usa iscsiadm
per inviare obiettivi quindi per "accedere" agli obiettivi enumerati. Ad esempio:
# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>
Gli iSCSI LUN verranno quindi presentati al sistema come normali dispositivi a blocchi. Su RHEL, puoi controllare il trasporto su cui sta arrivando un particolare dispositivo, puoi semplicemente fare un ls -l /dev/disk/by-path | grep iscsi
per vedere quale spazio di archiviazione sta arrivando su iSCSI. Il percorso elencherà anche l'IQN del target a cui hai effettuato l'accesso in precedenza.
Quando il dispositivo iscsi non è più necessario, è possibile rimuoverlo tramite:
# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
Ovviamente preferisci la soluzione SAN. Oltre ai già citati iSCSI e NBD, hai anche l'approccio AoE (ATA over ethernet).
Questo è molto facile da fare:
Sul lato di servizio devi
modprobe aoe
vbladed 0 0 eth0 /dev/sdc
Sul lato client
modprobe aoe
aoe-discover
aoe-stat
e0.0 1000.204GB eth0 1024 up
I tuoi dispositivi sono in
ls -l /dev/etherd/
c-w--w---- 1 root disk 152, 3 Mar 12 22:47 discover
brw-rw---- 1 root disk 152, 0 Mar 12 22:47 e0.0
brw-rw---- 1 root disk 152, 1 Mar 12 22:47 e0.0p1
cr--r----- 1 root disk 152, 2 Mar 12 22:47 err
c-w--w---- 1 root disk 152, 6 Mar 12 22:47 flush
c-w--w---- 1 root disk 152, 4 Mar 12 22:47 interfaces
c-w--w---- 1 root disk 152, 5 Mar 12 22:47 revalidate
Dove e0.0
è il tuo /dev/sdc
e e0.0.p1
è /dev/sdc1
dmesg
sul server:
[221384.454447] aoe: AoE v85 initialised.
dmesg
output sul client:
[ 1923.225832] aoe: AoE v85 initialised.
[ 1923.226379] aoe: e0.0: setting 1024 byte data frames
[ 1923.226910] aoe: 38607725d8b1 e0.0 v4014 has 1953525168 sectors
[ 1923.653820] etherd/e0.0: p1
Abbastanza facile.
Note aggiuntive
vbladed
fa parte del pacchettovblade
su Fedora e Ubuntu, probabilmente lo stesso anche in altre distribuzioni.aoe-discover
&aoe-stat
fanno parte del pacchettoaoetools
anche su Fedora e Ubuntu.- Il dispositivo viene visualizzato in
fdisk
come dispositivo a blocchi, ad esempio/dev/etherd/e0.0
. - La versione di
vblade
disponibile nei repository F19 e F20 è piuttosto datato, è la versione 14. La pagina del progetto ATAoE ha la versione 21 disponibile. È disponibile un RPM aggiornato per Fedora 19 x86_64 qui.