Come posso condividere un'unità ottica in un modo che induce il client a pensare che sia un'unità locale?


10

Sono nella situazione francamente ridicola in cui il mio desktop ha due unità ottiche e il mio media center non ne ha (né spazio per una). Prima di considerare qualcosa di estremo come l'acquisto di un'unità ottica esterna, vorrei vedere se esiste un modo per collegare le mie unità attraverso la rete.

Entrambe le macchine sono Ubuntu e dispongono già della condivisione NFS per accedere ai media dal desktop.

Il motivo per cui sto chiedendo (piuttosto che semplicemente esportare / media / cdrom) è che una condivisione NFS montata non assomiglia a un dispositivo in stile CD-ROM sul computer remoto. Questo è significativo per me perché ho bisogno che XBMC riconosca l'unità come tale per poter gestire i dischi automaticamente e in modo appropriato.

Ora io non so che cosa rende un drive ottico sguardo come un'unità ottica a Ubuntu. Se lo sapessi, probabilmente saprei cosa avrei dovuto fare. Immagino che ci sia qualche udevazione piccante lì dentro ad un certo punto.

Esiste un modo per condividere un dispositivo a livello di blocco (ad es. /dev/sr0) In modo da consentire a entrambi i computer di montarlo separatamente ... Mi sento come se stessi precipitando nella tana del coniglio e posso vedere tutte queste soluzioni massicciamente ingegnerizzate come iSCSI e la virtualizzazione passthrough spuntano davanti a me ... Sicuramente c'è un modo semplice di condividere alcune modalità di guida tra due computer Ubuntu!


Non so se questo sia sufficiente: thegeekstuff.com/2009/02/… --- Non so se esporta lo speciale ioctlnecessario per il DVD. L'ho usato anni fa per una cattiva idea di scambiare su rete, e poi ho dimenticato fino ad ora ... (collegamento migliore: linux-mag.com/id/7118 )
Rmano

I 2 metodi che ho usato con successo per fare cose simili sono usare NFS e Samba, ma dato il tuo rappresentante suppongo che tu sia a conoscenza di NFS di sicuro, e possibilmente farlo tramite Samba. LMK se hai bisogno di più aiuto con esso.
slm

@slm Sì, c'è già NFS tra i due computer. Ho aggiunto il CD /media/cdroma nfs e l'ho montato all'altra estremità come /media/cdrom(e posso vedere i file) ma XBMC non sta rilevando un cambio di media (non pensa che il mountpoint sia un DVD). Sto facendo qualcosa di stupido?
Oli

@Oli - OK, guarda la mia A e fammi sapere se è quello che stai cercando. Per inciso, l'altro metodo che ho usato è quello di creare un ISO del DVD, condividerlo su NFS e quindi mount -o looplocalmente su altri computer.
slm

Risposte:


9

Penso che potresti essere in grado di realizzare ciò che desideri utilizzando i dispositivi di blocco 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 installando un CD-ROM 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 un 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 di nuovo sul client Ubuntu dobbiamo collegarci nbd-serverall'utilizzo in questo nbd-clientmodo:

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

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 sul laptop Fedora 19 e che è stato in grado di montare come dispositivo a blocchi della rete su Ubuntu.

Riproduzione automatica e montaggio automatico?

Nella configurazione sopra ho dovuto montare manualmente il DVD.

Nel corso dell'esame della plausibilità di se questo approccio potrebbe funzionare con riproduzione automatica e automount, fuori dalla scatola, autoplay di Ubuntu non funziona, ma la nbd-cliente nbd-serverrimasto in piedi quando ho espulso il disco. Quando ho rimesso il DVD, sono stato in grado di eseguire il mountcomando su Ubuntu, che ha rimontato bene il DVD.

Quindi suppongo che potresti applicare una regola UDEV su Ubuntu per rilevare questa modifica e eseguire automaticamente il montaggio automatico / autoplay. Non lo proverò, ma non vedo nulla che mi induca a pensare che non funzionerà.


1
Istruzioni eccellenti! Non è perfetto: il mio software può ancora dire che non è un'unità disco reale. Immagino che ioctlnon venga gestito alla perfezione. Ma sono stato in grado di farlo funzionare su due macchine archlinux con zero singhiozzi! (Archlinux ha installato client e server insieme come 'nbd'.)
Espiazione limitata il

3

Questo metodo utilizza anche NBD ma utilizza invece la nuova configurazione di stile. Gli unici vantaggi sono che non è necessario avviare manualmente il server e non si riceve un brutto avviso di deprecazione.

Dopo aver installato i pacchetti nbd-servere nbd-client, procedere con la modifica del file di configurazione sul server ( /etc/nbd-server/config) e assicurarsi che assomigli a questo:

[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
    user = nbd
    group = cdrom
    includedir = /etc/nbd-server/conf.d
    allowlist = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.

[dvd]
    exportname = /dev/sr0
    readonly = true

Nota: l' [dvd]etichetta sopra è un'intestazione di sezione e può essere qualsiasi parola che si desidera racchiusa tra parentesi quadre. Viene utilizzato per identificare quella particolare condivisione, quindi assicurati di utilizzare un nome facile da usare e ovvio.

Dopo aver salvato le modifiche nel file di configurazione, avviare o riavviare il server nbd (esempio di riavvio):

sudo service nbd-server restart

Quindi, di nuovo sul computer client connettersi al server utilizzando il comando:

sudo nbd-client -N dvd hostname /dev/nbd0

Nota: sostituire dvdcon il nome utilizzato nella configurazione del server sopra e hostnamecon il nome host della macchina server.

Infine, è solo questione di montare il nuovo dispositivo a blocchi condivisi:

sudo mount /dev/nbd0 /mnt/

Se continui a ricevere Negotiation: ..Error: Server closed connection Exiting.commenti, commenta entrambi usere le grouprighe /etc/nbd-server/config. Questo fa correre nbd-serveralla radice chi ha accesso al tuo/dev/sr0
Petr Újezdský,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.