Eu, como muitos outros usuários do MacBook Pro, enfrentei o problema de memória interna insuficiente. Para ser mais preciso, o rMBP que usei diariamente estava equipado com um SSD com capacidade de apenas 256GB, o que, naturalmente, não foi suficiente por muito tempo.
E quando, além de tudo, comecei a gravar vídeos durante os meus voos, a situação só piorou. O volume de filmagens filmadas após esses voos foi de mais de 50 GB, e meu pobre SSD de 256 GB logo ficou cheio, forçando-me a comprar um drive externo de 1 TB. Porém, depois de um ano, ele não conseguia mais lidar com a quantidade de dados que eu gerava, sem falar que a falta de redundância e o backup o tornavam inadequado para hospedar informações importantes.
Então, a certa altura, decidi construir um NAS grande na esperança de que esse sistema durasse pelo menos alguns anos sem exigir outra atualização.
Escrevi este artigo principalmente como um lembrete de exatamente o que fiz e como fiz, caso precise fazer novamente. Espero que seja útil para você também se decidir fazer o mesmo.
Talvez seja mais fácil comprar?
Então, sabemos o que queremos obter, a questão permanece: como?
Analisei primeiro as soluções comerciais e, em particular, a Synology, que deveria fornecer os melhores sistemas NAS para consumidores do mercado. No entanto, o custo deste serviço revelou-se bastante elevado. O sistema de 4 compartimentos mais barato custa mais de US$ 300 e não inclui discos rígidos. Além disso, o preenchimento interno de tal kit em si não é particularmente impressionante, o que põe em causa o seu real desempenho.
Então pensei: por que não construir eu mesmo um servidor NAS?
Encontrando um servidor adequado
Se você for montar esse servidor, primeiro precisará encontrar o hardware certo. Um servidor usado deve ser bastante adequado para esta construção, já que não precisaremos de muito desempenho para tarefas de armazenamento. Entre as coisas necessárias, devemos destacar uma grande quantidade de RAM, vários conectores SATA e boas placas de rede. Como meu servidor funcionará no local da minha residência permanente, o nível de ruído também é importante.
Comecei minha pesquisa no eBay. Embora eu tenha encontrado muitos Dell PowerEdge R410/R210 usados por menos de US$ 100, tendo experiência trabalhando em uma sala de servidores, eu sabia que essas unidades 1U faziam muito barulho e não eram adequadas para uso doméstico. Como regra, os servidores em torre costumam ser menos barulhentos, mas, infelizmente, havia poucos deles no eBay e todos eram caros ou de baixa potência.
O próximo lugar para procurar foi o Craiglist, onde encontrei alguém vendendo um HP ProLiant N40L usado por apenas US$ 75! Eu estava familiarizado com esses servidores, que geralmente custam cerca de US$ 300 mesmo usados, então enviei um e-mail ao vendedor na esperança de que o anúncio ainda estivesse ativo. Ao saber que assim era, sem pensar duas vezes, fui a San Mateo buscar este servidor, o que à primeira vista me agradou definitivamente. Tinha desgaste mínimo e, exceto por um pouco de poeira, todo o resto estava ótimo.
Foto do servidor, imediatamente após a compra
Aqui estão as especificações do kit que comprei:
- CPU: Processador AMD Turion(tm) II Neo N40L de núcleo duplo (64 bits)
- RAM: 8 GB de RAM não ECC (instalado pelo proprietário anterior)
- Flash: Unidade USB de 4 GB
- Conectores SATA: 4 + 1
- NIC: NIC integrada de 1 Gbps
Escusado será dizer que apesar de já ter vários anos, as especificações deste servidor ainda são superiores à maioria das opções de NAS do mercado, especialmente em termos de RAM. Um pouco mais tarde, até atualizei para ECC de 16 GB com tamanho de buffer aumentado e maior proteção de dados.
Selecionando discos rígidos
Agora temos um excelente sistema de trabalho e só falta selecionar os discos rígidos para ele. Obviamente, por esses US$ 75 eu só comprei o servidor sem o HDD, o que não me surpreendeu.
Depois de fazer uma pequena pesquisa, descobri que os HDDs WD Red são mais adequados para executar sistemas NAS 24 horas por dia, 7 dias por semana. Para adquiri-los, recorri à Amazon, onde adquiri 4 exemplares de 3 TB cada. Basicamente, você pode conectar qualquer HDD de sua preferência, mas certifique-se de que tenham a mesma capacidade e velocidade. Isso o ajudará a evitar possíveis problemas de desempenho do RAID no longo prazo.
Configuração do sistema
Acho que muitos usarão o sistema para suas construções de NAS
Instalar o CentOS em USB é bastante simples - basta especificar USB como fonte de inicialização e, ao iniciar, o assistente de instalação irá guiá-lo por todas as etapas.
Compilação RAID
Depois de instalar o CentOS com sucesso, também instalei o ZFS no Linux seguindo os passos listados
Assim que esse processo foi concluído, carreguei o módulo ZFS Kernel:
$ sudo modprobe zfs
E criei o array RAIDZ1 usando o comando zpool
:
$ sudo zpool create data raidz1 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609145 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609146 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609147 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609148
$ sudo zpool add data log ata-SanDisk_Ultra_II_240GB_174204A06001-part5
$ sudo zpool add data cache ata-SanDisk_Ultra_II_240GB_174204A06001-part6
Observe que aqui estou usando os IDs dos discos rígidos em vez de seus nomes de exibição (sdx
) para reduzir a chance de falha na montagem após a inicialização devido a uma mudança de letra.
Também adicionei cache ZIL e L2ARC rodando em um SSD separado, dividindo esse SSD em duas partições: 5 GB para ZIL e o restante para L2ARC.
Quanto ao RAIDZ1, ele pode suportar 1 falha de disco. Muitos argumentam que esta opção de pool não deve ser usada devido à probabilidade de o segundo disco falhar durante o processo de reconstrução do RAID, o que pode levar à perda de dados. Ignorei essa recomendação, pois fazia regularmente cópias de backup de dados importantes em um dispositivo remoto, e a falha de todo o array só pode afetar a disponibilidade dos dados, mas não sua segurança. Se você não tiver a capacidade de fazer backups, seria melhor usar soluções como RAIDZ2 ou RAID10.
Você pode verificar se a criação do pool foi bem-sucedida executando:
$ sudo zpool status
и
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data
Por padrão, o ZFS monta o pool recém-criado diretamente no /
, o que geralmente é indesejável. Você pode alterar isso executando:
zfs set mountpoint=/mnt/data data
A partir daqui você pode optar por criar um ou mais conjuntos de dados para armazenar os dados. Criei dois, um para backup do Time Machine e outro para armazenamento compartilhado de arquivos. Limitei o tamanho do conjunto de dados do Time Machine a uma cota de 512 GB para evitar seu crescimento infinito.
Otimização
zfs set compression=on data
Este comando ativa o suporte à compactação ZFS. A compactação usa energia mínima da CPU, mas pode melhorar significativamente o rendimento de E/S, por isso é sempre recomendada.
zfs set relatime=on data
Com este comando reduzimos o número de atualizações para atime
para reduzir a geração de IOPS ao acessar arquivos.
Por padrão, o ZFS no Linux usa 50% da memória física para ARC. No meu caso, quando o número total de arquivos é pequeno, isso pode ser aumentado com segurança para 90%, já que nenhum outro aplicativo estará em execução no servidor.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112
Então com a ajuda
$ python arc_summary.py
...
ARC Size: 100.05% 11.55 GiB
Target Size: (Adaptive) 100.00% 11.54 GiB
Min Size (Hard Limit): 0.27% 32.00 MiB
Max Size (High Water): 369:1 11.54 GiB
...
Configurando tarefas recorrentes
eu usei
Instalando o Netatalk
Configuração
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;
[Global]
; Global server settings
mimic model = TimeCapsule6,106
; [Homes]
; basedir regex = /home
; [My AFP Volume]
; path = /path/to/volume
; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes
[Datong's Files]
path = /mnt/data/datong
valid users = datong
[Datong's Time Machine Backups]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong
Note-se que vol dbnest
é uma grande melhoria no meu caso, já que por padrão o Netatalk grava o banco de dados CNID na raiz do sistema de arquivos, o que não era nada desejável, já que meu sistema de arquivos principal roda em USB e é, portanto, relativamente lento. Ligando vol dbnest
resulta em salvar o banco de dados na raiz do volume, que neste caso pertence ao pool ZFS e já é uma ordem de grandeza mais produtiva.
Habilitando portas no Firewall
$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
Se tudo estiver configurado corretamente, sua máquina deverá aparecer no Finder e o Time Machine também deverá funcionar.
Configurações adicionais
Monitoramento INTELIGENTE
Recomenda-se monitorar o status dos seus discos para evitar falhas no disco.
$ sudo yum install smartmontools
$ sudo systemctl start smartd
Daemon para UPS
Monitora a carga do UPS APC e desliga o sistema quando a carga fica criticamente baixa.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd
Atualização de hardware
Uma semana depois de configurar o sistema, comecei a ficar cada vez mais preocupado com a memória não-ECC do servidor. Além disso, no caso do ZFS, memória adicional para buffer será muito útil. Então voltei para a Amazon, onde comprei 2 RAM Kingston DDR3 8GB ECC por US $ 80 cada e substituí a RAM do desktop instalada pelo proprietário anterior. O sistema inicializou pela primeira vez sem problemas e certifiquei-me de que o suporte ECC estava ativado:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.
resultado
Fiquei muito satisfeito com o resultado. Agora posso manter constantemente a conexão LAN de 1 Gbps do servidor ocupada copiando arquivos, e o Time Machine funciona perfeitamente. Então, no geral, estou feliz com a configuração.
O custo total:
- 1 * HP ProLiant N40L = US$ 75
- 2 * 8 GB de RAM ECC = US$ 174
- 4 * HDD WD Red de 3 TB = US$ 440
No total = $ 689
Agora posso dizer que o preço valeu a pena.
Você faz seus próprios servidores NAS?
Fonte: habr.com