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.