Unindo partições Linux com o mhddfs

Publicado por Andre Luiz Facina em 03/02/2009

[ Hits: 9.881 ]

 


Unindo partições Linux com o mhddfs



Imagine que você possui três HDs nos tamanhos de 80, 40 e 60 GB. Imagine agora que você precise de um lugar para armazenar suas músicas, mas não quer simplesmente criar uma pasta em cada disco; até porque esse método seria muito cansativo para se administrar.

Então criaremos um tipo de RAID e com isso criamos uma única partição (virtual) com a soma dos espaços livres dos três discos. Detalhe: tudo isso sem destruir os dados que já estão nos discos e, o mais interessante, com apenas um comando. :-)

Descobri essa solução utilizando o "mhddfs", que é um módulo do FUSE. O mhddfs permite agrupar pequenas partições em uma única partição virtual que irá conter todos os arquivos de todas partições membras.

Instalação

A distribuição Linux utilizada foi o Debian Lenny.

# apt-get install mhddfs

Utilização

Vamos dizer que você tenha três discos montados em /media/disco1, /media/disco2, /media/disco3. Você terá algo semelhante a isso:

# df -h
Depois de instalado o mhddfs, vamos criar um novo ponto de montagem (/mnt/virtual) que irá conter a concatenação de todas as unidades. E em seguida vamos executar o comando mhddfs seguido dos três diretórios (onde estão montados as três partições) e do ponto onde serão montados.

# mkdir /mnt/virtual
# mhddfs /media/disco1,/media/disco2,/media/disco3 /mnt/virtual -o allow_other

option: allow_other (1)
mhddfs: directory '/media/disco1' added to list
mhddfs: directory '/media/disco2' added to list
mhddfs: directory '/media/disco3' added to list
mhddfs: move size limit 4294967296 bytes
mhddfs: mount point '/mnt/virtual'

A opção "-o allow_other" permite que o /mnt/virtual seja visível para outros usuários e não apenas a quem o criou.

Digite novamente o comando "df -h" e observe que foi criado mais um ponto de montagem:

# df -h
Observe a inteligência dessa ferramenta: ela criou uma concatenação dos três discos, calculou o tamanho total das unidades juntas (180G), somou o espaço já utilizado (95G), e ainda trouxe o tamanho do espaço livre (85G). Se você entrar em /mnt/virtual perceberá que todos os arquivos provenientes das três unidades se encontram no mesmo lugar.

Mas se você tentar adicionar novos arquivos em /mnt/virtual? Quando você cria um novo arquivo em /mnt/virtual, o mhddfs vai olhar para o espaço livre que permanece em cada uma das unidades. Se a primeira unidade tem espaço livre suficiente, o arquivo será criado nela.

Caso contrário, se a unidade está com pouco espaço (tem menos que especificado pelo "mlimit" opção do mhddfs, que o padrão é de 4 GB), a segunda unidade será utilizado no lugar. Se essa unidade também tem pouco espaço, a terceira unidade será utilizada. Se todas as unidades tem pouco espaço, a unidade com mais espaço livre será escolhida para criar os novos arquivos.

Se resolver adicionar ao fstab para a montagem automática durante o boot, você pode adicionar a seguinte linha:

mhddfs#/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual fuse defaults,allow_other 0 0

Bem, esse não é o método mais adequado de se criar um array de discos, mas em muitas situações da vida de um Sysadmin isso poderá ser muito útil. É sempre bom ter uma carta na manga. :-)

André Luiz Facina

Outras dicas deste autor

MultiTail - Comando tail em múltiplos arquivos no Linux

Configurando o Nagios com NagiosQL

Adicionando SWAP no OpenBSD

Alteração de encoding em sistemas Debian

Servidor NFS no OpenBSD

Leitura recomendada

openSUSE 13.1 em UEFI

Descompactando arquivos RAR com erro de "Codificação inválida"

Identificando os seus discos

Trocar Linux de patição / HD sem clonagem

RAID 5 com apenas dois discos, ou menos

  

Comentários
[1] Comentário enviado por rbn_jesus em 04/02/2009 - 10:51h

muito boa esta ferramenta!

valeu.

[2] Comentário enviado por mathcuei em 04/02/2009 - 15:44h

Muito bom artigo! Obrigado por compartilhar com a comunidade do Sofware Livre.

É uma ferramente que pode ajudar nas horas de emegência...

[3] Comentário enviado por f_tyet em 12/09/2014 - 17:46h

Aquele "#" na linha:



mhddfs#/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual fuse defaults,allow_other 0 0



Tá certo?

É que não deu certo, depois de reinciar, no meu PC...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts