Question Recommandations sur ZFS sur FreeBSD en tant que boîtier NAS?


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 sur  alors s'il vous plaît cliquez sur le Poser une question bouton et poser une question spécifique.

Je pensais à la construction d’un système de sauvegarde à domicile avec FreeBSD 7.2 et le système de fichiers ZFS. Quelqu'un a-t-il déjà utilisé ce système de fichiers?

Plus précisément:

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

Toute autre pensée ou suggestion serait la bienvenue.

Modifier:

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


9
2018-06-09 22:29


origine




Réponses:


Je construis un serveur de fichiers FreeBSD à la maison en utilisant ZFS.

C'est un AMD X2 3200+ avec 3 Go de RAM. Il a un PCI Express Gig-E. Le lecteur de démarrage est un ancien 400 Go et j'ai 4 disques Seagte de 750 Go (un avec une version différente du micrologiciel, juste au cas où).

Démarrer à partir de ZFS aurait été bien (cela simplifierait l'installation), 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. vérifier les systèmes de fichiers UFS). La raison pour laquelle vous souhaiteriez cela est que vous pouvez ensuite configurer toutes vos partitions (/ var, / usr, / tmp, etc.) avec différentes options selon vos besoins (telles que noatime et async pour / usr / obj, ce qui accélérera la vitesse du noyau compile), mais ils partageront tous l’espace d’un pool commun. Vous pouvez ensuite configurer un lecteur de données et attribuer à chaque utilisateur une partition qui lui est propre (avec des citations et des paramètres différents). 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 voudrais noter, c’est que j’utilise ZFS sur des systèmes FreeBSD AMD64 dotés de 3 à 4 Go et que cela a bien fonctionné, mais ma lecture me faisait craindre de l’exécuter sur un système i386 doté de 2 Go ou plus. 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 lecteurs. La configuration initiale était simple: une commande pour créer le RAIDZ, puis la commande pour créer / home, formatée en secondes (IIRC). J'utilise toujours l'ancienne version de ZFS (v6), ce qui a quelques limitations (cela ne nécessite pas de disques de taille égale, mais contrairement à Drobo, si vous aviez 3 disques de 750 Go et 1 disque, le résultat final sera comme si vous aviez 4 lecteurs 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 article dans lequel il documentait un test où il avait détecté plus de 200 erreurs de lecture non corrigées lorsqu’il effectuait un test R / W sur une période de quelques semaines (l’ECC des lecteurs de vente au détail devrait connaître une défaillance 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 chauffage d'appoint), mais lorsque le système peut revenir en arrière, ZFS est revenu rapidement, sans les problèmes fsck standard.

J'aime ça, parce que 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 songe à ajouter la surveillance SNMP aux ordinateurs de bureau chez moi pour mesurer l'utilisation de la bande passante). Pour ce que j'ai dépensé sur le système, je suis sûr que je pourrais acheter un boîtier NAS bon marché, mais je n'aurais alors pas de boîtier Unix local 64 bits avec lequel jouer. Si vous aimez FreeBSD, je vous conseille de continuer. 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 une 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é sur batterie que je peux utiliser pour le journal ZIL (cela fait écrire crie). Il prend également en charge l’utilisation de disques SSD pour accélérer le serveur de fichiers (les spécifications des nouveaux serveurs de fichiers Sun sont simples et proviennent d’un système ZFS qui utilise SSD pour rendre le système très rapide).

EDIT: (Ne peut pas laisser de commentaires pour le moment). J'ai à peu près suivi les instructions de http://www.ish.com.au/solutions/articles/freebsdzfs. Le changement majeur qui existe dans 7.X depuis la rédaction de ces instructions est que la version 7.2 est sortie et que si vous avez plus de 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é une ou deux fois avec ses instructions, j’ai ensuite utilisé le manuel d’administrateur 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 création de pools ZFS. Ceci étant FreeBSD, je devais faire un petit changement:

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

Où ad4-ad10 a été trouvé en effectuant dmesg | grep 'ata. * Master', il s'agit des 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 comme chaque port SATA est un maître, il n’ya 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.


13
2018-06-21 23:48



Avez-vous par hasard des notes sur tout ce que vous avez fait? Et seriez-vous prêt à les poster? :) - grieve
Excellent post sur FreeNAS + ZFS. J'ai moi-même été curieux à ce sujet. Merci pour votre information! - osij2is


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 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 à jour vers la version 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 reçu de telles critiques favorables.         ZFS nécessite à peu près que nous utilisions 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 materielle:     Une construction informatique de base, avec trois problèmes mineurs.

  1. Le boîtier que j'ai acheté comportait des emplacements pour 6 disques durs et deux baies 3,5. je supposons que l’IDE ​​puisse s’inscrire dans l’une des 3,5 baies. C'était un mauvais hypothèse, et il n’existait aucun moyen raisonnable de le faire fonctionner. Je suis allé et acheté un adaptateur chez Fry pour ~ 17,00 $, et cela a bien fonctionné.

  2. Les câbles Sata que j'ai achetés avaient les connecteurs à 90 degrés, ce qui était Bien, sauf avec six disques, il n'y avait aucun moyen de faire le travail. Bouchage dans un câble a fait pendre la partie inflexible du connecteur sur la prochain disque dur. Je devais aller chez Fry's et avec 5 câbles SATA normaux. Malheureusement Ceux que j'ai achetés chez Newegg étaient si bon marché que ça ne vaut pas la peine d'être envoyés leur retour.

  3. Le boîtier pointe le dos des disques durs sur le côté du boîtier, et les câbles d'alimentation de l'alimentation ont un connecteur rigide qui coincé sur le bord de l'affaire. Cela ne m'a pas permis de glisser le couvercle latéral en place. Je devais jouer un peu avec pour l'obtenir pour travailler, et finalement fini avec les deux des câbles d'alimentation modulaires (ils ont quatre fiches SATA sur chaque) entrelacés entre les disques, de sorte que le premier lecteur alimenté par câble 0, 2 et 4, et le second alimenté par 1, 3, et 5. Cela a permis suffisamment de souplesse pour que je puisse les attacher avec un zip.

Configuration du système d'exploitation:

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

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

  3. Alimenté l'ordinateur nouvellement construit, et est allé dans le bios pour faire bien sûr, il a vu tous les 7 lecteurs et le DVD-ROM. Ça faisait. Changé l'ordre de démarrage faire le CD-ROM en premier.

  4. Insérez le memtest86 + CD dans l'ordinateur nouvellement construit, puis redémarrez-le. et laissez-le courir pendant la nuit. Passé sans erreur.

  5. Installé FreeBSD 7.2, si vous ne le connaissez pas, je le recommande en lisant ce qui suit: http://www.freebsd.org/doc/en/books/handbook/install.html Cela explique beaucoup mieux que je ne peux le faire. Voici mes paramètres spécifiques:

    • Est-ce qu'une installation standard
    • Utilisé l'intégralité du lecteur IDE pour le système d'exploitation
      • utilisé la structure par défaut du système de fichiers
      • laissé les 6 disques SATA intacts
    • Développeur installer sans X-Windows, puisque 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é
    • Ajout d'aucun paquet (ceux-ci seront ajoutés plus tard).
    • Ajout d'un utilisateur
  6. Après l’installation et le redémarrage, j’ai remarqué que seuls 4 des 6 disques SATA ont été détectés. Je suis allé dans le BIOS et sous périphériques intégrés changez le type SATA OnChip en AHCI et le type 4/5 du port SATA OnChip en "SATA" Paramètres enregistrés et redémarrés.

  7. À ce stade, FreeBSD a détecté les six lecteurs en tant que:     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 laissant toutes les autres informations telles quelles.

  9. Reconstruit et installé la dernière version du noyau et du 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,     puisque je ne prévois jamais d’utiliser SCSI, USB, PCMCIA, Série, Parallèle, etc. 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 créer un espace de stockage raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Créez le système de fichiers home 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 forforce

    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 pratiquement terminé avec la partie ZFS. Voir ci-dessous 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 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

11
2017-12-02 16:02



Réponse fantastique! Upvote ... check! - Mei


  • Est-il possible de démarrer à partir de ZFS? (Voudrais-je?)

Je ne vois aucune raison de vouloir le faire. Je pense que la prise en charge de Snapshot n’est suffisamment développée que dans OpenSolaris pour que vous puissiez revenir à une version plus ancienne et l’amorcer (mais ce n’est en réalité qu’une hypothèse époustouflante).

  • Est-il facile d'ajouter un lecteur?

Ajouter comme élargir une piscine rayée? Il suffit d'ajouter un lecteur à la piscine, c'est à peu près tout. Considérez les implications de votre prochaine question tu.

  • Dans quelle mesure gère-t-il les disques de différentes tailles?

Vous pouvez l’utiliser comme une bande et dire à ZFS de conserver n copies d’un fichier. Vous pouvez donc utiliser toute la disponibilité de stockage dont vous disposez tout en obtenant une redondance décente

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

Remplacement de périphériques dans un pool de stockage J'imagine que c'est la solution recommandée. La meilleure façon de savoir si cela fonctionne avec FreeBSD est probablement d'essayer.

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

Avez-vous considéré FreeNAS (feuille de route) 0.70 semble sur le point d'être publié et supportera ZFS.

Vous vous épargnerez les tracas de tout le framework et obtiendrez une interface relativement agréable à utiliser gratuitement avec celle-ci.


5
2018-06-10 01:27



J'utilise FreeNAS 0.7RC1 et l'installation avec ZFS a été un jeu d'enfant. - Joseph


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

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

Ajouter des disques à la volée est aussi simple que de taper "zpool add mypool da7", le nouveau disque est utilisable tout de suite après; vous pouvez également ajouter un ensemble complet de lecteurs en mode bande, miroir, raidz (raid-5 amélioré) ou raidz2 (amélioré raid-6)

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

(Open) Solaris prend immédiatement en charge ZFS.


3
2018-06-10 01:30





Il y a une belle fil sur la construction d’un NAS ZFS à domicile chez ArsTechnica.


2
2018-06-11 00:21





Je n'ai aucune expérience de ZFS, mais je viens de le voir dans mon chargeur RSS:

http://www.freebsdnews.net/2009/06/10/zfs-version-13-freebsd-current/

Ce qui suggère qu'il est en train de mûrir, mais qu'il n'est pas prêt pour la production (sous FreeBSD).


2