Manual

do

Maker

.

com

Como unir 2 HDs/SSDs com MergerFS

Como unir 2 HDs/SSDs com MergerFS

O MergerFS é mais uma opção de junção de sistemas de arquivos e, talvez a melhor delas.

O MergerFS tem uma ampla flexibilidade políticas de acesso e gravação, permitindo especificar detalhadamente como as leituras e escritas devem ser distribuídas entre os sistemas de arquivos subjacentes. Por usar fuse, não necessidade de módulos especiais no kernel.

Características

O MergerFS tem muitas características como:

  • Comportamento configurável
  • Habilidade de adicionar ou remover sistemas de arquivos livremente
  • Resistência à falhas de sistemas de arquivos individuais
  • Suporte a atributos estendidos (xattrs)
  • Suporte a atributos de arquivos (chattr)
  • Configurável em tempo de execução (através de xattrs)
  • Funciona com tipos heterogêneos de sistemas de arquivos
  • Translado de arquivo quando o sistema de arquivos exaure seu espaço na escrita
  • Ignora sistema de arquivos "somente-leitura" quando criando arquivos
  • Torna arquivos "somente-leitura" em links simbólicos para arquivos subjacentes
  • Hard link de cópia-na-escrita (CoW)
  • Suporta ACLs POSIX
  • Outros mais

Por isso que o prefiro diante das opções UnionFS ou OverlayFS.

Instalação do MergerFS

No OpenSuSE Tumbleweed não tem pacote nativo ou pisei na bola ao procurar. Aqui diz que o pacote existe. Enfim, compilar é uma opção.

Para Debian e variantes:

sudo apt-get install mergerfs

Como usar MergerFS

Assim como AUFS (velho), OverlayFS e UnionFS, a montagem por linha de comando é bastante simples. Vamos fazer o mesmo laboratório dos artigos anteriores, supondo a existência de 2 pendrives conectados, para facilitar a ilustração. Também vamos considerar que os pendrives estejam sendo identificados no sistema operacional como sdb1 e sdc1. Isso, para nosso exemplo, mas poderia ser uma outra partição do mesmo dispositivo e assim por diante.

Supondo os pendrives, a primeira etapa seria "montar" os sistemas de arquivos:

sudo mount /dev/sdb1 pendrive_1 #se o diretório pendrive_1 existir, claro
sudo mount /dev/sdc1 pendrive_2 #o mesmo aqui

Vamos criar nosso laboratório e fazer a prova de conceito:

mkdir -p LAB/{pendrive_1,pendrive_2,merged}
touch LAB/{pendrive_1/{arquivo_1,arquivo_2},pendrive_2/{arquivo_3,arquivo_4}}
cd LAB
mergerfs -o cache.files=partial,dropcacheonclose=true,category.create=mfs pendrive_1:pendrive_2 merged

Espero que esteja claro isso, mas para enfatizar, pendrive_x é um path. Como os diretórios pendrive_1 e pendrive_2 do ambiente de testes criado está no mesmo nível de diretório, basta seus nomes, mas se o diretório com o pendrive montado estive em /mnt/pendrive_1, então a linha de exemplo acima apontaria para o caminho absoluto onde o dispositivo está montado. Do mesmo modo, o diretório merged poderia ter qualquer nome e estar em qualquer lugar.

Uma listagem do diretório merged agora deve mostrar os arquivos criados nos diretórios pendrive_1 e pendrive_2.

Supondo uma montagem no /etc/fstab, poderia ser algo como:

/mnt/hdd0:/mnt/hdd1 /media fuse.mergerfs cache.files=partial,dropcacheonclose=true,category.create=mfs 0 0

Nesse exemplo, os dispositivos de discos rígidos foram montados em /mnt/hddx e então unidos em /media. Nesse caso, é necessário garantir os sistemas de arquivos disponibilizados ao recurso, que devem ser montados previamente.

A documentação também descreve a criação de um serviço no systemd:

[Unit]
Description=mergerfs service

[Service]
Type=simple
KillMode=none
ExecStart=/usr/bin/mergerfs \
  -f \
  -o cache.files=partial \
  -o dropcacheonclose=true \
  -o category.create=mfs \
  /mnt/hdd0:/mnt/hdd1 \
  /media
ExecStop=/bin/fusermount -uz /media
Restart=on-failure

[Install]
WantedBy=default.target

Se interessa criar um serviço de sistema, confira o artigo de como criar serviço no Raspberry.

Todas as opções disponíveis no MergerFS podem ser encontradas aqui. É uma documentação extremamente vasta e agradável.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.