GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso montare un dispositivo a blocchi da un computer a un altro tramite la rete come dispositivo a blocchi?

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 pacchetto vblade su Fedora e Ubuntu, probabilmente lo stesso anche in altre distribuzioni.
  • aoe-discover &aoe-stat fanno parte del pacchetto aoetools 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.

Linux
  1. Come rispecchiare lo Stdout di un terminale su un altro?

  2. Come spostare i file da un account utente a un altro sullo stesso computer?

  3. Come copiare una tabella da un database mysql a un altro database mysql

  4. Come posso eseguire il codice PHP dalla riga di comando?

  5. Come copiare i primi 10 file più recenti da una directory all'altra?

Come copiare un file da un'altra directory a quella corrente?

Come posso ottenere la lunghezza di un file video dalla console?

Come posso controllare l'ordine delle interfacce di rete?

Come posso cambiare il dispositivo di rete ens33 predefinito in vecchio eth0 su Fedora 19?

Come rimuovo il dispositivo cache da bcache?

Come posso elencare gli attributi utente di Active Directory da un computer Linux?