Recommandations sur ZFS sur FreeBSD comme boîtier NAS?

9

Veuillez noter que les réponses sur cette page datent de 2009 et ne doivent pas être considérées comme un évangile. Si vous avez une question spécifique à propos de veuillez cliquer sur le bouton Poser une question et poser une question spécifique.

Je pensais à construire un système de sauvegarde à domicile en utilisant FreeBSD 7.2 et le système de fichiers ZFS. Quelqu'un at-il eu une expérience avec ce système de fichiers?

Plus précisément:

  • Est-il possible de démarrer à partir de ZFS? (Voudrais-je le faire?)
  • Est-il facile d'ajouter un lecteur?
  • Comment gère-t-il les disques de différentes tailles?
  • Pouvez-vous ajouter de nouveaux disques à la volée (ou au moins avec juste un redémarrage)?
  • Serais-je mieux servi par quelque chose sur étagère?

Toute autre réflexion et suggestion serait la bienvenue.

Éditer:

Juste pour être clair, j'ai lu la page FreeBSD sur ZFS . Je recherche des suggestions de personnes ayant une expérience pratique avec une configuration similaire à ce que je veux.

pleurer
la source

Réponses:

13

Je crée un serveur de fichiers FreeBSD à domicile en utilisant ZFS.

Il s'agit d'un AMD X2 3200+ avec 3 Go de RAM. Il possède un PCI Express Gig-E. Le disque de démarrage est un vieux 400 Go et j'ai 4 disques Seagte de 750 Go (un avec une version de firmware différente, juste au cas où).

Le démarrage à partir de ZFS aurait été bien (cela rendrait l'installation plus simple), mais j'ai utilisé les instructions ZFSOnRoot pour configurer le lecteur Root / OS avec ZFS (si toutes les partitions sont ZFS, il n'est pas nécessaire de faire un fsck au démarrage pour vérifier les systèmes de fichiers UFS). La raison pour laquelle vous le souhaitez, c'est que vous pouvez ensuite configurer toutes vos partitions (/ var, / usr, / tmp, etc.) avec différentes options selon les besoins (comme noatime et async pour / usr / obj, ce qui accélérera le noyau compile), mais ils partageront tous l'espace d'un pool commun. Ensuite, vous pouvez configurer un lecteur de données et donner à chaque utilisateur une partition qui lui est propre (avec différents devis et paramètres). Vous pouvez ensuite prendre des instantanés (qui sont peu coûteux sur 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

En termes de performances, la copie de fichiers est très rapide. La seule chose que je noterais est que j'utilise ZFS sur des systèmes FreeBSD AMD64 qui ont 3-4 Go et cela a bien fonctionné, mais d'après ma lecture, je serais inquiet de l'exécuter sur un système i386 qui avait 2 Go ou moins de mémoire.

J'ai manqué de ports SATA sur la carte mère, donc je n'ai pas essayé d'ajouter de nouveaux disques. La configuration initiale était simple, une commande pour créer le RAIDZ puis la commande pour créer / home, qui a été formatée en quelques secondes (IIRC). J'utilise toujours l'ancienne version de ZFS (v6), donc elle a quelques limitations (elle ne nécessite pas de disques de taille égale, mais contrairement à un Drobo, si vous aviez 3 disques de 750 Go et un disque de 1 To, le résultat final sera comme si vous aviez 4 disques de 750 Go).

L'une des principales raisons pour lesquelles j'ai utilisé ZFS avec RAIDZ était la somme de contrôle de bout en bout. Le CERN a publié un document qui a documenté un test qu'ils ont fait où ils ont trouvé plus de 200 erreurs de lecture non corrigées lors de l'exécution d'un test R / W sur une période de quelques semaines (l'ECC dans les disques de vente au détail devrait avoir un échec une fois toutes les 12 To lues). J'aimerais que les données sur mon serveur soient correctes. J'ai eu un crash dur à cause d'une panne de courant (quelqu'un a surchargé l'onduleur en y branchant un radiateur), mais lorsque le système peut revenir, ZFS est revenu rapidement, sans les problèmes fsck standard.

J'aime ça, car je pourrais ensuite ajouter CUPS à Samba pour obtenir un serveur d'impression. J'ai ajouté un cache DNS et je peux ajouter d'autres logiciels à ma guise (je pense à ajouter la surveillance SNMP aux postes de travail de ma maison pour mesurer l'utilisation de la bande passante). Pour ce que j'ai dépensé sur le système, je suis sûr que j'aurais pu acheter une boîte NAS bon marché, mais je n'aurais pas de boîte Unix locale 64 bits avec laquelle jouer. Si vous aimez FreeBSD, je dirais: allez-y. Si vous préférez Linux, je recommanderais une solution Linux. Si vous ne voulez pas faire d'administration, c'est à ce moment-là que je choisirais la boîte NAS autonome.

Lors de ma prochaine série de mises à niveau matérielles, je prévois de mettre à niveau le matériel, puis d'installer la version actuelle de FreeBSD, qui dispose de ZFS v13. V13 est cool parce que j'ai un disque RAM sauvegardé par batterie que je peux utiliser pour le journal ZIL (cela fait crier les écritures). Il prend également en charge l'utilisation de SSD pour accélérer le serveur de fichiers (les spécifications des nouveaux serveurs de fichiers Sun sont agréables, et ils les obtiennent d'un système ZFS qui utilise SSD pour rendre le système très rapide).

EDIT: (Je ne peux pas encore laisser de commentaires). J'ai à peu près suivi les instructions sur http://www.ish.com.au/solutions/articles/freebsdzfs . Le seul changement majeur qui existe dans 7.X depuis que ces instructions ont été écrites est que 7.2 est sorti et si vous avez 2+ Go, vous ne devriez pas avoir à ajouter les trois lignes suivantes dans /boot/loader.conf:

vm.kmem_size_max="1024M"
vm.kmem_size="1024M"  
vfs.zfs.arc_max="100M"

Les instructions expliquent également comment créer un miroir et comment remettre le système en mode de récupération (montage avec ZFS). Après avoir joué avec ses instructions une ou deux fois, j'ai ensuite utilisé le manuel d'administration ZFS de Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf pour mieux comprendre ce qu'était ZFS. Pour créer mon magasin de données, j'ai utilisé une version modifiée de la commande de la page 91 pour créer des pools ZFS. Ceci étant FreeBSD, j'ai dû faire un petit changement:

zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10

Où ad4-ad10 a été trouvé en exécutant dmesg | grep 'ata. * Master', ce sont les noms des disques durs SATA du système qui seront utilisés pour la partition Big Data. Sur ma carte mère, les trois premiers ports ata (ad0-3) où se trouvent les 4 ports PATA puis parce que chaque port SATA est un maître, il n'y a pas d'anciens numéros.

Pour créer le système de fichiers, je viens de faire:

zfs create dozer/data
zfs set mountpoint=/data dozer/tank

La deuxième commande est requise car j'ai désactivé les points de montage par défaut pour les partages.

Walter
la source
Avez-vous par hasard des notes de tout ce que vous avez fait? Et seriez-vous prêt à les publier? :)
pleurer le
Excellent article sur FreeNAS + ZFS. J'ai été curieux de cela moi-même. Merci pour votre information!
osij2 est
11

Introduction: J'ai finalement construit mon système, et voici mes notes, au cas où cela aiderait quelqu'un d'autre.

Buts:

  • Construisez un boîtier NAS domestique qui peut également servir de contrôle de source et de serveur Web interne.
  • Gardez le coût sous 1000 $

Caractéristiques:

  • Doit avoir au moins un téraoctet de stockage
  • Doit avoir une redondance des données (RAID ou quelque chose de similaire)
  • Doit pouvoir remplacer mon serveur de contrôle de code source vieillissant actuel

Conception:

  • FreeBSD 7.2 (éventuellement mis à niveau vers 8.0).
  • Le système d'exploitation est sur son propre lecteur de démarrage, dans ce cas, un lecteur IDE
  • Les données sont stockées sur six disques SATA.

Nous utilisons ZFS comme système de fichiers, car il a obtenu des critiques si favorables. ZFS nécessite à peu près que nous exécutions un système d'exploitation 64 bits et aime beaucoup de mémoire, donc je devrais obtenir un minimum de 4 Go

Matériel:

Logiciel: FreeBSD 7.2 - 1 @ 0,00 $ http://www.freebsd.org/

Coût total: 874.81 $

Configuration matérielle: une construction informatique de base, avec trois problèmes mineurs.

  1. Le boîtier que j'ai acheté avait des emplacements pour 6 disques durs et deux baies 3,5. J'ai supposé que l'IDE pouvait tenir dans l'une des 3,5 baies. C'était une mauvaise hypothèse et il n'y avait aucun moyen raisonnable de le faire fonctionner. Je suis allé acheter un adaptateur chez Fry pour environ 17,00 $, et cela a bien fonctionné.

  2. Les câbles Sata que j'ai achetés avaient des connecteurs à 90 degrés, ce qui était bien, sauf qu'avec six disques, il n'y avait aucun moyen de faire le travail. Le branchement d'un câble a fait pendre la partie rigide du connecteur sur le disque dur suivant. J'ai dû aller chez Fry et par 5 câbles SATA ordinaires. Malheureusement, ceux que j'ai achetés chez Newegg étaient si bon marché, que cela ne vaut pas la peine de les renvoyer.

  3. Le boîtier pointe l'arrière des disques durs vers le côté du boîtier, et les câbles d'alimentation de l'alimentation ont un connecteur rigide qui dépasse sur le bord du boîtier. Cela ne m'a pas permis de remettre le capot latéral en place. J'ai dû jouer un peu avec pour le faire fonctionner, et j'ai finalement fini avec les deux câbles d'alimentation modulaires (ils ont quatre fiches SATA sur chacun) entrelacés entre les disques, de sorte que le premier câble alimentait les disques 0, 2, et 4, et le deuxième 1, 3 et 5. sous tension. Cela a permis assez de flexion pour que je puisse les attacher par zip.

Configuration du système d'exploitation:

  1. Graver les ISO de FreeBSD 7.2 sur CD. J'aurais pu utiliser le seul DVD, mais je n'en avais pas traîné.

  2. Memtest86 + gravé ( http://www.memtest.org/ ) sur un CD.

  3. Alimenté l'ordinateur fraîchement construit et entré dans le bios pour vous assurer qu'il a vu les 7 lecteurs et le DVD-ROM. Ça faisait. Modification de l'ordre de démarrage pour créer le CD-ROM en premier.

  4. Insérez le CD memtest86 + dans l'ordinateur fraîchement construit, redémarrez-le et laissez-le fonctionner pendant la nuit. Passé sans erreur.

  5. Installé FreeBSD 7.2, si vous n'êtes pas familier avec cela, je vous recommande de lire ce qui suit: http://www.freebsd.org/doc/en/books/handbook/install.html Il fait beaucoup mieux d'expliquer quoi faire que moi pouvez. Voici mes paramètres spécifiques:

    • A fait une installation standard
    • Utilisé l'intégralité du lecteur IDE pour le système d'exploitation
      • utilisé la disposition par défaut du système de fichiers
      • laissé les 6 disques SATA intacts
    • Installation par les développeurs sans X-Windows, car la boîte sera sans tête
    • Le système n'est pas un client ou un serveur NFS
    • FTP et inetd désactivés
    • SSH autorisé
    • Aucun package ajouté (ceux-ci seront ajoutés ultérieurement).
    • Ajout d'un utilisateur
  6. Après l'installation et le redémarrage, j'ai remarqué que seulement 4 des 6 disques SATA ont été détectés. Je suis entré dans le BIOS et sous les périphériques intégrés, changez le type OnChip SATA pour être AHCI, et le type OnChip SATA port 4/5 pour être "SATA" et j'ai redémarré.

  7. À ce stade, FreeBSD a détecté les six disques comme: ad4 ad6 ad8 ad10 ad12 ad14

  8. Obtenez les dernières nouvelles de cvs en utilisant csup: csup -g -L 2 stable-supfile J'avais déjà édité le fichier pour utiliser l'hôte: cvsup11.us.FreeBSD.org en laissant toutes les autres informations telles quelles.

  9. Reconstruit et installé le dernier noyau et monde comme décrit ici: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Personnalisé mon noyau (voir ZFSNAS). J'ai désactivé un grand nombre de périphériques, car je ne prévois jamais d'utiliser SCSI, USB, PCMCIA, série, parallèle, etc., a ajouté ce qui suit à /etc/make.conf: CPUTYPE = athlon64 CFLAGS = -O2 -fno-strict-aliasing -pipe make -j8 buildworld

Configuration du NAS:

  1. Créez le pool ZFS pour notre stockage: zpool create storage raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Créez le système de fichiers d'accueil sur le stockage nouvellement créé:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. éditez /etc.rc/conf et ajoutez ce qui suit:

    zfs_enable="YES"
    

    Cela monte les systèmes de fichiers ZFS au démarrage.

  4. Création des répertoires root, samba et 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
    

    Sauf si vous avez besoin de plus de systèmes de fichiers sur votre pool, vous avez à peu près terminé avec la partie ZFS. Voir ce qui suit pour plus de détails: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Ports installés:

/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

Utilisateurs ajoutés:

user1
user2

Groupes créés:

sambashare
    Added user1 and user2 as members

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

Configuration de 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
pleurer
la source
Une réponse fantastique! Upvote ... vérifiez!
Mei
5
  • Est-il possible de démarrer à partir de ZFS? (Voudrais-je le faire?)

Je ne vois aucune raison pour laquelle vous voudriez, je pense que la prise en charge de Snapshot n'est que suffisamment mature dans OpenSolaris pour que vous puissiez revenir à une version plus ancienne et la démarrer (mais c'est en fait juste une supposition sauvage).

  • Est-il facile d'ajouter un lecteur?

Ajouter comme pour agrandir une piscine rayée? Ajoutez simplement un lecteur à la piscine, c'est à peu près tout. Considérez les implications de votre prochaine question.

  • Comment gère-t-il les disques de différentes tailles?

Vous pouvez l'utiliser comme bande et demander à ZFS de conserver n copies d'un fichier. Vous pouvez donc utiliser toute la disponibilité de stockage dont vous disposez et bénéficier d'une redondance décente

  • Pouvez-vous ajouter de nouveaux disques à la volée (ou au moins avec juste un redémarrage)?

Remplacement de périphériques dans un pool de stockage Je suppose que c'est la solution recommandée, la façon la plus simple de savoir si cela fonctionne sur FreeBSD est probablement de l'essayer.

  • Serais-je mieux servi par quelque chose sur étagère?

Avez-vous pensé que FreeNAS (Roadmap) 0.70 semble être sur le point d'être publié et prendra en charge ZFS.

Vous vous épargnerez les tracas de tout le cadre et obtiendrez une interface graphique relativement agréable à utiliser gratuitement avec.

Martin M.
la source
J'utilise FreeNAS 0.7RC1, et la configuration avec ZFS a été un jeu d'enfant.
Joseph
3

J'ai des serveurs avec FreeBSD + ZFS (sur 7.2-STABLE et 8.0-CURRENT), pas en production.

Le démarrage à partir de ZFS est décrit ici http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

L'ajout de lecteurs à la volée est aussi simple que de taper "zpool add mypool da7", un nouveau lecteur est utilisable juste après cela; vous pouvez également ajouter un tas de disques en stripe, miroir, raidz (raid-5 amélioré) ou raidz2 (raid-6 amélioré)

Des disques de différentes tailles peuvent être placés dans la piscine mais ne peuvent pas être utilisés dans le miroir / bande / raid (si je me souviens bien, seul le plus petit espace de disque dur sera alors utilisable)

(Ouvrir) Solaris prend en charge ZFS dès sa sortie de l'emballage

SaveTheRbtz
la source
2

Il y a un bon sujet sur la construction d'un NAS ZFS domestique chez ArsTechnica.

quux
la source