Como posso compartilhar uma unidade ótica de uma maneira que engane o cliente a pensar que é uma unidade local?

10

Estou na situação francamente ridícula em que minha área de trabalho tem duas unidades ópticas e minha central de mídia não tem nenhuma (nem espaço para uma). Antes de considerar algo tão extremo quanto comprar uma unidade óptica externa, gostaria de ver se há uma maneira de amarrar minhas unidades na rede.

Ambas as máquinas são Ubuntu e elas já possuem compartilhamento NFS para acessar a mídia da área de trabalho.

A razão pela qual estou perguntando (em vez de apenas exportar / media / cdrom) é que um compartilhamento NFS montado não se se parece com um dispositivo estilo CDROM para a máquina remota. Isso é importante para mim porque eu preciso que o XBMC reconheça a unidade como tal para que ela possa lidar com os discos de forma automática e apropriada.

Agora eu não sei o que faz uma unidade óptica parecer como uma unidade óptica para o Ubuntu. Se eu soubesse disso, provavelmente saberia o que precisava fazer. Eu estou supondo que há alguma ação udev quente lá em algum ponto.

Existe alguma maneira de compartilhar um dispositivo em nível de bloco (por exemplo, /dev/sr0 ), permitindo que ambos os computadores o montem separadamente ... Eu sinto que estou desmoronando na toca do coelho e posso ver tudo isso maciçamente soluções super projetadas como iSCSI e virtualização de passagem surgindo na minha frente ... Certamente há uma maneira simples de compartilhar alguns modos de unidade entre dois computadores Ubuntu!

    
por Oli 12.03.2014 / 15:10

2 respostas

9

Acho que você pode conseguir o que deseja usando dispositivos de bloco de rede (NBD). Analisando a página da Wikipédia sobre o assunto , mencionamos uma ferramenta chamada nbd . É composto por um componente de cliente e servidor.

Exemplo

Neste cenário, estou configurando um CDROM no meu laptop Fedora 19 (servidor) e estou compartilhando com um 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
compartilhando um CD

Agora, de volta ao servidor (Fedodra 19), faço uma coisa semelhante usando o gerenciador de pacotes YUM. Depois de concluído, insiro um CD e executo esse comando para compartilhá-lo como um dispositivo de bloco:

$ 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.
$

Uma verificação rápida para ver se está em execução:

$ 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
Montando o CD

Agora, de volta ao cliente Ubuntu, precisamos nos conectar ao nbd-server usando nbd-client da seguinte forma:

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

Podemos confirmar que agora há um dispositivo de bloco no 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 agora montamos:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
funcionou?

O suspense está me matando e nós temos decolagem:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Há o conteúdo de um LiveCD do CentOS que montei no laptop do Fedora 19 e consegui montá-lo como um dispositivo de bloco da rede no Ubuntu.

Reprodução Automática & amp; Automontagem?

Na configuração acima eu tive que montar manualmente o DVD.

Ao investigar a plausibilidade de se essa abordagem funcionaria com autoplaying e automounting, o autoplay do Ubuntu não funciona, mas o nbd-client e o nbd-server ficaram ativos quando ejetei o disco. Quando eu coloquei o DVD de volta, consegui rodar o comando mount no Ubuntu, o que remontou bem o DVD.

Então, eu diria que você poderia inserir uma regra UDEV no Ubuntu para detectar essa alteração e fazer a automontagem / reprodução automática automaticamente. Eu não vou experimentar tudo, mas não vejo nada que me leve a pensar que isso não funcionará.

    
por slm 12.03.2014 / 17:28
3

Este método também usa o NBD, mas usa a nova configuração de estilo. As únicas vantagens são que você não precisa iniciar o servidor manualmente e não recebe um aviso de reprovação feia.

Depois de instalar os pacotes nbd-server e nbd-client , continue a editar o arquivo de configuração no servidor ( /etc/nbd-server/config ) e verifique se ele se parece com algo assim:

[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

Observação: o rótulo [dvd] acima é um cabeçalho de seção e pode ser qualquer palavra que você queira colocar entre colchetes. É usado para identificar esse compartilhamento específico, portanto, certifique-se de usar um nome que seja fácil de usar e óbvio.

Depois de salvar as alterações no arquivo de configuração, inicie ou reinicie o nbd-server (exemplo de reinicialização):

sudo service nbd-server restart

Então, de volta na máquina cliente, conecte-se ao servidor usando o comando:

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

Observação: Substitua dvd pelo nome usado na configuração do servidor acima e hostname pelo nome do host da máquina do servidor.

Finalmente, é apenas uma questão de montar o novo dispositivo de bloco compartilhado:

sudo mount /dev/nbd0 /mnt/
    
por devius 10.11.2014 / 23:01