Costruisco un file server FreeBSD domestico usando ZFS.
È un AMD X2 3200+ con 3 GB di RAM. Ha un PCI Express Gig-E. L'unità di avvio è un vecchio 400 GB e ho 4 unità Seagte da 750 GB (una con una versione firmware diversa, per ogni evenienza).
L'avvio da ZFS sarebbe stato bello (renderebbe l'installazione più semplice), ma ho usato le istruzioni ZFSOnRoot per configurare l'unità Root / OS con ZFS (se tutte le partizioni sono ZFS, non è necessario eseguire un fsck all'avvio per controllare i filesystem UFS). Il motivo per cui vorresti questo è che puoi quindi impostare tutte le tue partizioni (/ var, / usr, / tmp, ecc.) Con diverse opzioni come richiesto (come noatime e async per / usr / obj, che velocizzerà il kernel compila), ma condivideranno tutti lo spazio da un pool comune. Quindi è possibile configurare un'unità dati e assegnare a ciascun utente una partizione propria (con virgolette e impostazioni diverse). È quindi possibile scattare istantanee (che sono a basso costo su ZFS).
My home server has a df that looks like:
/dev/ad0s1a 1.9G 744M 1.1G 41% /
devfs 1.0K 1.0K 0B 100% /dev
dozer/data 1.8T 62G 1.7T 3% /data
dozer/home 1.7T 9.6G 1.7T 1% /home
dozer/home/walterp 1.9T 220G 1.7T 11% /home/walterp
tank/tmp 352G 128K 352G 0% /tmp
tank/usr 356G 4.4G 352G 1% /usr
tank/var 354G 2.2G 352G 1% /var
Per quanto riguarda le prestazioni, la copia dei file è molto veloce. L'unica cosa che vorrei notare è che sto usando ZFS su sistemi FreeBSD AMD64 che hanno 3-4 GB e ha funzionato bene, ma dalla mia lettura, sarei preoccupato di eseguirlo su un sistema i386 che aveva 2 GB o meno memoria.
Ho esaurito le porte SATA sulla scheda madre, quindi non ho provato ad aggiungere nuove unità. La configurazione iniziale era semplice, un comando per creare il RAIDZ e poi il comando per creare / home, che è stato formattato in pochi secondi (IIRC). Sto ancora usando la versione precedente di ZFS (v6), quindi ha alcune limitazioni (non richiede unità di uguali dimensioni, ma a differenza di un Drobo, se avessi 3 unità da 750 GB e un'unità da 1 TB, il risultato finale sarà come se avessi 4 dischi da 750 GB).
Uno dei grandi motivi per cui ho usato ZFS con RAIDZ è stato il checksum end-to-end. Il CERN ha pubblicato un documento che documentava un test fatto dove trovavano più di 200 errori di lettura non corretti durante l'esecuzione di un test R / W per un periodo di alcune settimane (si prevede che l'ECC nelle unità di vendita al dettaglio avrà un errore una volta ogni 12 TB). Vorrei che i dati sul mio server fossero corretti. Ho avuto un grave incidente a causa di un'interruzione di corrente (qualcuno ha sovraccaricato l'UPS collegandovi un riscaldatore di spazio), ma quando il sistema può tornare indietro, ZFS è tornato rapidamente, senza i problemi standard di fsck.
Mi piace, perché potrei quindi aggiungere CUPS a Samba per ottenere un server di stampa. Ho aggiunto una cache DNS e posso aggiungere altri software come preferisco (sto pensando di aggiungere il monitoraggio SNMP ai desktop di casa mia per misurare l'utilizzo della larghezza di banda). Per quello che ho speso per il sistema, sono sicuro che avrei potuto comprare un NAS box economico, ma poi non avrei avuto un Unix locale a 64 bit con cui giocare. Se ti piace FreeBSD direi di andare con esso. Se preferisci Linux, allora consiglierei una soluzione Linux. Se non vuoi fare alcuna amministrazione, è allora che vorrei scegliere la scatola NAS indipendente.
Al mio prossimo giro di aggiornamenti hardware, sto pianificando di aggiornare l'hardware e quindi installare la versione corrente di FreeBSD, che ha ZFS v13. V13 è bello perché ho un backup del disco RAM della batteria che posso usare per il registro ZIL (questo fa urlare le scritture). Supporta anche l'uso degli SSD per velocizzare il file server (le specifiche sui nuovi server di file Sun sono semplici e le ottengono da un sistema ZFS che utilizza SSD per rendere il sistema molto veloce).
EDIT: (Non posso ancora lasciare commenti). Ho praticamente seguito le istruzioni su http://www.ish.com.au/solutions/articles/freebsdzfs . L'unica modifica importante che esiste in 7.X da quando sono state scritte quelle istruzioni è che 7.2 è uscito e se hai 2+ GB, non dovresti aggiungere le seguenti tre righe in /boot/loader.conf:
vm.kmem_size_max="1024M"
vm.kmem_size="1024M"
vfs.zfs.arc_max="100M"
Le istruzioni spiegano anche come creare un mirror e come riportare il sistema in modalità di ripristino (montare con ZFS). Dopo aver giocato con le sue istruzioni una o due volte, ho usato il manuale di amministrazione ZFS di Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf per capire meglio cosa fosse ZFS. Per creare il mio archivio dati, ho usato una versione modificata del comando a pagina 91 per creare pool ZFS. Essendo FreeBSD, ho dovuto fare una piccola modifica:
zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10
Dove ad4-ad10 è stato trovato facendo dmesg | grep 'ata. * Master', questi sono i nomi dei dischi rigidi SATA sul sistema che verranno usati per la partizione dei big data. Sulla mia scheda madre, le prime tre porte ata (ad0-3) in cui le 4 porte PATA e quindi poiché ogni porta SATA è un master, non ci sono vecchi numeri.
Per creare il file system, ho appena fatto:
zfs create dozer/data
zfs set mountpoint=/data dozer/tank
Il secondo comando è necessario perché ho disattivato i mountpoint predefiniti per le condivisioni.