¿Recomendaciones sobre ZFS en FreeBSD como una caja NAS?

9

Tenga en cuenta que las respuestas en esta página son de 2009, y no debe considerarse como un evangelio. Si tiene una pregunta específica sobre , haga clic en el botón Hacer una pregunta y haga una pregunta específica.

Estaba pensando en construir un sistema de respaldo para el hogar usando FreeBSD 7.2 y el sistema de archivos ZFS. ¿Alguien ha tenido alguna experiencia con ese sistema de archivos?

Específicamente:

  • ¿Es posible arrancar desde ZFS? (¿Me gustaría?)
  • ¿Qué tan fácil es agregar una unidad?
  • ¿Qué tan bien maneja unidades de diferentes tamaños?
  • ¿Puedes agregar nuevas unidades sobre la marcha (o al menos con solo reiniciar)?
  • ¿Sería mejor que me sirviera algo del estante?

Cualquier otra idea y sugerencia sería bienvenida.

Editar:

Para ser claros, he leído la página de FreeBSD en ZFS . Estoy buscando sugerencias de personas con experiencia práctica con una configuración similar a la que quiero.

afligirse
fuente

Respuestas:

13

Construyo un servidor de archivos casero de FreeBSD usando ZFS.

Es un AMD X2 3200+ con 3 GB de RAM. Tiene un PCI Express Gig-E. La unidad de arranque es una vieja 400GB y tengo 4 unidades Seagte de 750GB (una con una versión de firmware diferente, por si acaso).

Arrancar desde ZFS hubiera sido bueno (facilitaría la instalación), pero utilicé las instrucciones de ZFSOnRoot para configurar la unidad Root / OS con ZFS (si todas las particiones son ZFS, entonces no es necesario hacer un fsck en el arranque para verificar los sistemas de archivos UFS). La razón por la que desea esto es que puede configurar todas sus particiones (/ var, / usr, / tmp, etc.) con diferentes opciones según sea necesario (como noatime y async para / usr / obj, lo que acelerará el kernel compila), pero todos compartirán espacio de un grupo común. Luego puede configurar una unidad de datos y dar a cada usuario una partición propia (con diferentes comillas y configuraciones). Luego puede tomar instantáneas (que son de bajo costo en 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 cuanto al rendimiento, copiar archivos es muy rápido. Lo único que quisiera señalar es que he estado usando ZFS en sistemas AMD64 de FreeBSD que tienen 3-4 GB y ha funcionado bien, pero por mi lectura, me preocuparía ejecutarlo en un sistema i386 que tenía 2 GB o menos memoria

Me quedé sin puertos SATA en la placa base, por lo que no he intentado agregar nuevas unidades. La configuración inicial fue simple, un comando para crear el RAIDZ y luego el comando para crear / home, que fue formateado en segundos (IIRC). Todavía estoy usando la versión anterior de ZFS (v6), por lo que tiene algunas limitaciones (no requiere unidades del mismo tamaño, pero a diferencia de un Drobo, si tenía 3 unidades de 750 GB y una unidad de 1 TB, el resultado final será como si tuvieras 4 unidades de 750GB).

Una de las principales razones por las que usé ZFS con RAIDZ fue la suma de verificación de extremo a extremo. El CERN publicó un documento que documentaba una prueba que hicieron donde encontraron más de 200 errores de lectura sin corregir mientras ejecutaban una prueba de R / W durante un período de unas pocas semanas (se espera que el ECC en las unidades minoristas tenga una falla una vez cada 12 TB leídos). Me gustaría que los datos de mi servidor sean correctos. Tuve un accidente grave debido a un corte de energía (alguien sobrecargó el UPS al enchufarle un calentador), pero cuando el sistema puede retroceder, ZFS regresó rápidamente, sin los problemas estándar de fsck.

Me gusta, porque luego podría agregar CUPS a Samba para obtener un servidor de impresión. Agregué un caché DNS y puedo agregar otro software a mi gusto (estoy pensando en agregar monitoreo SNMP a los escritorios de mi casa para medir el uso del ancho de banda). Por lo que gasté en el sistema, estoy seguro de que podría haber comprado una caja NAS barata, pero no tendría una caja Unix local de 64 bits para jugar. Si te gusta FreeBSD, diría ir con él. Si prefiere Linux, le recomendaría una solución Linux. Si no desea hacer ninguna administración, es cuando me gustaría ir a la caja NAS independiente.

En mi próxima ronda de actualizaciones de hardware, planeo actualizar el hardware y luego instalar la versión actual de FreeBSD, que tiene ZFS v13. V13 es genial porque tengo un disco RAM con batería de respaldo que puedo usar para el registro ZIL (esto hace que las escrituras griten). También es compatible con el uso de SSD para acelerar el servidor de archivos (las especificaciones de los nuevos servidores de archivos Sun son geniales y las obtienen de un sistema ZFS que usa SSD para que el sistema sea muy rápido).

EDITAR: (No puedo dejar comentarios todavía). Seguí las instrucciones en http://www.ish.com.au/solutions/articles/freebsdzfs . El único cambio importante que existe en 7.X desde que se escribieron esas instrucciones fue que salió 7.2 y si tiene más de 2 GB, no debería tener que agregar las siguientes tres líneas en /boot/loader.conf:

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

Las instrucciones también explican cómo crear un espejo y cómo volver a poner el sistema en modo de recuperación (montar con ZFS). Después de jugar con sus instrucciones una o dos veces, utilicé el manual de administración de ZFS de Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf para comprender mejor qué era ZFS. Para crear mi almacén de datos, utilicé una versión modificada del comando en la página 91 para crear grupos de ZFS. Siendo FreeBSD, tuve que hacer un pequeño cambio:

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

Donde ad4-ad10 se encuentra haciendo dmesg | grep 'ata. * Master', estos son los nombres de los discos duros SATA en el sistema que se utilizarán para la partición de big data. En mi placa base, los primeros tres puertos ata (ad0-3) donde los 4 puertos PATA y luego porque cada puerto SATA es un maestro, no hay números antiguos.

Para crear el sistema de archivos, acabo de hacer:

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

El segundo comando es obligatorio porque desactivé los puntos de montaje predeterminados para los recursos compartidos.

Walter
fuente
¿Por casualidad tienes notas de todo lo que hiciste? ¿Y estarías dispuesto a publicarlos? :)
llorar
Gran publicación en FreeNAS + ZFS. He tenido curiosidad por esto yo mismo. ¡Gracias por tu información!
osij2is
11

Introducción: finalmente construí mi sistema, y ​​aquí están mis notas, en caso de que ayude a alguien más.

Metas:

  • Construya una caja NAS doméstica que también puede funcionar como mi control de fuente y servidor web interno.
  • Mantenga el costo por debajo de $ 1000

Especificaciones:

  • Debe tener al menos un terabyte de almacenamiento
  • Debe tener redundancia de datos (RAID o algo similar)
  • Debe poder reemplazar mi servidor de control de código fuente obsoleto actual

Diseño:

  • FreeBSD 7.2 (eventualmente se actualizará a 8.0).
  • El sistema operativo está en su propia unidad de arranque, en este caso una unidad IDE
  • Los datos se almacenan en seis unidades SATA.

Utilizamos ZFS como sistema de archivos, ya que ha recibido críticas tan favorables. ZFS prácticamente requiere que ejecutemos un sistema operativo de 64 bits, y le gusta mucha memoria, por lo que debería obtener un mínimo de 4 Gb

Hardware:

Software: FreeBSD 7.2 - 1 @ $ 0.00 http://www.freebsd.org/

Costo total: $ 874.81

Configuración de hardware: una compilación básica de la computadora, con tres problemas menores.

  1. El estuche que compré tenía ranuras para 6 discos duros y dos bahías de 3.5. Supuse que el IDE podría caber en una de las 3.5 bahías. Esta fue una mala suposición, y no había una forma razonable de hacerlo funcionar. Fui y compré un adaptador en Fry's por ~ $ 17.00, y funcionó bien.

  2. Los cables Sata que compré tenían los conectores de 90 grados, lo cual era bueno, excepto que con seis unidades, no había forma de hacer el trabajo. Al enchufar un cable, la parte inflexible del conector se cuelga sobre el siguiente disco duro. Tuve que ir a Fry's y por 5 cables SATA regulares. Lamentablemente, los que compré en Newegg eran tan baratos que no vale la pena devolverlos.

  3. La caja apunta la parte posterior de los discos duros al costado de la caja, y los cables de alimentación de la fuente de alimentación tienen un conector rígido que sobresale por el borde de la caja. Esto no me permitió volver a colocar la cubierta lateral en su lugar. Tuve que jugar un poco para que funcionara, y finalmente terminé con los dos cables de alimentación modulares (tienen cuatro enchufes SATA en cada uno) intercalados entre las unidades, de modo que las primeras unidades alimentadas por cable 0, 2, y 4, y el segundo con potencia 1, 3 y 5. Esto permitió suficiente flexión para que yo pudiera cerrarlos.

Configuración del sistema operativo:

  1. Quemó los ISO de FreeBSD 7.2 en un CD. Podría haber usado el DVD único, pero no tenía nada por ahí.

  2. Quemado memtest86 + ( http://www.memtest.org/ ) en un CD.

  3. Encendió la computadora recién construida y entró en la BIOS para asegurarse de que vio las 7 unidades y el DVD-ROM. Lo hizo. Cambió el orden de arranque para hacer el CDROM primero.

  4. Insertó el CD memtest86 + en la computadora recién construida, lo reinició y lo dejé correr durante la noche. Pasó sin errores.

  5. Instaló FreeBSD 7.2, si no está familiarizado con esto, le recomiendo leer lo siguiente: http://www.freebsd.org/doc/en/books/handbook/install.html Hace un trabajo mucho mejor para explicar qué hacer que yo lata. Aquí están mis configuraciones específicas:

    • Hizo una instalación estándar
    • Usé la unidad IDE completa para el sistema operativo
      • utiliza el diseño del sistema de archivos predeterminado
      • dejó las 6 unidades SATA intactas
    • Instalación del desarrollador sin X-Windows, ya que la caja no tendrá cabeza
    • El sistema no es un cliente o servidor NFS
    • FTP e inetd deshabilitados
    • SSH permitido
    • No se agregaron paquetes (se agregarían más adelante).
    • Se agregó un usuario
  6. Después de instalar y reiniciar, noté que solo se detectaron 4 de las 6 unidades SATA. Entré en el BIOS y en Periféricos integrados, cambié el tipo de OnChip SATA para que sea AHCI, y el tipo de puerto 4/5 de OnChip SATA para que sea "SATA". Se guardó la configuración y se reinició.

  7. En este punto, FreeBSD detectó las seis unidades como: ad4 ad6 ad8 ad10 ad12 ad14

  8. Obtenga lo último de cvs usando csup: csup -g -L 2 stable-supfile Ya había editado el archivo para usar el host: cvsup11.us.FreeBSD.org dejando toda la otra información como está.

  9. Reconstruí e instalé el kernel y el mundo más recientes como se describe aquí: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Personalicé mi kernel (ver ZFSNAS). Deshabilité un gran conjunto de dispositivos, ya que nunca planeo usar SCSI, USB, PCMCIA, Serial, Paralelo, etc., agregué lo siguiente a /etc/make.conf: CPUTYPE = athlon64 CFLAGS = -O2 -fno-estricto-aliasing -pipe make -j8 buildworld

Configuración de NAS:

  1. Cree el grupo ZFS para nuestro almacenamiento: zpool cree almacenamiento raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Cree el sistema de archivos de inicio en el almacenamiento recién creado:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. edite /etc.rc/conf y agregue lo siguiente:

    zfs_enable="YES"
    

    Esto monta los sistemas de archivos ZFS en el arranque.

  4. Creación de directorios raíz, samba y forzada

    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 menos que necesite más sistemas de archivos en su grupo, ya ha terminado con la parte de ZFS. Consulte lo siguiente para obtener más detalles: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Puertos instalados:

/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

Usuarios agregados:

user1
user2

Grupos creados:

sambashare
    Added user1 and user2 as members

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

Configuración 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
afligirse
fuente
Fantástica respuesta! Votación a favor ... ¡cheque!
Mei
5
  • ¿Es posible arrancar desde ZFS? (¿Me gustaría?)

No veo ninguna razón por la que quiera hacerlo, creo que el soporte de Snapshot solo es lo suficientemente maduro en OpenSolaris para que pueda volver a una versión anterior y arrancar eso (pero eso es solo una suposición descabellada).

  • ¿Qué tan fácil es agregar una unidad?

Agregar como en expandir un grupo rayado? Simplemente agregue una unidad al grupo, eso es todo. Considera las implicaciones de tu próxima pregunta, tú.

  • ¿Qué tan bien maneja unidades de diferentes tamaños?

Puede usarlo como una banda y decirle a ZFS que guarde n copias de un archivo. Por lo tanto, podría usar la disponibilidad de almacenamiento total que tiene y aún así obtener una redundancia decente

  • ¿Puedes agregar nuevas unidades sobre la marcha (o al menos con solo reiniciar)?

Reemplazo de dispositivos en un grupo de almacenamiento Supongo que esta es la solución recomendada, la forma más fácil de averiguar qué tan bien funciona en FreeBSD es intentarlo.

  • ¿Sería mejor que me sirviera algo del estante?

¿Ha considerado FreeNAS (Roadmap) 0.70 parece estar a punto de ser lanzado y será compatible con ZFS.

Se ahorrará la molestia de todo el marco y obtendrá una GUI relativamente agradable de usar de forma gratuita con él.

Martin M.
fuente
Estoy usando FreeNAS 0.7RC1, y ha sido muy fácil de configurar con ZFS.
Joseph
3

Tengo servidores con FreeBSD + ZFS (en 7.2-STABLE y 8.0-CURRENT), no en producción tú.

El arranque desde ZFS se describe aquí http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

Agregar unidades sobre la marcha es tan fácil como escribir "zpool add mypool da7", la nueva unidad se puede utilizar inmediatamente después; También puede agregar un montón de unidades en banda, espejo, raidz (raid-5 mejorado) o raidz2 (raid-6 mejorado)

Las unidades de diferentes tamaños se pueden colocar en la piscina, pero no se pueden usar en espejo / banda / banda (si recuerdo correctamente, solo se podrá utilizar el espacio más pequeño en el disco duro)

(Abierto) Solaris admite ZFS desde el primer momento

SaveTheRbtz
fuente
2

Hay un buen hilo sobre la construcción de un NAS ZFS en casa en ArsTechnica.

quux
fuente