Creo que podría lograr lo que desea utilizando dispositivos de bloque de red (NBD). Mirando la página de wikipedia sobre el tema, se menciona una herramienta llamada nbd
. Se compone de un componente de cliente y servidor.
Ejemplo
En este escenario, estoy configurando un CDROM en mi computadora portátil Fedora 19 (servidor) y lo estoy compartiendo con un sistema Ubuntu 12.10 (cliente).
instalando$ 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
compartir un CD Ahora de vuelta en el servidor (Fedodra 19) hago algo similar usando su administrador de paquetes YUM. Una vez completado, introduzco un CD y ejecuto este comando para compartirlo como un dispositivo de bloque:
$ 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.
$
Una comprobación rápida para ver si se está ejecutando:
$ 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
Montar el CD
Ahora, de vuelta en el cliente de Ubuntu, necesitamos conectarnos al nbd-server
usando nbd-client
al igual que.
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(En algunos sistemas, por ejemplo, Fedora, uno tiene que modprobe nbd
primero.)
Podemos confirmar que ahora hay un dispositivo de bloqueo en el 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
Y ahora lo montamos:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
¿funcionó? El suspenso me está matando y tenemos despegue:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
Ahí está el contenido de un LiveCD de CentOS que monté en la computadora portátil Fedora 19 y pude montarlo como un dispositivo de bloque de la red en Ubuntu.
Una alternativa a nbd
(si está interesado) está usando iSCSI. tgtd
se puede configurar para tener un /dev
dispositivo como su almacenamiento de respaldo para un iSCSI IQN en particular.
Si está en un sistema RHEL, solo necesita instalar scsi-target-utils
y luego configurar/iniciar tgtd
en el sistema fuente. Configuración de tgtd
puede involucrarse, pero Red Hat proporciona muchos ejemplos diferentes para los distintos escenarios.
Por ejemplo:
<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>
Para iniciarlo en Fedora/RHEL:
# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target
Instalarías iscsi-initiator-utils
en el sistema cliente y use iscsiadm
para enviar objetivos y luego "iniciar sesión" en los objetivos enumerados. Por ejemplo:
# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>
Luego, los iSCSI LUN se presentarán al sistema como dispositivos de bloque regulares. En RHEL, puede verificar el transporte por el que viene un dispositivo en particular, simplemente puede hacer un ls -l /dev/disk/by-path | grep iscsi
para ver qué almacenamiento viene a través de iSCSI. La ruta también mostrará el IQN del objetivo que inició sesión anteriormente.
Cuando ya no se necesita el dispositivo iscsi, se puede eliminar a través de:
# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
Obviamente, prefiere la solución SAN. Además de los ya mencionados iSCSI y NBD, también tiene el enfoque AoE (ATA sobre Ethernet).
Esto es muy fácil de hacer:
En el lado de la porción, debe
modprobe aoe
vbladed 0 0 eth0 /dev/sdc
Del lado del cliente
modprobe aoe
aoe-discover
aoe-stat
e0.0 1000.204GB eth0 1024 up
Tus dispositivos están en
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
Donde e0.0
es tu /dev/sdc
y e0.0.p1
es /dev/sdc1
dmesg
en el servidor:
[221384.454447] aoe: AoE v85 initialised.
dmesg
salida en el cliente:
[ 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
Bastante fácil.
Notas adicionales
vbladed
es parte del paquetevblade
en Fedora y Ubuntu, probablemente también en otras distribuciones.aoe-discover
&aoe-stat
forman parte del paqueteaoetools
en Fedora y Ubuntu también.- El dispositivo aparece en
fdisk
como un dispositivo de bloque, por ejemplo,/dev/etherd/e0.0
. - La versión de
vblade
que está disponible en los repositorios F19 y F20 está bastante anticuado, es la versión 14. La página del proyecto ATAoE tiene la versión 21 disponible. Hay un RPM actualizado disponible para Fedora 19 x86_64 aquí.