Anch'io, come molti altri utenti di MacBook Pro, ho avuto un problema con la mancanza di memoria interna. Per essere precisi, il mio rMBP, che utilizzo quotidianamente, era dotato di un SSD da soli 256GB, che evidentemente non era sufficiente per un lungo periodo.
Quando ho iniziato a registrare video durante i miei voli, la situazione è peggiorata ulteriormente. Il volume dei materiali registrati dopo tali voli superava i 50+ GB, e il mio maledetto SSD da 256GB si è riempito molto presto, costringendomi ad acquistare un disco esterno da 1TB. Tuttavia, dopo un anno, anche questo non è riuscito a gestire i volumi di dati che generavo, per non parlare della mancanza di ridondanza e backup, che lo rendevano inadeguato per memorizzare informazioni importanti.
Così, a un certo punto, ho deciso di assemblare un NAS di grande volume nella speranza che questo sistema durasse almeno un paio d'anni, senza richiedere un altro aggiornamento.
Ho scritto questo articolo prima di tutto come promemoria di cosa e come ho fatto, nel caso mi servisse farlo di nuovo. Spero che possa essere utile anche a voi se avete intenzione di fare lo stesso.
Forse sarebbe più semplice comprare?
Dunque, sappiamo cosa vogliamo ottenere, rimane il problema di come farlo?
Inizialmente ho esaminato le soluzioni commerciali e ho considerato, in particolare, l'azienda Synology, che si presume offra i migliori sistemi NAS consumer sul mercato. Tuttavia, il costo di questo servizio si è rivelato piuttosto alto. Il sistema più economico con 4 scomparti costa oltre 300 $, e inoltre i dischi rigidi non sono inclusi. Inoltre, l'hardware interno di questo kit non è particolarmente impressionante, il che solleva dubbi sulla sua reale prestazione.
Allora ho pensato: perché non assemblare un server NAS da solo?
Ricerca di un server adatto
Se hai intenzione di assemblare un server del genere, la prima cosa da fare è trovare l'hardware giusto. Per questa configurazione un server usato dovrebbe andare più che bene, poiché per le esigenze di archiviazione non abbiamo bisogno di prestazioni straordinarie. Tuttavia, è importante notare la grande quantità di RAM, diversi connettori SATA e delle buone schede di rete. Poiché il mio server funzionerà nel luogo dove risiedo permanentemente, anche il livello di rumore ha la sua importanza.
Ho iniziato la mia ricerca su eBay. Sebbene vi avessi trovato molti Dell PowerEdge R410/R210 usati a meno di $100, avendo esperienza in una sala server, sapevo che queste unità 1U producono troppo rumore e non sono adatte per uso domestico. Di norma, i server in formato tower sono generalmente meno rumorosi, ma sfortunatamente, su eBay ce n'erano pochi in vendita, e tutti erano o costosi o poco potenti.
Il prossimo posto dove cercare è stato il sito Craiglist, dove ho trovato una persona che vendeva un HP ProLiant N40L usato per soli $75! Ero familiare con questi server, che anche usati generalmente costano attorno ai $300, quindi ho inviato un'email al venditore sperando che l'annuncio fosse ancora valido. Scoperto che lo era, senza pensarci troppo, sono andato a San Mateo per ritirare questo server, che già a prima vista mi ha decisamente soddisfatto. Presentava un'usura minima e, a parte una leggera patina di polvere, tutto il resto era perfetto.

Foto del server, subito dopo l'acquisto
Ecco la specifica del pacchetto che ho acquistato:
- CPU: Processore AMD Turion(tm) II Neo N40L Dual-Core (64-bit)
- RAM: 8 GB di RAM non-ECC (installati dal precedente proprietario)
- Flash: Unità USB da 4 GB
- Connettori SATA: 4 + 1
- NIC: NIC on-board 1 Gbps
Vale la pena dire che, nonostante l'età di alcuni anni, la specifica di questo server supera ancora la maggior parte delle opzioni di sistemi NAS disponibili sul mercato, specialmente per quanto riguarda la RAM. Poco dopo, ho persino fatto un aggiornamento a 16 GB ECC con un buffer aumentato e una maggiore protezione dei dati.
Scelta dei dischi rigidi
Ora abbiamo un'ottima sistema funzionante e resta da scegliere i dischi rigidi per esso. È ovvio che per quei $75 ho ottenuto solo il server senza HDD, cosa che non mi ha sorpreso.
Dopo aver fatto alcune ricerche, ho scoperto che per lavorare con i sistemi NAS 24 ore su 24, 7 giorni su 7, i migliori HDD sono i WD Red. Per acquistarli, mi sono rivolto ad Amazon, dove ho acquistato 4 esemplari da 3 TB ciascuno. In sostanza, puoi collegare qualsiasi HDD preferito, ma assicurati che abbiano la stessa capacità e velocità. Questo ti aiuterà a evitare potenziali problemi di prestazioni RAID in futuro.
Impostazione del sistema
Penso che molti utilizzeranno un sistema per le proprie configurazioni NAS , e non c'è niente di male in questo. Tuttavia, nonostante la possibilità di installare questo sistema sul proprio server, ho preferito usare CentOS, poiché il sistema ZFS su Linux è stato originariamente preparato per un ambiente di produzione, e in generale la gestione di un server Linux mi è più familiare. Inoltre, non ero interessato a un'interfaccia alla moda e alle funzionalità fornite da FreeNAS: mi bastava un array RAIDZ e la condivisione AFP.
Installare CentOS su USB è abbastanza semplice: basta selezionare USB come sorgente di avvio, e all'avvio il master di installazione ti guiderà attraverso tutte le sue fasi.
Creazione di RAID
Dopo aver installato con successo CentOS, ho anche installato ZFS su Linux, seguendo i passi elencati .
Al termine di questo processo, ho caricato il modulo ZFS Kernel:
$ sudo modprobe zfs E ho creato un array RAIDZ1 con il 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 Si prega di notare che qui uso gli ID dei dischi rigidi invece dei loro nomi visualizzati (sdx), per ridurre le probabilità di un errore nel montaggio dopo l'avvio a causa del cambio della lettera del disco.
Ho anche aggiunto ZIL e cache L2ARC, eseguiti su un SSD separato, suddividendo questo SSD in due partizioni: 5GB per ZIL e il resto per L2ARC.
Per quanto riguarda RAIDZ1, può tollerare il guasto di 1 disco. Molti sostengono che questa opzione di pool non dovrebbe essere utilizzata a causa della probabilità che un secondo disco possa guastarsi durante il processo di ricostruzione del RAID, il che comporta la perdita di dati. Io ho ignorato questo consiglio, poiché facevo regolarmente backup dei dati importanti su un dispositivo remoto, e il guasto dell'intero array può influire solo sulla disponibilità dei dati, ma non sulla loro integrità. Se non hai la possibilità di fare backup, è meglio utilizzare soluzioni come RAIDZ2 o RAID10.
Per verificare il successo della creazione del pool, è possibile eseguire:
$ sudo zpool statuse
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data Per impostazione predefinita, ZFS monta il pool appena creato direttamente in /, il che, di solito, non è desiderabile. È possibile modificarlo eseguendo:
zfs set mountpoint=/mnt/data dataDa qui puoi scegliere di creare uno o più dataset per l'archiviazione dei dati. Ho creato due dataset, uno per il backup di Time Machine e l'altro per l'archiviazione generale dei file. Ho impostato una quota di 512 GB per il dataset di Time Machine per prevenire la sua crescita infinita.
Ottimizzazione
zfs set compression=on dataQuesto comando attiva il supporto per la compressione ZFS. La compressione utilizza un minimo di potenza della CPU, ma può migliorare notevolmente la larghezza di banda I/O, quindi è sempre consigliata.
zfs set relatime=on data Con questo comando riduciamo il numero di aggiornamenti a atime, per diminuire la generazione di IOPS durante l'accesso ai file.
Per impostazione predefinita, ZFS su Linux utilizza il 50% della memoria fisica per ARC. Nel mio caso, poiché il numero totale di file è contenuto, questo valore può essere aumentato in sicurezza fino al 90%, in quanto non ci saranno altre applicazioni in esecuzione sul server.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Poi, con , puoi verificare che le modifiche siano state applicate:
$ python arc_summary.py
...
Dimensione ARC: 100.05% 11.55 GiB
Dimensione target: (Adattiva) 100.00% 11.54 GiB
Dimensione minima (Limite duro): 0.27% 32.00 MiB
Dimensione massima (Alto livello): 369:1 11.54 GiB
...Impostazione di attività ricorrenti
Ho usato per configurare timer systemd per eseguire pulizie settimanali e per creare automaticamente istantanee dello stato ogni 15 minuti, 1 ora e 1 giorno.
Installazione di Netatalk
è un'implementazione open source di AFP (). Seguendo S, in pochi minuti ho ottenuto un pacchetto RPM compilato e installato.
Configurazione
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; File di configurazione Netatalk 3.x
;
[Globale]
; Impostazioni globali del server
mimic model = TimeCapsule6,106
; [Home]
; basato su regex = /home
; [Il mio volume AFP]
; path = /path/to/volume
; [Il mio volume Time Machine]
; path = /path/to/backup
; time machine = yes
[File di Datong]
path = /mnt/data/datong
valid users = datong
[I backup di Time Machine di Datong]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong Si prega di notare che vol dbnest è un notevole miglioramento nel mio caso, poiché per impostazione predefinita Netatalk scrive il database CNID nella radice del filesystem, cosa che non era desiderabile dal momento che il mio filesystem principale è su USB, il che rende il tutto piuttosto lento. L'attivazione di vol dbnest porta invece il database nella radice del Volume, che in questo caso si riferisce al pool ZFS ed è già molto più veloce.
Attivazione delle porte nel Firewall
$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp sudo firewall-cmd —permanente —zone=pubblico —add-port=afpovertcp/tcp
Se tutto è stato configurato correttamente, la tua macchina dovrebbe apparire nel Finder e Time Machine dovrebbe funzionare.
Impostazioni aggiuntive
Monitoraggio S.M.A.R.T
È consigliabile monitorare lo stato dei tuoi dischi per prevenire guasti.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDemonio per UPS
Monitora la carica dell'UPS APC e spegne il sistema quando la carica diventa critica.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdAggiornamento hardware
Dopo una settimana dalla configurazione del sistema, ho iniziato a preoccuparmi sempre di più per il fatto che nel server fosse installata memoria senza ECC. Inoltre, nel caso di ZFS, una memoria aggiuntiva per il buffering sarebbe molto utile. Così sono tornato su Amazon, dove ho acquistato 2x Kingston DDR3 8GB ECC RAM a $80 ciascuna e ho sostituito la RAM da desktop installata dal precedente proprietario. Il sistema si è avviato al primo tentativo senza alcun problema e ho verificato che il supporto ECC fosse stato attivato:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC abilitato.Risultato
Il risultato mi ha molto soddisfatto. Ora posso caricare continuamente una connessione LAN da 1Gbps del server copiando file, e Time Machine funziona alla perfezione. Quindi, nel complesso, sono soddisfatto della configurazione.
Costo totale:
- 1 * HP ProLiant N40L = $75
- 2 * 8 GB RAM ECC = $174
- 4 * WD Red 3 TB HDD = $440
Totale = $689
Ora posso dire che il prezzo è stato giusto.
Costruisci tu stesso server NAS?
Fonte: habr.com
