De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Unindo partições com o mhddfs

Colaboração: André Luiz Facina

Data de Publicação: 30 de Janeiro de 2009

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 iremos criar 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, tudo isso 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 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, então você terá algo semelhante a isso:

  # df -h
  
  Filesystem            Size  Used Avail Use% Mounted on
  
  /dev/sda1              80G   50G   30G  63% /media/disco1
  /dev/sdb1              40G   35G    5G  88% /media/disco2
  /dev/sdc1              60G   10G   50G  17% /media/disco3

Depois de instalado o mhddfs, vamos criar um novo ponto de montagem, vamos chamá-lo de /mnt/virtual, que irá conter a concatenação de todas as unidades. E em seguida vam os 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 ao usuário que o criou.

Digite novamente o comando df -h e observe que foi criando mais um ponto de montagem.

  # df -h
  
  Filesystem            Size  Used Avail Use% Mounted on
  ...
  /dev/sda1              80G   50G   30G  63% /media/disco1
  /dev/sdb1              40G   35G    5G  88% /media/disco2
  /dev/sdc1              60G   10G   50G  17% /media/disco3
  mhddfs                180G   95G   85G  53% /mnt/virtual

Observe a inteligencia 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 e 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 :-)

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)