Sei que isso parece estranho, mas tenho vários pen drives USB de 64 GB e preciso armazenar um arquivo de 100 GB, o que excede a capacidade de armazenamento de um único pen drive USB. Existe uma maneira de combinar esses dois pen drives USB em uma única partição lógica que apareceria como um disco maior?
Observe que estou usando o Debian Linux em vez do Windows.
Sempre trabalharei com os dois pen drives conectados ao meu laptop e não acessarei o arquivo com apenas um USB conectado.
Para esclarecer minha pergunta, deixe-me dar um exemplo. Por exemplo, tenho um arquivo que contém os dados do seguinte:
1234567890
, e eu gostaria de dividir o arquivo para 12345
e 67890
se cada pen drive USB puder conter apenas 5 caracteres de dados. Mas o arquivo só é acessível se 2 pen drives USB forem conectados simultaneamente.
O que você quer alcançar pode ser feito dividindo um arquivo em partes menores. Depende se você precisa de acesso direto ao seu arquivo de 100 GB ou se ele é somente para fins de arquivamento. Se for o último, essa abordagem pode ser útil.
Neste exemplo, estou usando o 7-Zip para criar um
tar
arquivo dividido em pedaços de 100 MB:Isso também funciona para outros formatos de arquivo, como
zip
ou7z
.Aqui eu dividi some_large_file.iso (1,04 GB) em pedaços de 100 MB:
No seu caso, você dividiria seu arquivo em unidades de 64 GB ( 64G ). Dependendo do tamanho real dos seus pendrives, talvez seja necessário reduzir um pouco esse tamanho.
Se "partição lógica que pareceria um disco maior" não for um requisito rigoroso, você pode usar o Btrfs.
Primeiro decida se você quer comprometer pendrives USB inteiros para o sistema de arquivos que você vai criar, ou se você quer criar uma tabela de partição em cada um. O último método é mais canônico , o primeiro método é mais simples.
A maioria dos comandos nesta resposta precisa de acesso root. Para ser breve, não incluo
sudo
explicitamente nos comandos. Usesudo
onde necessário.Vamos supor que os dispositivos que você deseja usar sejam
/dev/sdx
e/dev/sdy
. Por precaução, executewipefs -a /dev/sdx /dev/sdy
, para que os dispositivos pareçam limpos.Se você quiser usar partições em vez de dispositivos inteiros, crie uma partição grande por dispositivo (com
fdisk
,gdisk
ou uma ferramenta similar). Se a ferramenta de sua escolha perguntar se deve criar um novo sistema de arquivos, recuse. Se a ferramenta encontrar uma assinatura antiga e perguntar se deve apagá-la, afirme. Depois de criar partições (digamos/dev/sdx1
e/dev/sdy1
), apenas no caso de você poder executarwipefs -a /dev/sdx1 /dev/sdy1
, para que elas pareçam limpas com certeza.Agora crie um Btrfs nos dispositivos. Ele será
ou
dependendo se você deseja usar todos os dispositivos ou as partições.
Isso não criará uma "partição lógica que apareceria como um disco maior"; quero dizer, não aparecerá nenhuma que
/dev/something
você possa acessar no nível de bloco. Ainda assim, um sistema de arquivos maior será criado e estará pronto para ser montado.Para montar o sistema de arquivos, monte qualquer um dos seus dispositivos, não importa qual. Se o kernel souber quais outros dispositivos pertencem ao mesmo sistema de arquivos, ele os usará corretamente. Se algum dos dispositivos estiver faltando (realmente faltando ou "perdido" pelo kernel), o kernel não permitirá que você monte o sistema de arquivos. Logo após criar o sistema de arquivos, o kernel deve saber os dispositivos e a montagem deve funcionar diretamente. Após uma reinicialização ou após (re)conectar o(s) dispositivo(s) ao mesmo ou a outro Linux, você pode precisar executar
btrfs device scan
primeiro, para fazer o kernel examinar todos os dispositivos e aprender o que Btrfs está onde. Não há mal nenhum em executar,btrfs device scan
mesmo que o kernel já saiba; então, em caso de dúvida, apenas execute.É assim que você monta:
onde
sd…
é um dos dispositivos que pertencem ao sistema de arquivos. No nosso exemplo, pode sersdx
orsdy
(se o sistema de arquivos estiver nesses dispositivos inteiros), orsdx1
orsdy1
(se o sistema de arquivos estiver dentro dessas partições).Você desmonta da maneira mais regular:
Notas:
Para armazenar arquivos ainda maiores, você pode usar três ou mais dispositivos
mkfs.btrfs
em primeiro lugar; ou pode adicionar um dispositivo ao Btrfs mais tarde combtrfs device add …
(vejaman 8 btrfs-device
).Você pode usar dispositivos inteiros, partições e/ou até mesmo arquivos regulares* como "dispositivos" comprometidos com Btrfs. Você pode misturar esses tipos.
* No caso de arquivos regulares, você precisa criar dispositivos de loop (com
losetup
) antes debtrfs device scan
.O comentário que diz "pen drives USB são notoriamente não confiáveis e você estará dobrando a chance de algo dar errado" está basicamente certo. Estou lhe dando uma maneira de fazer o que você quer porque é possível. Pessoalmente, eu usaria Btrfs em vários pen drives USB apenas para armazenamento de curto prazo (ad hoc) de dados descartáveis.
Use
split
para dividir os arquivos:Dará a você
filename01
efilename02
. Para restaurar o original basta fazerResumi as respostas e comentários, e cheguei a 2 soluções principais. A primeira solução é a mais segura, mas é meio complexa, a terceira, no entanto, se apega à questão da origem:
Solução 1: Criando um volume lógico LVM em várias unidades flash
Obrigado @GlennWillen pelo comentário sobre o link e o lembrete.
Nota: As etapas a seguir foram copiadas do site
Etapa 1 – Crie uma partição em cada uma das unidades flash USB
Antes de começar, lembre-se de conectar todos os quatro USBs
Etapa 2 – Crie os volumes físicos (PVs) do LVM
Assim que os drives estiverem prontos, criaremos os PVs nos drives flash USB. Há um mapeamento 1:1 entre os PVs e as partições.
Como cada pen drive USB foi configurado para ter uma partição que abrange todo o disco, nenhum dispositivo de partição (por exemplo, /dev/sdb1) aparecerá. Podemos então criar os PVs no próprio dispositivo “raw”:
Etapa 3 – Crie o Grupo de Volume LVM (VG) usando os PVs
Nesta etapa, agruparemos os PVs em um VG. Esta camada é importante, pois abstrai os discos físicos (representados por seus PVs correspondentes), permitindo alguns dos principais benefícios do uso do LVM, como redimensionamento adicionando/removendo discos físicos enquanto o volume está em uso.
Etapa 4 – Crie o Volume Lógico (LV) LVM usando o VG
Para a etapa final do LVM, criaremos um volume lógico que usa o VG vg00 que criamos na etapa anterior:
Etapa 5 – Crie o sistema de arquivos e monte-o
O Volume Lógico LVM se comporta de forma semelhante a um dispositivo de bloco – precisamos instalar um sistema de arquivos e montá-lo antes de podermos usá-lo: $ sudo mkfs.ext4 /dev/mapper/vg00-lv01
Solução 2: Divida o arquivo ao meio e recombine-o ao usá-lo.
Obrigado @vidarlo pela resposta e pela sugestão.
Use
split
para dividir os arquivos:Observe que
-b
o tamanho em bytes por arquivo de saídaserá fornecido a
filename01
vocêfilename02
.Para restaurar o original basta fazer:
Solução 3: Usando tecnologia RAID
RAID (Redundant Array of Independent Disks) é uma tecnologia usada para combinar vários dispositivos de armazenamento (como discos rígidos ou pen drives USB) em uma única unidade lógica. Pode fornecer benefícios de desempenho, redundância ou ambos, dependendo do nível de RAID usado.
Solução estendida: compacte a pasta e armazene-a por partes
Obrigado @velvet pela resposta e sugestão
Outra solução é
7-zip
dividir o arquivo compactado e criar um.tar
arquivo.Use 7z para compactar o arquivo em pedaços de 100 MB (ou o que você quiser)
Resultado
O equivalente do Windows parece ser JBOD e uma busca por "JBOD Linux" retorna alguns resultados possivelmente úteis. Um deles é uma postagem no Ask Ubuntu que sugere usar o Fuse (link para o Fuse no site vinculado) especificamente como uma resposta ao uso do JBOD no Linux.
Não sou competente o suficiente para validar essa resposta, mas ela foi aceita pelo autor original da postagem para seus propósitos.
Houve outros resultados que não busquei e que ficam como exercício para o leitor.
Se você só quer acesso somente leitura a um arquivo de 100 GB e ele é um pouco compactável, você pode tentar executá
mksquashfs
-lo para ver se ele pode compactar pequeno o suficiente para caber em um disco. Se sim, você pode montar o squashfs de um pen drive onde você precisa usá-lo. Esperemksquashfs
levar muito tempo.No Linux? Sim, é fácil (para certos valores de "fácil" - eu não gostaria de ter que explicar isso para minha sogra idosa pelo telefone - mas como copiar/colar? Nada mal).
Primeiro, conecte todos os USBs que você quer usar. Segundo, liste todos eles:
ls /dev/disk/by-id
(se sua distro não usa esse conjunto específico de links, tudo bem; executels /dev/sd*
antes de conectar os USBs, então execute novamente talvez cinco segundos depois - as entradas "novas" são os USBs).Crie a matriz RAID:
sudo mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=[number of USBs] [listing of the block devices from above]
Formate o array RAID. Estou usando
ext4
aqui, mas qualquer formato que seu SO suporte funcionará bem:sudo mkfs.ext4 /dev/md0
Crie um ponto de montagem:
mkdir -p [anywhere on the FS you want, maybe /home/[your username]/myMount or /dev/shm/myUSBRaid]
Feito isso, agora você pode montar o array:
sudo mount /dev/md0 [mount point from above]
...e certifique-se de que você pode acessá-lo:
sudo chown [your username] [mount point from above]
...e então é só um pedaço de sistema de arquivos como qualquer outro. Copie! Quando terminar, desmonte-o:
sudo umount /dev/md0
Uma nota: Isso
/dev/md0
pode mudar depois que você desconectar/reconectar os USBs - mas deve ser sempre/dev/md[something]
assim para que você possa consultá-lo vials /dev/md*