Unindo partições Linux com o mhddfs

Publicado por Andre Luiz Facina em 03/02/2009

[ Hits: 8.443 ]

 


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

Backups simples e seguros com o ssh e dd no Linux

Quotas de disco no OpenBSD

Adicionando SWAP no OpenBSD

Montando imagens ISO no OpenBSD

Pfstat no OpenBSD 4.x

Leitura recomendada

Erro ao montar HD portátil [Resolvido]

Samba: Liberar compartilhamento pra somente uma máquina

Resolvendo problemas de Bad Superblocks em partições EXT4

ACL - Implementando permissões de arquivos e diretórios personalizados

ExFAT no Slackware

  

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