Servir arquivos via USB

12

Gostaria de poder servir uma seção do sistema de arquivos da minha caixa via USB para outro computador. Por exemplo, se os arquivos estiverem na caixa A e eu estiver lendo na caixa B, então B montaria A, veria esses arquivos e os montaria como um dispositivo de sistema de arquivos (por exemplo, como um pen drive).

Idealmente, a solução funcionaria para qualquer distribuição Linux, mas provavelmente executarei isso nas variantes do Debian.

Entre em contato se precisar de mais informações. Felicidades.

Sam Bisbee
fonte
4
Você não pode simplesmente conectar dois computadores com um cabo USB - o protocolo elétrico USB não é simétrico e requer um computador em uma extremidade e um dispositivo periférico na outra extremidade (é por isso que os plugues não são os mesmos). Você já tem um gadget de hardware específico que deseja usar? Caso contrário, a Ethernet (ou Firewire) seria melhor adaptada para criar uma rede entre os dois computadores.
Gilles 'SO- stop being evil' em
2
@ Gilles - Obrigado pela resposta. Pela sua resposta, acho que minha pergunta é realmente como fazer meu computador parecer e / ou agir como um dispositivo periférico através de sua conexão / hub USB. O que separa um dispositivo periférico e uma máquina host? Felicidades.
Sam Bisbee

Respostas:

11

A partir das informações que você forneceu, suponho que:

  1. Você tem um dispositivo de caixa preta com o qual você pode se comunicar apenas conectando um dispositivo de armazenamento em massa USB.
  2. Conectar e desconectar fisicamente uma unidade USB não é aceitável; você não terá acesso físico após a implantação.

Se qualquer uma dessas suposições for falsa, você terá mais facilidade.

O que você procura é uma maneira de fazer com que um computador apareça como um dispositivo de armazenamento USB. Em princípio, isso não deve exigir muita eletrônica - acho que o gadget certo pode ser produzido em massa por não mais do que alguns dólares mais frete. Mas não consigo encontrar uma referência ao gadget certo existente.

Simplesmente usar um cabo USB de computador para computador não funciona: eles simulam uma rede Ethernet e a caixa preta não fala Ethernet. E os conversores de armazenamento em USB para LAN não ajudam, eles seguem o caminho errado.

  1. Você pode projetar um braço de robô que desconecte um pendrive da caixa preta e o conecte a um computador. Agora que a sugestão óbvia, porém impraticável, foi feita ...

  2. Você poderia projetar o gadget e escrever um driver para ele. Mas isso pode estar fora da sua faixa de preço, especialmente se você não precisar de milhões de unidades.

  3. Pode haver um dispositivo NAS sofisticado que pode conversar com vários computadores por iSCSI e USB (essas duas últimas palavras são a parte difícil).

  4. Alguns telefones celulares e PDAs podem funcionar como um dispositivo de armazenamento USB e, além disso, possuem uma conexão GSM, wifi ou Ethernet. Mas eles costumam funcionar como dispositivos de armazenamento apenas quando desligados, então não sei se existe um que possa ser usado como ponte ou servidor.

  5. Aqui está uma discussão sobre um requisito semelhante. A única solução possível sugerida é essa ponte de armazenamento USB para wifi , que parece ser adequada - mas é cara.

  6. Existem comutadores USB (também conhecidos como hubs de compartilhamento) que permitem compartilhar um dispositivo USB entre dois computadores. Você pode usar um para compartilhar um dispositivo de armazenamento entre a caixa preta e um computador. O problema é que eles geralmente exigem que o usuário pressione um botão para alternar entre os dois dispositivos - mas se você encontrar um em que o switch possa ser controlado remotamente, você terá uma solução.

Gilles 'SO- parar de ser mau'
fonte
Obrigado por sua resposta muito atenciosa Gilles. Você está correto em suas suposições. A ponte móvel / PDA é uma ideia muito legal, na qual terei que pensar um pouco mais. As outras idéias, que parecem ser principalmente da LAN ou do robô, estão fora de questão porque não há LAN no ambiente. Vou tentar reunir alguns POCs e reportarei em um dia ou dois. Obrigado novamente!
Sam Bisbee
2

Acho que isso pode ser conseguido com um cabo USB host a host e o driver usbnet do Linux. A compatibilidade do hardware e os detalhes sobre como configurá-lo no Linux são fornecidos em: http://www.linux-usb.org/usbnet/

Riccardo Murri
fonte
3
Isso é Ethernet sobre USB, o que é bom se o dispositivo suportar ... mas tenho a impressão de que não.
Gilles 'SO- stop be evil'
@ Gilles - Você está correto, não acho que a caixa preta fale Ethernet. Dito isto, a caixa preta ainda pode funcionar e funcionar um pouco de mágica se simplesmente detectar que há uma conexão USB (via cabo A-a-A). Vai descobrir em um dia ou dois. Felicidades.
Sam Bisbee
Bem, acho que pelo menos os dispositivos listados na página do driver deve apoiá-lo ...
Riccardo Murri
-1

Realmente não vejo como o USB se encaixa aqui? Por que você não usa SAMBA ou NFS para compartilhar os arquivos entre essas máquinas? Talvez isso não funcione por algum motivo, então você provavelmente deve adicionar um pouco mais de explicação ...

tante
fonte
Esses protocolos não funcionam, porque a máquina do leitor não está ativada para rede. O único ponto de E / S que eu tenho é o USB, do qual ele assiste e lê os arquivos. No ambiente final, sem teste, não poderei controlar a máquina do leitor (eu nem conheço o software), mas serão necessários meus arquivos. Obrigado!
Sam Bisbee
-1

Mesmo se você resolver problemas específicos de USB, como fazer um host USB parecer um dispositivo USB, terá problemas para montar o sistema de arquivos em dois dispositivos diferentes ao mesmo tempo.

Se a Caixa A tiver uma unidade (digamos / dev / sdb1) e estiver montada e usando os arquivos em / dev / sdb1, o que acontece quando as montagens da Caixa B desejam acessar esses arquivos? No nível mais baixo, o USB vai querer lidar com um dispositivo, não com um sistema de arquivos.

kbyrd
fonte
3
Se o problema do hardware for resolvido, provavelmente há uma maneira de colocar um bloqueio de acesso para que apenas um lado possa escrever de cada vez e que os acessos de leitura tenham uma visão consistente. Algumas soluções permitirão que apenas um computador acesse o armazenamento de qualquer maneira. Então, sim, isso é uma preocupação, mas não uma questão esmagadora.
Gilles 'SO- stop be evil'
Vai ser muito difícil fazer isso sem montar e desmontar o sistema de arquivos na Caixa A enquanto o acessa na Caixa B (e vice-versa). A maioria dos sistemas de arquivos normais (sem reconhecimento de cluster) tem todo o direito de supor que os bits no disco que montaram não mudam embaixo deles. Um monte de estruturas na memória ficará fora de sincronia. Você quer necessidade de montar / desmontar quando se alterna entre A e B, ou obter a cooperação de (ou seja, escrever um novo sistema de arquivos) o driver sistema de arquivos em caixas A e B.
kbyrd