terça-feira, 31 de maio de 2016

FreeNAS + VirtualBox

Introdução


Coisas que geralmente me incomodam tendem a sumir quando minha paciência com elas se esgotam. E uma das coisas que sempre me incomodou é o fato de precisar reinstalar meu notebook de trabalho, ou porque comprei um novo, ou porque resolvi trocar o HD por um maior/melhor ou porque alguma merda mesmo aconteceu e o mesmo precisou ser reinstalado.

Alguém pode dizer, basta criar uma partição de dados e colocar tudo lá. OK, é uma alternativa, mas e se quiser trocar o SO, quiser restaurar seu notebook para o padrão de fábrica, o particionamento que você achou que era o ideal não é mais, ou seja, uma das partições já está cheia e você vê a outra nadando em espaço livre até que você decide mexer nas partições e correr o risco de perder tudo.

Esse blog post visa documentar uma outra estratégia, não sei se é melhor, mais simples ou mais segura, mas é a abordagem que estarei seguindo a partir de agora para testar, e só o futuro me dirá se foi uma aposta acertada ou não.

Estratégia


Estarei usando duas tecnologias para essa nova abordagem: VirtualBox e FreeNAS.

A ideia básica é criar um servidor "NAS local" rodando em uma máquina virtual. O servidor NAS será criado utilizando o FreeNAS.

Uma vez que eu tenha um servidor NAS disponível, meu notebook estará montando os pontos de montagem disponível no NAS via NFS ou CIFS. Como isso, todos meus arquivos, programas, workspaces de trabalho, etc estarão armazenados nesse servidor NAS.

E eu posso regularmente fazer uma cópia de backup dos arquivos .vdi, sem me preocupar se estou esquecendo de copiar alguma coisa ou não.

Então, se um dia eu precisar reinstalar meu notebook ou mudar tudo que tenho para um novo, sem falar da segurança do backup de apenas um arquivo, basta eu instalar o VirtualBox na nova máquina, criar um novo servidor virtual utilizando os arquivos .vdi do NAS e refazer os pontos de montagem.

E a performance de acesso aos arquivos ? Para meu caso, como estarei rodando o NAS como uma máquina virtual no próprio notebook, e não terei o delay de uma rede no meio, acredito não ter muitos problemas de performance. Exceto é claro, se você não tiver memória RAM suficiente para tudo isso.

FreeNAS


FreeNAS é um sistema operacional que pode ser instalado em praticamente qualquer plataforma de hardware para compartilhar dados através de uma rede. FreeNAS é a maneira mais simples de criar um local centralizado e de fácil acesso para seus dados.

Não vou entrar em detalhes sobre conceitos, instalação e configuração, pois está cheio de tutoriais sobre isso por ai. Estarei mostrando apenas os passos realizados para alcançarmos nosso objetivo.

A documentação do FreeNAS recomenda 8G de memória RAM para os volumes do tipo ZFS, mas pelo o que tive lendo é necessário mais memória a medida que começa a usar recursos mais sofisticados do ZFS. Como quero apenas um repositório simples de dados, sem o uso de features que exigem muito do hardware, estarei criando uma máquina virtual com apenas 512M de RAM e 1 processador. Pode ser muito baixo em relação ao que a documentação sugere, mas como não tenho parâmetros de comparação, vou deixar um valor baixo e vou aumentando caso eu perceba problemas de performance.

A máquina virtual será criada com dois discos virtuais, sendo um disco para o sistema operacional do FreeNAS e um outro para efetivamente funcionar como minha área de storage.

Veja a instalação do FreeNAS no vídeo abaixo:



Criando mount points


Uma vez que tenhamos tudo instalado, temos que configurá-lo para termos disponíveis no sistema host os mount points pré-definidos no FreeNAS.

O vídeo abaixo mostra a configuração e teste de dois mount points configurados para serem montados via NFS.




Expandindo a área de storage


A capacidade de um disco pode aumentar sem qualquer mudança aos dados já existentes. Isto acontece de forma mais comum com máquinas virtual, quando um disco virtual se torna pequeno e precisa ser aumentado.

Para aumentarmos nossa área de storage, poderíamos criar um novo disco virtual, adicionar a máquina e então criar um novo volume com novos mount points.

Especialista em ZFS poderiam nos listar diversas formas de expandir nosso volume ZFS, bem com seus dataset. Mas a forma que estarei mostrando, visa aumentar o disco virtual (.vdi) existente e o espaço adicional ser usado para criar uma nova partição que será adicionada ao ZFS pool.

Os passos abaixo listam os procedimentos necessários para expandir nossa área de storage:

1. Pare a máquina virtual do FreeNAS

2. Faça um cópia do arquivo .vdi que irá alterar

3. Aumente o tamanho do arquivo .vdi
VBoxManage modifyhd FreeNAS_data.vdi --resize 100000
4. Inicie o FreeNAS em 'User single mode'

5. Verifique os discos disponíveis no S.O. com o comando:
gpart show
6. Em meu caso, o disco ada1 representa o disco de storage, que basicamente tem o tamanho redefinido anteriormente, onde a última sessão do disco está marcada como '- free -'.

Após o resize do arquivo .vdi, se o disco foi formatado como GPT, ele pode aparecer como [CORRUPT] pois um backup da tabela de partição do GPT não se encontra mais no final do disco. Para corrigir o problema execute o comando:
gpart recover ada1
7. Verifique se o disco foi corrigido
gpart show ada1
8. Crie uma nova partição, do tipo freebsd-zfs, com o espaço disponível no disco ada1:
gpart add -t freebsd-zfs ada1
Como output deverá receber:

ada1p3 added

9. Verifique se uma nova partição foi criada
gpart show ada1
10. Restart FreeNAS
reboot
11. Após a inicialização, escolha a opção 9) Shell

12. Liste os ZFS pool's e verifique se existe o volume com o nome dado durante o processo de criação, para nosso caso storage
zpool list
13. Veja mais informações do pool
zpool status storage
Podemos verificar que o pool é composto por apenas um único disco gptid/xxx

14. (Opcional) Para saber qual partição do disco o gptid/xxx se refere use o comando:
glabel status
15. Adicione a nova partição ao pool
zpool add storage ada1p3
16. Confira se o pool agora possui dois discos
zpool status storage
17. Verifique na interface web do FreeNAS se o volume agora tem a quantidade extra de espaço adicionado.

Veja o vídeo abaixo com os procedimentos acima:



Mais+


A medida que novos procedimentos forem sendo realizados estarei colocando eles aqui.

Siga-me no twitter para ficar sabendo das novas atualizações. @kleysonr

Nenhum comentário: