O FriendlyElec (NanoPC) CM3588 é uma solução baseada em RK3588 com memória LPDDR4x de 4/8/16 GB e armazenamento flash eMMC de 0/64 GB. A placa transportadora inicial lançada com o CM3588 possui 4 slots M.2 NVMe SSD (PCIe 3.0 x1 cada) e uma porta RJ45 de 2,5 gbps, tornando-a uma opção atraente para um NAS silencioso de baixa potência por US$ 130/US$ 145/US$ 174 dependendo de qual RAM configuração que você compra.
Encomendei isso em resposta ao vídeo LTT. Tenho visto algumas pessoas lutando para configurá-los e decidi oferecer alguns guias básicos para ajudar aqueles que precisam de ajuda para colocar seu NAS em funcionamento.
Usarei o instalador pré-compilado do Debian 12 encontrado aqui. ( 01_Imagens oficiais > 02_Imagens SD-to-eMMC > rk3588-eflasher-debian-bookworm-core-6.1-arm64-xxxxxxxx.img.gz)
O FriendlyElec Wiki é realmente muito bom, mas pode parecer uma parede de texto/comandos para executar e pode ser cansativo para um novo usuário.
Quer alimentar isso via POE+? Usei este adaptador e verifiquei que ele fornece até 25 watts e passa 2,5 gbps.
Consumo de energia típico com 4 unidades Micron 2300 NVMe e (2) ventoinhas Noctua NF-A4x10 @ 5V:
Descobri que a transferência em linerate (2,5 gbps) usa cerca de 35% da CPU e aproximadamente 15-20w em meus testes.
Eu remixei o gabinete CM3588-NAS do sgofferj para acomodar os parafusos da ventoinha do gabinete (M5.5) que vêm com as ventoinhas Noctua. Você pode encontrar isso aqui.
Como comprei um modelo eMMC de 8 GB de RAM/64 GB, usarei uma imagem de instalação SD para eMMC para este guia. Você precisará de um cartão MicroSD de 8 GB ou maior.
Existem 2 contas por padrão.
Neste guia seremos:
Use sua ferramenta favorita para fazer SSH na unidade.
passwd
Digite uma nova senha e confirme.
Vamos criar nosso próprio usuário, então não precisamos dele.
deluser pi
Estou usando nas neste exemplo, mas fique à vontade para nomeá-lo como quiser, então iremos adicioná-lo ao grupo sudoers
useradd nas
passwd nas
usermod -aG sudo nas
Isto é por segurança, pois o nome de usuário é sempre root e os direitos de acesso são ilimitados.
nano /etc/ssh/sshd_config
Vá para a linha 33, altere PermitRootLogin yes
para PermitRootLogin no
.
systemctl restart sshd
exit
SSH novamente como seu usuário recém-criado
Por padrão, o arquivo de origem vem com um espelho baseado na China. Embora isso seja bom , seria muito mais rápido se você usasse as fontes locais do Debian apt. Então, vamos alterá-los de volta. Eu os comentei por enquanto.
mv /etc/apt/sources.list /etc/apt/sources.list.old
nano /etc/apt/sources.list
# deb https://mirrors.aliyun.com/debian bookworm main non-free contrib
# deb-src https://mirrors.aliyun.com/debian bookworm main non-free contrib
# deb https://mirrors.aliyun.com/debian-security bookworm-security main
# deb-src https://mirrors.aliyun.com/debian-security bookworm-security main
# deb https://mirrors.aliyun.com/debian bookworm-backports main non-free contrib
# deb-src https://mirrors.aliyun.com/debian bookworm-backports main non-free contrib
deb http://deb.debian.org/debian bookworm main non-free-firmware
deb-src http://deb.debian.org/debian bookworm main non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware
deb-src http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb http://deb.debian.org/debian bookworm-backports main non-free-firmware
deb-src http://deb.debian.org/debian bookworm-backports main non-free-firmware
Para instalar o ZFS, primeiro precisamos instalar os cabeçalhos do Linux em nosso kernel para adicionar suporte ao DKMS.
Felizmente, cabeçalhos pré-compilados já podem ser encontrados em /opt/archives
sudo -i
dpkg -i /opt/archives/linux-headers-6.1.57_6.1.57-11_arm64.deb
Agora que temos cabeçalhos Linux, podemos usar o apt para instalar o ZFS
sudo apt install zfs-dkms
sudo apt install zfsutils-linux
Agora que o ZFS está instalado, tentaremos executar um comando para testar se o ZFS e o DKMS estão realmente funcionais.
zpool status
Se funcionar, será relatado que temos 0 pools. Se você receber um erro que diz: "Os módulos ZFS não estão carregados. Tente executar '/sbin/modprobe zfs' como root para carregá-los", isso significa que o DKMS não está funcionando corretamente e você provavelmente perdeu uma etapa acima ou falhou ao compilar, o que deveria ter gerado um erro.
Agora que temos o ZFS funcionando, podemos criar nosso pool ZFS. Você tem algumas opções, dependendo da quantidade de redundância ou desempenho desejada. Eu recomendaria as seguintes opções, embora existam mais algumas. Você terá que verificar a documentação do ZFS para quaisquer outros tipos de array.
RAIDZ1 (RAID 5)
zpool create mypool raidz nvme0n1 nvme1n1 nvme2n1 nvme3n1
Espelho (RAID 1)
zpool create mypool mirror nvme0n1 nvme1n1 nvme2n1 nvme3n1
Espelho Listrado (RAID 10)
zpool create mypool mirror nvme0n1 nvme1n1 mirror nvme2n1 nvme3n1
Agora, se executarmos zpool status
devemos obter algo assim:
$zpool status
pool: mypool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
nvme0n1 ONLINE 0 0 0
nvme1n1 ONLINE 0 0 0
nvme2n1 ONLINE 0 0 0
nvme3n1 ONLINE 0 0 0
errors: No known data errors
O array será montado em /mypool (ou o nome que você deu ao seu pool). Você pode mover o ponto de montagem para um local diferente:
zfs set mountpoint=/mnt/storage mypool
Como tudo isso é uma matriz SSD, recomendo ativar o ajuste automático. Trim marca os dados inválidos e diz ao SSD para ignorá-los durante o processo de coleta de lixo, permitindo que seu SSD faça alguma limpeza no final.
zpool set autotrim=on mypool
Quando isso for concluído, você estará pronto para instalar o que desejar.