Manual

do

Maker

.

com

Como unir 2 HDs/SSDs com OverlayFS

Como unir 2 HDs/SSDs com OverlayFS

No artigo anterior vimos como atingir o mesmo objetivo utilizando unionfs. Também citei que o processo não é exatamente o mesmo de um LVM ou RAID, mas quebra o galho para muitos casos, considerando um bom gerenciamento das mídias de armazenamento. Vamos ver agora o overlayfs.

O que é overlayfs

O overlayfs é mais uma técnica de disponibilização de arquivos de sistemas de arquivos diferentes em um único ponto de montagem.

Se não leu o artigo sobre o UnionFS, recomendo que o faça, pois dispus alguns conceitos extras. Esse artigo será mais breve, focando na execução.

Como usar o OverlayFS

Em relação ao UnioFS, a diferença na forma de parâmetros é notável. O OverlayFS é mais "moderno" que o UnionFS e do mesmo modo, tem limitações; um dos dispositivos poderá ser marcado como alvo para escrita. Assim, quando um arquivo for criado no diretório de junção, seu destino será o dispositivo marcado para escrita.

Existem algumas outras limitações, mas dado que o objetivo principal dessa proposta (nesse artigo) é disponibilizar múltiplos dispositivos como se fosse apenas 1 para posterior acesso na rede ou para facilitar a busca de um dado cuja origem seja até então desconhecida, é um recurso de extrema importância dentro de seu propósito.

Para que fique claro, o propósito a que me refiro no artigo é a "junção para compartilhamento", enquanto para embarcados esse recurso é usado para "desviar" as escritas da memória flash, afim de poupar seus limitados ciclos de escrita. Também usado em live CDs, mas aí entram outros recursos como cloop. Não vou me estender no tema.

Proposta

Supondo apenas dois dispositivos; para facilitar, 2 pendrives, que aparecerão no sistema como sdb1 e sdc1. Para eles, criaremos os diretórios pendrive_1 e pendrive_2.

Precisaremos de um diretório de gerenciamento de escrita para o overlay. Criaremos o diretório overlay_dir.

Precisaremos do diretório de união desses dispositivos, onde acessaremos como se fosse apenas 1. Criaremos o diretório merged.

O primeiro passo seria então criar os diretórios.

O segundo passo seria "montar" os dispositivos em seus respectivos diretórios

O terceiro passo seria executar o overlay.

Execução

Para que você possa fazer um laboratório sem precisar de mídias de armazenamento externas, crie uma estrutura assim:

sudo su
mkdir -p LAB/{pendrive_1,pendrive_2,overlay_dir,merged}

Agora que os diretórios estão criados, vamos colocar alguns arquivos dentro de pendrive_1 e pendrive_2 para simular dispositivos reais:

touch LAB/{pendrive_1/{arquivo_1,arquivo_2},pendrive_2/{arquivo_3,arquivo_4}}

Agora já temos uma estrutura para a execução do overlay. Entre no diretório LAB e execute o overlay. Seria algo como:

cd LAB
mount -t overlay overlay -o lowerdir=pendrive_1,upperdir=pendrive_2,workdir=overlay_dir merged

O comando mount acima é uma linha só, de "mount -t ..." até "...merged".

Aqui está um exemplo da montagem, criação de um arquivo e listagem:

overlayfs-command.png

Com dispositivos reais

Seguindo o exemplo com sdb1 e sdc1, a montagem dos dois pendrives precederia o comando do overlayfs:

mount /dev/sdb1 pendrive_1
mount /dev/sdc1 pendrive_2

Se fossem 2 partições de um mesmo dispositivo, também seria possível:

mount /dev/sdb1 pendrive_1
mount /dev/sdb2 pendrive_2

Por fim, bastaria executar o overlayfs:

mount -t overlay overlay -o lowerdir=pendrive_1,upperdir=pendrive_2,workdir=overlay_dir merged

Desmonte os recursos quando não estiverem mais em uso

Terminou de usar? Não remova os dispositivos sem desmontar os sistemas de arquivos. Inicie desmontando o overlay:

umount merged
umount pendrive_1
umount pendrive_2

aufs

Esse, de 2006, já está fora de uso. Em alguns lugares ainda é usado, mas o OverlayFS é a nova implementação de união de sistema de arquivos, então nem vale a pena fazer um tutorial com ele, mas é bom saber de sua existência para fins históricos.

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.