Guia ZFS: Instalar e Otimizar o Sistema de Ficheiros ZFS no ZimaBoard

Eva Wong é a Redatora Técnica e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos. Eva acredita que a auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade a desmistificar configurações de hardware, desde construir o seu primeiro NAS até dominar os contentores Docker.

Saudações, entusiastas do ZimaBoard! Hoje, temos o prazer de vos trazer um tutorial completo do nosso dedicado membro da comunidade, Tyrehl. O Tyrehl não só orienta de forma experiente o processo de instalação do ZFS no ZimaBoard, como também oferece uma visão global do próprio ZimaBoard.

Desde insights da comunidade até instruções detalhadas de instalação, o artigo do Tyrehl é o seu recurso completo para desbloquear todo o potencial tanto do ZFS como do ZimaBoard. Os nossos sinceros agradecimentos ao Tyrehl por esta contribuição enriquecedora, que liga o envolvimento da comunidade ao conhecimento técnico. Vamos embarcar juntos nesta jornada e elevar a sua experiência com o ZimaBoard. Boa exploração!

Introdução

Os computadores de placa única (SBCs) são muito populares em cenários de home lab, e nos últimos anos ganharam terreno em ambientes profissionais e na indústria. Atualmente existe um grande ecossistema centrado em edge computing e sistemas de formato compacto.

Computação decente é fácil de obter, com vários SBCs a oferecer 4 núcleos e muita RAM para diversas aplicações. Onde normalmente falham é no armazenamento. Cartões SD e armazenamento Flash em geral são geralmente lentos e propensos a falhas em cenários de escrita intensiva. Discos ligados via USB não oferecem a mesma fiabilidade, e escolher um bom conector USB-para-SATA também não é trivial.

O ZimaBoard tem uma carta na manga. Dois portos SATA, Ethernet dual 100/1000, e várias opções de extensão PCIe, fazem dele um sistema muito flexível.

Quais são os limites do que um SBC pode realisticamente alcançar, e por que é que o armazenamento é sempre um problema? Onde está o meio-termo ideal entre uma máquina compacta, que não domina nenhuma tarefa particularmente bem, e um monstro de cabos com 6 discos SATA que requer uma fonte de alimentação ATX externa?

Este artigo pretende explorar as forças do ZimaBoard e como podem ser aproveitadas para o colocar a bom uso. Sem acabar com uma configuração ridícula e pouco prática.

Motivação

Como mencionado anteriormente, muita capacidade de computação é fácil de implementar e utilizar. A memória também é barata, por isso o armazenamento torna-se rapidamente o fator limitante. Quem já lidou com infraestruturas provavelmente sabe disso. Basta olhar para as opções de armazenamento em rede do k8s, as várias plataformas que afirmam trazer APIs compatíveis com S3 para o seu cluster, e como são complicadas de implementar e operar corretamente.

O ZimaBoard, com as suas excelentes capacidades de I/O, é um excelente candidato para um NAS de formato compacto ou um servidor de uso geral com armazenamento local resiliente. E aqui está o desafio – como fornecer armazenamento tolerante a falhas num dispositivo de formato pequeno, numa plataforma que “simplesmente funciona” e é operacionalmente simples.

No lado do hardware, vamos limitar-nos a usar apenas dois discos de 2,5 polegadas ligados às ligações de energia e SATA na parte traseira do ZimaBoard. Isto cria uma solução muito compacta sem necessidade de fonte de alimentação externa nem placas de extensão.

Menos é mais

Ter muito armazenamento é bom, mas ter armazenamento tolerante a falhas é ainda melhor. Para isso precisamos de um sistema de ficheiros mais avançado que ofereça redundância de armazenamento.

O ZFS oferece capacidades de RAID por software que superam a maioria dos controladores RAID por hardware. É um sistema de ficheiros verdadeiramente excelente com muitas outras funcionalidades notáveis, como snapshots incrementais, sincronização entre sistemas remotos e pools de armazenamento, e encriptação.

O foco hoje é apenas correr os discos de forma redundante. Normalmente, o ZFS é usado para gerir um array RAIDZ. Mas como nos limitámos a dois discos, só resta uma opção relevante – o pool espelho ZFS. Isto vai efetivamente reduzir para metade a capacidade de armazenamento, mas ao mesmo tempo oferece melhor redundância e a capacidade de resistir à falha de um único disco. Não é ideal, mas terá de servir.

Hardware

Discos

Geralmente, a comunidade ZimaBoard recomenda que os utilizadores optem por discos de 2,5 polegadas. A principal vantagem é que não precisam de uma linha de 12V para funcionar. Há relatos de testes bem-sucedidos com discos de 3,5 polegadas, mas os resultados podem variar. No meu caso, optei por dois SSDs de 1TB. Pode escolher HDDs também, se precisar de mais capacidade.

Conectores e acessórios impressos em 3D

O Y-Splitter oficial é fortemente recomendado para ligar e alimentar os dois discos. Existem soluções alternativas, como usar adaptadores USB-para-SATA com alimentação. Isto fica pouco estético, mas funciona. Para manter tudo organizado, um suporte duplo para HDD impresso em 3D funciona muito bem. O resultado final é um pacote muito portátil e discreto.

Os links estão incluídos no final do artigo. Achei esta versão muito compacta e prática devido ao seu tamanho reduzido. Existem também várias placas impressas em 3D para montagem em rack, se tiver espaço para isso.

Instalar o ZFS

O ZimaBoard vem com Debian por defeito. Esta é também a minha recomendação pessoal para uma distribuição sólida que não atrapalha nem surpreende. Para outras distribuições, consulte a respetiva documentação e instruções de instalação do ZFS.

Antes de começar, lembre-se de atualizar para a versão LTS mais recente, se possível. Faça backup dos seus dados para que seja fácil desfazer e recomeçar. E documente cada passo, para facilitar a resolução de problemas. Consulte o script comando para uma forma conveniente de fazer isto.

Instruções detalhadas e casos de uso avançados estão documentados em https://wiki.debian.org/ZFS esta é a fonte principal recomendada para configurar o ZFS.

Pré-requisitos

Certifique-se de que os repositórios HTTPS podem ser acedidos:

1 apt install -y lsb-release apt-transport-https

Adicione o repositório Backports para a sua versão editando /etc/apt/sources.list ou adicionando um novo ficheiro de fontes em ‘/etc/apt/sources.list.d/’:

1 #determinar o codename ou substituir manualmente abaixo:
2 codename=$(lsb_release -cs)
3 #adicionar repositório backports à lista de fontes:
4 echo “deb http://deb.debian.org/debian $codename-backports main contrib non-free”|sudo tee /etc/apt/sources.list.d/debian_backports.list && sudo apt update

Pacotes ZFS

Finalmente, conforme a documentação do Debian, instale os headers Linux mais recentes e os pacotes ZFS relevantes:

1 sudo apt install linux-headers-amd64;sudo apt install -t $codename-backports zfsutils-linux zfs-dkms

“Oh não – algo correu mal”

A falha na instalação do ZFS pode normalmente ser atribuída a um kernel antigo ou incorreto, ou a headers em falta. É melhor remover todos os pacotes relacionados com ZFS, verificar os headers instalados e reler a documentação de instalação.

1 sudo dpkg -l | egrep ‘linux-image|linux-headers’

Criar um pool e um sistema de ficheiros

Listar discos por IDs:

1 ls -l /dev/disk/by-id/
2 ls -l /dev/disk/by-id/
3 lrwxrwxrwx 1 root root 9 22 Dez 15:29 ata-KINGSTON_SA400S37960G_50026B73818333D1 -> ../../sdb
lrwxrwxrwx 1 root root 9 22 Dez 15:29 ata-KINGSTON_SA400S37960G_50026B73818333DB -> ../../sda
4 lrwxrwxrwx 1

E criar um pool especificando os IDs estáveis dos dispositivos, por exemplo:

1 zpool create $mirror_pool_name mirror ata-KINGSTON_SA400S37960G_50026B73818333D1 ata-KINGSTON_SA400S37960G_50026B73818333DB

Criar um sistema de ficheiros encriptado:

1 zfs create \
2 -o encryption=on \ # remover se desnecessário
3 -o keyformat=passphrase -o casesensitivity=mixed \
4 -o acltype=posixacl -o xattr=sa -o dnodesize=auto $mirror_pool_name/$dataset_name

Cenários de uso real e desempenho

O ZimaBoard não tem quaisquer problemas a correr ZFS, e oferece bastante desempenho, com apenas a encriptação a afetar significativamente o uso da CPU. A transcodificação e streaming (por exemplo, com Jellyfin) também não são problema. É importante notar que ler ou escrever ficheiros muito grandes num sistema de ficheiros encriptado vai sobrecarregar bastante a CPU. Isto pode afetar outras cargas de trabalho a correr no sistema.

SMB/NFS

Durante os testes gerais, escrever um único ficheiro de 12GB para o pool espelhado ZFS demorou cerca de 5 minutos, sendo o IO do disco o gargalo. A leitura do pool ZFS foi muito mais rápida, demorando menos da metade do tempo. Efetivamente, a ligação de rede de 1Gbps foi completamente saturada. Ambos os testes foram feitos para/de um sistema de ficheiros não encriptado:

O próximo teste demonstra o impacto significativo que a encriptação tem na CPU. O mesmo ficheiro de 12GB foi lido a partir do sistema de ficheiros ZFS não encriptado e escrito para um sistema encriptado. O desempenho continua excelente, mas o uso da CPU disparou e manteve-se muito elevado durante todo o processo.

Recursos e referências

Conclusão

Tem dúvidas ou procura esclarecimentos adicionais sobre algum aspeto do tutorial? O Tyrehl está aqui para ajudar! Junte-se à nossa comunidade no Discord para contactar diretamente o Tyrehl e participar em discussões esclarecedoras. A sua curiosidade não tem de ficar pelo tutorial – o Tyrehl está pronto para o ajudar na sua jornada com ZFS. Junte-se ao nosso servidor Discord: [ zimaboard.com/discord]

Centro de Campanha Zima

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.