Consigli su ZFS su FreeBSD come una scatola NAS?


9

Si prega di notare che le risposte in questa pagina sono del 2009 e non devono essere considerate come vangelo. Se hai una domanda specifica su fai clic sul pulsante Poni una domanda e fai una domanda specifica.

Stavo pensando di costruire un sistema di backup domestico usando FreeBSD 7.2 e il file system ZFS. Qualcuno ha avuto esperienza con quel file system?

In particolare:

  • È possibile eseguire l'avvio da ZFS? (Vorrei?)
  • Quanto è facile aggiungere un'unità?
  • Quanto bene gestisce unità di dimensioni diverse?
  • Puoi aggiungere nuove unità al volo (o almeno con solo un riavvio)?
  • Sarei meglio servito da qualcosa dallo scaffale?

Qualsiasi altro pensiero e suggerimento sarebbe il benvenuto.

Modificare:

Giusto per essere chiaro, ho letto la pagina di FreeBSD su ZFS . Sto cercando suggerimenti da persone con esperienza pratica con una configurazione simile a quella che voglio.

Risposte:


13

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.


Hai per caso delle note di tutto quello che hai fatto? E saresti disposto a pubblicarli? :)
afflitto il

Ottimo post su FreeNAS + ZFS. Sono stato curioso di questo me stesso. Grazie per le tue informazioni!
osij2 è

11

Introduzione: ho finalmente costruito il mio sistema, e qui ci sono le mie note, nel caso in cui aiuti qualcun altro.

obiettivi:

  • Costruisci una scatola NAS domestica che può anche raddoppiare come controllo del codice sorgente e web server interno.
  • Mantenere il costo inferiore a $ 1000

specifiche tecniche:

  • Deve avere almeno un terabyte di spazio di archiviazione
  • Deve avere ridondanza dei dati (RAID o qualcosa di simile)
  • Deve essere in grado di sostituire il mio attuale server di controllo del codice sorgente obsoleto

Design:

  • FreeBSD 7.2 (eventualmente aggiornato a 8.0).
  • Il sistema operativo si trova sulla propria unità di avvio, in questo caso un'unità IDE
  • I dati sono memorizzati su sei unità SATA.

Usiamo ZFS come file system, poiché ha ottenuto recensioni così favorevoli. ZFS richiede praticamente di eseguire un sistema operativo a 64 bit e ama molta memoria, quindi dovrei ottenere un minimo di 4 GB

Hardware:

Software: FreeBSD 7.2 - 1 a $ 0,00 http://www.freebsd.org/

Costo totale: $ 874,81

Installazione dell'hardware: una build di computer di base, con tre problemi minori.

  1. Il caso che ho acquistato aveva slot per 6 dischi rigidi e due alloggiamenti da 3,5. Ho pensato che l'IDE potesse adattarsi a una delle 3.5 baie. Questa era una cattiva ipotesi e non c'era un modo ragionevole per farlo funzionare. Sono andato a comprare un adattatore da Fry's per ~ $ 17,00, e ha funzionato bene.

  2. I cavi Sata che ho acquistato avevano i connettori a 90 gradi, il che era bello, tranne che con sei unità, non c'era modo di fare il lavoro. Il collegamento di un cavo ha causato la sospensione della parte non flessibile del connettore sul disco rigido successivo. Ho dovuto andare da Fry e con 5 cavi SATA regolari. Purtroppo quelli che ho comprato a Newegg erano così economici, che non vale la pena rispedirli indietro.

  3. Il case punta il retro dei dischi rigidi verso il lato del case, ei cavi di alimentazione dell'alimentatore hanno un connettore rigido che sporge dal bordo del case. Questo non mi ha permesso di riportare la copertura laterale in posizione. Ho dovuto giocarci un po 'per farlo funzionare, e alla fine ho finito con i due cavi di alimentazione modulari (hanno quattro prese SATA su ciascuno) interlacciati tra le unità, in modo che il primo cavo alimentasse le unità 0, 2 e 4, e il secondo alimentato 1, 3 e 5. Questo mi ha permesso di flettere abbastanza da poterle legare di mezzo.

Configurazione del sistema operativo:

  1. Masterizzato gli ISO di FreeBSD 7.2 su CD. Avrei potuto usare il singolo DVD, ma non avevo nessuno in giro.

  2. Masterizzato memtest86 + ( http://www.memtest.org/ ) su un CD.

  3. Ha acceso il computer appena costruito ed è entrato nel bios per assicurarsi che vedesse tutte e 7 le unità e il DVD-ROM. Lo ha fatto. Modificato l'ordine di avvio per creare prima il CD-ROM.

  4. Inserito il CD memtest86 + nel computer appena costruito, riavviato e lasciato funzionare per tutta la notte. Passato senza errori.

  5. Installato FreeBSD 7.2, se non hai familiarità con questo ti consiglio di leggere quanto segue: http://www.freebsd.org/doc/en/books/handbook/install.html Fa un lavoro molto migliore nello spiegare cosa fare di me può. Ecco le mie impostazioni specifiche:

    • Ha fatto un'installazione standard
    • Utilizzato l'intero disco IDE per il sistema operativo
      • utilizzato il layout predefinito del file system
      • ha lasciato intatte le 6 unità SATA
    • Lo sviluppatore si installa senza X-Windows, poiché la scatola sarà senza testa
    • Il sistema non è un client o un server NFS
    • FTP e inetd disabilitati
    • SSH consentito
    • Nessun pacchetto aggiunto (quelli verranno aggiunti in seguito).
    • Aggiunto un utente
  6. Dopo l'installazione e il riavvio ho notato che sono state rilevate solo 4 delle 6 unità SATA. Sono andato nel BIOS e in Periferiche integrate ho cambiato il tipo SATA di OnChip in AHCI e il tipo di porta SATA 4/5 di OnChip in "SATA" ha salvato le impostazioni e riavviato.

  7. A questo punto FreeBSD ha rilevato tutte e sei le unità come: ad4 ad6 ad8 ad10 ad12 ad14

  8. Ricevi le ultime da cvs usando csup: csup -g -L 2 stable-supfile Avevo già modificato il file per utilizzare l'host: cvsup11.us.FreeBSD.org lasciando tutte le altre informazioni così come sono.

  9. Ricostruito e installato l'ultimo kernel e mondo come descritto qui: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Personalizzato il mio kernel (vedi ZFSNAS). Ho disabilitato un ampio set di dispositivi, dal momento che non ho mai intenzione di usare SCSI, USB, PCMCIA, seriale, parallelo, ecc. -pipe make -j8 buildworld

Configurazione NAS:

  1. Crea il pool ZFS per il nostro storage: zpool crea storage raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Creare il file system principale nella memoria appena creata:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. modifica /etc.rc/conf e aggiungi quanto segue:

    zfs_enable="YES"
    

    Questo monta i file system ZFS all'avvio.

  4. Creato directory root, samba e perforce

    zfs create storage/root
    cp -rp /root/* storage/root
    rm -rf /root 
    zfs set mountpoint=/root storage/root
    zfs create storage/fileshare
    zfs create storage/perforce
    

    A meno che tu non abbia bisogno di più file system nel tuo pool, hai praticamente finito con la parte ZFS. Per ulteriori dettagli, consultare: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Porte installate:

/usr/ports/shells/bash
    make install
/usr/ports/editors/vim
    make install
/usr/ports/net/samba33
    make
    make install
    // Use all defaults un-check cups.
/usr/ports/devel/perforce
    make
    make install PERFORCE_PORT=XXXX PERFORCE_USER=p4user PERFORCE_GROUP=p4
    rm -rf /usr/local/perforce
    cd /storage/perforce/
    mkdir root
    mkdir log
    chown p4user:p4user *
    cd /storage
    chown p4user:p4user perforce 

Edited /usr/local/etc/perforce.conf as follows:
    #
    # Perforce FreeBSD configuration file
    #
    #
    # $FreeBSD: ports/devel/perforce/files/perforce.conf.in,v 1.3 2005/01/18 15:43:36 lth Exp $

    #
    # Perforce ROOT
    #
    PERFORCE_ROOT="/storage/perforce/root"

    #
    # Perforce user (it is recommended to run p4d as a non-root user)
    #
    PERFORCE_USER="p4user"

    #
    # p4d/p4p port (default: 1666)
    #
    PERFORCE_PORT="XXXX"

    #
    # p4p cache directory
    #
    PERFORCE_PROXY_CACHE="/usr/local/perforce/cache"

    #
    # p4p target server (default: perforce:1666)
    #
    PERFORCE_PROXY_TARGET="perforce:1666"

    #
    # p4d options (see man p4d)
    #
    PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L /storage/perforce/logs/p4d.log"

    #
    # Uncomment this line to have the server started automatically
    #
    PERFORCE_START=yes

Utenti aggiunti:

user1
user2

Gruppi creati:

sambashare
    Added user1 and user2 as members

chgrp sambashare /storage/fileshare
chmod 775 /storage/fileshare
chmod g+s /storage/fileshare

Configurazione Samba:

Samba configuration file:
#################
    [global]
       workgroup = USERLAN
       server string = ZFS NAS
       security = user
       hosts allow = 192.168.1. 127.
       log file = /usr/local/samba/var/log.%m
       max log size = 50
       passdb backend = tdbsam
       dns proxy = no

    [user1share]
       comment = user1 share
       path = /storage/fileshare
       valid users = user1 user2
       public = no
       writable = yes
       printable = no
       create mask = 0765
#################

pdbedit -a -u user1 
    # followed prompts
pdbedit -a -u user2 
    # followed prompts

Risposta fantastica! Upvote ... controlla!
Mei,

5
  • È possibile eseguire l'avvio da ZFS? (Vorrei?)

Non vedo alcun motivo per cui vorresti farlo, penso che il supporto Snapshot sia abbastanza maturo in OpenSolaris in modo da poter tornare a una versione precedente e avviarlo (ma in realtà è solo un'ipotesi selvaggia).

  • Quanto è facile aggiungere un'unità?

Aggiungi come in espandi un pool a strisce? Basta aggiungere un disco al pool, questo è tutto. Considera le implicazioni della tua prossima domanda tu.

  • Quanto bene gestisce unità di dimensioni diverse?

Puoi usarlo come una striscia e dire a ZFS di conservare n copie di un file. In questo modo è possibile utilizzare la disponibilità di archiviazione completa disponibile e ottenere comunque ridondanza decente

  • Puoi aggiungere nuove unità al volo (o almeno con solo un riavvio)?

Sostituzione di dispositivi in ​​un pool di archiviazione Immagino che questa sia la soluzione consigliata, il modo più semplice per scoprire quanto funziona su FreeBSD è probabilmente quello di provarlo.

  • Sarei meglio servito da qualcosa dallo scaffale?

Hai considerato FreeNAS (Roadmap) 0.70 che sta per essere rilasciato e supporterà ZFS.

Ti risparmierai la seccatura di tutto il framework e otterrai una GUI relativamente carina da usare gratuitamente con essa.


Sto usando FreeNAS 0.7RC1 ed è stato semplicissimo da configurare con ZFS.
Joseph,

3

Ho server con FreeBSD + ZFS (su 7.2-STABLE e 8.0-CURRENT), non in produzione.

L'avvio da ZFS è descritto qui http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

Aggiungere unità al volo è facile come scrivere "zpool aggiungi mypool da7", la nuova unità è utilizzabile subito dopo; puoi anche aggiungere un sacco di unità in stripe, mirror, raidz (raid-5 migliorato) o raidz2 (raid-6 migliorato)

Unità di dimensioni diverse possono essere posizionate in piscina ma non possono essere utilizzate in mirror / stripe / raid (se ricordo bene, allora sarà utilizzabile solo lo spazio hdd più piccolo)

(Apri) Solaris supporta subito ZFS


2

C'è un bel filo sulla costruzione di un NAS ZFS domestico su ArsTechnica.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.