This is the old XigmaNAS forum in read only mode,
it will taken offline by the end of march 2021!



I like to aks Users and Admins to rewrite/take over important post from here into the new fresh main forum!
Its not possible for us to export from here and import it to the main forum!

Baja Transferencia de Datos con ZFS

Spanish community

Moderator: MoloMuy

Forum rules
Set-Up GuideFAQsForum Rules
Post Reply
luciano
Starter
Starter
Posts: 25
Joined: 17 Feb 2013 17:26
Status: Offline

Baja Transferencia de Datos con ZFS

Post by luciano »

Hola comunidad!
Antes que nada quisiera comentarles que soy nuevo en NAS4FREE y tengo una duda existencial referente a la velocidad de transferencia de los discos duros.

Actualmente tengo un entorno de pruebas con el siguiente hardware el cual pienso pasar a producción si logro obtener tasas de transferencias mas altas que las actuales:
  • 1x Procesador AMD FX-8120
    1x Placa Madre GIGABYTE GA-970A-DS3 con 6xSATAIII@6Gbps e HyperTransport activado
    1x Memoria RAM de 8GB@1333MHZ
    2x ST2000DM001
    1x WD5000AAKX
    1x ST500DM002
    1x SSD ESA3SF2120GB
Dmesg:

Code: Select all

dmesg | grep -i ada
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to accept, logging disabled
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <WDC WD5000AAKX-003CA0 15.01H15> ATA-8 SATA 3.x device
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad4
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <ST500DM002-1BD142 KC45> ATA-8 SATA 3.x device
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C)
ada1: Previously was known as ad6
ada2 at ahcich2 bus 0 scbus2 target 0 lun 0
ada2: <ST2000DM001-1CH164 CC43> ATA-8 SATA 3.x device
ada2: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada2: Command Queueing enabled
ada2: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada2: Previously was known as ad8
ada3 at ahcich3 bus 0 scbus3 target 0 lun 0
ada3: <ST2000DM001-1CH164 CC43> ATA-8 SATA 3.x device
ada3: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada3: Command Queueing enabled
ada3: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada3: Previously was known as ad10
ada4 at ahcich5 bus 0 scbus5 target 0 lun 0
ada4: <ESA3SF2120GB 4.C.V> ATA-8 SATA 3.x device
ada4: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada4: Command Queueing enabled
ada4: 114473MB (234441648 512 byte sectors: 16H 63S/T 16383C)
ada4: Previously was known as ad14
Las tasas de transferencias máximas y teóricas que se pueden obtener del SATAIII son 6Gbps lo que equivalen a un total de 768MBps.
Como referencia, los discos ST2000DM01 indica en las especificaciones que tiene una tasa de transferencia máxima de 210 MBps. Con ubuntu, formateado en EXT4 logre sacarle 180MBps luego de activar el HyperTransport en la placa madre.

Hice las primeras pruebas utilizando UFS como filesystem para cada uno de los discos:
Image

Y luego creo los puntos de montaje para cada disco, quedando de la siguiente manera:
Image

Para ver la tasa de transferencia de cada disco uso el siguiente comado:

Code: Select all

dd if=/dev/zero of=/mnt/XXXX/temp.dat
donde XXXX es el nombre del Volumen

Y los resultados fueron los siguientes:

Code: Select all

dd if=/dev/zero of=/mnt/WDC500GB/temp.dat
1827714+0 records in
1827713+0 records out
935789056 bytes transferred in 7.461426 secs (125416918 bytes/sec)

dd if=/dev/zero of=/mnt/SEA500GB/temp.dat
3056995+0 records in
3056994+0 records out
1565180928 bytes transferred in 11.899590 secs (131532341 bytes/sec)

dd if=/dev/zero of=/mnt/SEA2TB1/temp.dat
3371841+0 records in
3371840+0 records out
1726382080 bytes transferred in 11.889396 secs (145203515 bytes/sec)

dd if=/dev/zero of=/mnt/SEA2TB2/temp.dat
3490144+0 records in
3490144+0 records out
1786953728 bytes transferred in 12.564064 secs (142227366 bytes/sec)

dd if=/dev/zero of=/mnt/SSD120GB/temp.dat
3308702+0 records in
3308701+0 records out
1694054912 bytes transferred in 11.628905 secs (145676218 bytes/sec)
Hablando en MegaBytes por segundos los resultados serian:

Code: Select all

WDC500GB @ 119.60MBps
SEAGATE500GB @ 125.43MBps
SEAGATE2TB1 @ 138.47MBps
SEAGATE2TB2 @ 135.63MBps
SSD120GB @ 138.92MBps
Analizando los datos anteriores, son mas que satisfactorios, dado que estoy por encima del 50% de los valores de transferencias indicados por los fabricantes. Lo único que me llama la atención es el disco de estado solido, el cual tendría que tener tasas mas altas.

Como la idea es tener redundancia en los datos, leí en la documentación que los volúmenes ZFS son los que mejores se comportan por la redundancia y la flexibilidad de expansión a futuro. Por lo tanto, para seguir con las pruebas, monte 2 volúmenes de ZFS. El primero sumando las capacidades de los 2 discos de 500GB conformando un volumen de 1TB (stripe) y el segundo espejando los dos discos de 2TB conformando un volumen de 2TB (mirror).
Al tener un volúmen en mirror y otro solo en stripe, podría ver las tasas de transferencias, aunque el stripe no me servirá a futuro por su falta de redundancia en los datos.

Para ello elimine todos los discos y los volví a crear según la descripción anterior
Cree los siguientes dispositivos virtuales ZFS:
1TB striped con los dos discos de 500GB
2TB mirrored con los dos discos de 2TB
Image

Los Managment me quedan de la siguiente manera:
VD01 de 1TB
VD2TB de 2TB
Image

Los resultados que obtengo son los siguientes:
Volumen de 1TB striped

Code: Select all

dd if=/dev/zero of=/mnt/VD01/temp.dat
19503196+0 records in
19503195+0 records out
9985635840 bytes transferred in 185.680289 secs (53778653 bytes/sec)
Volumen de 2TB mirrored

Code: Select all

dd if=/dev/zero of=/mnt/VD2TB/temp.dat
19622654+0 records in
19622653+0 records out
10046798336 bytes transferred in 187.483890 secs (53587529 bytes/sec)
Hablando en MegaBytes por segundos los resultados serian:

Code: Select all

VD01 @ 51.28MBps
VD2TB @ 51.10MBps
Estos resultados me llevan a realizarme las siguientes preguntas:
Estoy configurando algo mal al crear los ZFS?
Tendré que indicar en el formato que el tamaño de sector sea de 4k?
Tendré que configurar el SSD como CACHE para el ZFS pool?
Desactivo el control S.M.A.R.T?
Cuales son las tasas de transferencias máximas que puedo esperar obtener con este Hardware?

Por ultimo, en base a sus experiencias, han podido obtener mas de 50MBps de tasas de transferencias en volúmenes ZFS.

Agradezco la lectura de mi inquietud y sus comentarios.

User avatar
raulfg3
Site Admin
Site Admin
Posts: 4865
Joined: 22 Jun 2012 22:13
Location: Madrid (ESPAÑA)
Contact:
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by raulfg3 »

Lo primero , enhora buena por lo currado del post, no es normal aportar tanta información y la verdad se agradece.

respondiendo a tus dudas. Buena eleccion ZFS , no te arrepentiras, pero para obterner unos buenos resultados hay que optimizarlo un poco.

cuando crees el pool ( mirror o stripe), si los discos son de 4k, activa el flag de 4K si no, no lo utilizes.
Debes instalar una extensión llamada ZFSKERNTUNE que simplemente te permite optimizar ciertos parametros ZFS en funcion de la RAM que tengas, sin cambiar nada de lo que tienes, repite la prueba despues de ionstalar ZFSKerntune y de seleccionar y aplicar los cambios en función de la RAM que tienes y veras los cambios.

Para entornos profesionales, se recomienda mirror, por varias razones, redundancia, pero tambien velocidad y capacidad de crecimiento, cuantos más mirrors tenga un Zpool más rapido ira, y cuando necesites más espacio libre solo tienes que añadir otros 2 discos en espejo al pool.

Te dejo un PowerPoint Bastante ilustrativo: http://forums.freenas.org/showthread.ph ... light=.ppt

Respecto al SSD, lo puedes usar para arrancar el N4F o usarlo como cache, el usarlo como cache SOLO te lo recomiendo en entornos empresariales ( muchas maquinas accediendo al NAS) y en configuración espejo (2 SSD), La recomendación no la hago yo la hace ORACLE, si el disco de cache falla o se corrompe pierdes TODOS los datos, por eso recomienda la cache en espejo.



PD: Si vas a usar funciones avanzadas de ZFS (dedupe, provisioning, etc...) necesitaras mucha memoria RAM, se recomienda 1GB por Tera de datos, si no vas a usar esas funciones avanzadas, si no que solo necesitas compartir los datos por SMB o NFS, con 8GB es más que suficiente ( es lo que yo tengo y consigo velocidades bastantre aceptables por SMB):
viewtopic.php?f=63&t=31
12.1.0.4 - Ingva (revision 7743) on SUPERMICRO X8SIL-F 8GB of ECC RAM, 11x3TB disk in 1 vdev = Vpool = 32TB Raw size , so 29TB usable size (I Have other NAS as Backup)

Wiki
Last changes

HP T510

luciano
Starter
Starter
Posts: 25
Joined: 17 Feb 2013 17:26
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by luciano »

Gracias por tu pronta respuesta raulfg3:
Te comento que la idea es montar el servidor basado en NAS4Free para un entorno empresarial.
Este tiene que servir los siguientes recursos:
iSCSI para VMWARE ESXi 5.1 (NFS es mas lento)
CIFS para los clientes windows

No lo aclare con anterioridad, pero el NAS4FREE corre en una tarjeta SD Clase10 de 16GB y posee 2 placas de red Gigabit, las cuales configuraré a futuro como LAGG para obtener 2Gbps de transferencia al medio.

Voy a tomar tu consejo sobre la extensión que me recomiendas y llevar el equipo a 24GB de RAM una ves que tenga los parámetros de transferencias optimizados.

Acabo de poner el disco SSD como cache del ZPool de 500GB y subió la tasa de transferencia a 55MBps.

A la brevedad seguiré incorporando información a este post.

Desde ya muchas gracias por tu aporte.

User avatar
raulfg3
Site Admin
Site Admin
Posts: 4865
Joined: 22 Jun 2012 22:13
Location: Madrid (ESPAÑA)
Contact:
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by raulfg3 »

sin problemas para cumplir con lo que necesitas.

prueba a montar un pool con 2 espejos (2TB+2TB)+(500GB+500GB) y mira los resultados.

Por cierto cuando puedas postea los resultados antes y despues de usar ZFSkerntune.

Otro consejo, cuando crees las carpetas para compartir datos, crealas como dataset, tiene muchisimas ventajas.
12.1.0.4 - Ingva (revision 7743) on SUPERMICRO X8SIL-F 8GB of ECC RAM, 11x3TB disk in 1 vdev = Vpool = 32TB Raw size , so 29TB usable size (I Have other NAS as Backup)

Wiki
Last changes

HP T510

luciano
Starter
Starter
Posts: 25
Joined: 17 Feb 2013 17:26
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by luciano »

raulfg3:

estoy renegando para instalar el ZFSkerntune.

al no tener la montado /mnt/data lo hago en /mnt/V500G y me da el siguiente error:

Code: Select all

/mnt/V500GB/zfskerntune# 
tar xvz zfskerntune-20121031.tar.gz 
tar: Error opening archive: Failed to open '/dev/sa0'
Alguna sugerencia colega?

Solucionado:
solamente cree la carpteta data en /mnt con el siguiente comando:

Code: Select all

mkdir /mnt/data
Last edited by luciano on 17 Feb 2013 22:05, edited 1 time in total.

User avatar
raulfg3
Site Admin
Site Admin
Posts: 4865
Joined: 22 Jun 2012 22:13
Location: Madrid (ESPAÑA)
Contact:
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by raulfg3 »

claro, usa los pools que antes has creado, si no me equivoco vd01 y vd2TB (Ojo a mayusculas y minusculas no son lo mismo, yo te he puesto de ejemplo vd01 pero puede que sea VD01)

luego lo primero seria crear un temporal donde bajarte el zfskerntune

Code: Select all

mkdir /mnt/vd01/temp
luego te mueves al directorio recien creado y te bajas el zfskerntune:

Code: Select all

cd /mnt/vd01/temp

Code: Select all

fetch http://www.peach.ne.jp/archives/nas4free/ext/zfskerntune-20121031.tar.gz
tar xvf zfskerntune-20121031.tar.gz
# cd zfskerntune
# ./zfskerntune-install.php
si no puedes haz un copy-paste del shell y a ver que muestra.

PD: yo hago la instalación desde mi PC comodamente con putty ( hay que habilitar el servicio SSH en Nas4Free), es más comodo que directamente con teclado en el NAS y permita salvar el log de lo que haces para ver errores.
12.1.0.4 - Ingva (revision 7743) on SUPERMICRO X8SIL-F 8GB of ECC RAM, 11x3TB disk in 1 vdev = Vpool = 32TB Raw size , so 29TB usable size (I Have other NAS as Backup)

Wiki
Last changes

HP T510

luciano
Starter
Starter
Posts: 25
Joined: 17 Feb 2013 17:26
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by luciano »

Bueno: siguiendo los consejos de raulfg3 he decidido hacer algunas modificaciones...

1x Procesador AMD FX-8120
1x Placa Madre GIGABYTE GA-970A-DS3 con 6xSATAIII@6Gbps e HyperTransport activado
2x Memoria RAM de 8GB@1333MHZ
2x ST2000DM001
1x WD5000AAKX
1x ST500DM002
2x SSD ESA3SF2120GB

El estado de los discos:
Image

El estado de los dispositivos virtuales:
Image

Y por ultimo el volumen resultante:
Image

Comenzamos con las pruebas de velocidad de transferencias:

ZFS Kernel Tune Desactivado:

Code: Select all

dd if=/dev/zero of=/mnt/ZFS2500GB/temp.dat
2552733+0 records in
2552732+0 records out
1306998784 bytes transferred in 23.414763 secs (55819433 bytes/sec)
Ahora Activo ZFS Kernel Tune para los 16GB de RAM que tiene el equipo y luego reinicio para que tome los cambios:

Image

Y estos son los resultados (no satisfactorios):

Code: Select all

dd if=/dev/zero of=/mnt/ZFS2500GB/temp.dat
3728349+0 records in
3728349+0 records out
1908914688 bytes transferred in 34.417072 secs (55464180 bytes/sec)
Estas pruebas son sin el cache SSD.
Alguna sugerencia para mejorar la transferencia?

User avatar
raulfg3
Site Admin
Site Admin
Posts: 4865
Joined: 22 Jun 2012 22:13
Location: Madrid (ESPAÑA)
Contact:
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by raulfg3 »

pues tienes razon, nada satisfactorios para el hardware que tienes, deberias estar rondando los 100MB y no la mitad, y desde luego que no se note el ZFSkerntune no es habitual.

estos son mis resultados:

http://forums.freenas.org/showthread.ph ... #post19962

Code: Select all

freenas:/mnt/NAS-A/Temp# dd if=/dev/zero of=/mnt/NAS-A/Temp/tmp.dat bs=2048k count=50k
51200+0 records in
51200+0 records out
107374182400 bytes transferred in 538.082417 secs (199549695 bytes/sec)
freenas:/mnt/NAS-A/Temp#
mira a ver que sale con estos parametros:

Code: Select all

dd if=/dev/zero of=/mnt/ZFS2500GB/temp.dat bs=2048k count=50k
12.1.0.4 - Ingva (revision 7743) on SUPERMICRO X8SIL-F 8GB of ECC RAM, 11x3TB disk in 1 vdev = Vpool = 32TB Raw size , so 29TB usable size (I Have other NAS as Backup)

Wiki
Last changes

HP T510

User avatar
raulfg3
Site Admin
Site Admin
Posts: 4865
Joined: 22 Jun 2012 22:13
Location: Madrid (ESPAÑA)
Contact:
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by raulfg3 »

mira que disable prefecth no este marcado ( tiene que estar habilitado para 8GB).
PrtScr capture_2.jpg
You do not have the required permissions to view the files attached to this post.
12.1.0.4 - Ingva (revision 7743) on SUPERMICRO X8SIL-F 8GB of ECC RAM, 11x3TB disk in 1 vdev = Vpool = 32TB Raw size , so 29TB usable size (I Have other NAS as Backup)

Wiki
Last changes

HP T510

luciano
Starter
Starter
Posts: 25
Joined: 17 Feb 2013 17:26
Status: Offline

Re: Baja Transferencia de Datos con ZFS

Post by luciano »

Estimado raulfg3:

Hemos mejorado!!! Pero antes te quiero comentar que cuando configuro el ZFS Kernel Tuning, al reiniciar y ver los parámetros previamente configurados, no me muestra Memory Size: 16GB, y sigue tildada la opción Disable prefetech
esta es la captura:
Image

Buscando encontré un comando para ver estado del IO del Zpool, el cual me resulto muy útil para ver las transferencia en "tiempo real" desde la consola:

Code: Select all

zpool iostat zpoolname 5 100
Con el test normal que venia haciendo el resultado sigue igual:

Code: Select all

dd if=/dev/zero of=/mnt/ZFS2500GB/temp.dat
10769705+0 records in
10769705+0 records out
5514088960 bytes transferred in 99.560185 secs (55384479 bytes/sec)


Y en tiempo real arrojo estos resultados:

Code: Select all

 zpool iostat ZFS2500GB 5 100
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
ZFS2500GB   4.16G  2.26T     37      0    4.60M  2.90K
ZFS2500GB   4.16G  2.26T      0      0      0      0
ZFS2500GB   4.25G  2.26T     18    180   21.0K  18.9M
ZFS2500GB   3.13G  2.26T      0    481    102  53.7M
ZFS2500GB   3.29G  2.26T      0    526      0  62.8M
ZFS2500GB   3.64G  2.26T      0    375      0  42.9M
ZFS2500GB   3.82G  2.26T      0    516      0  62.1M
ZFS2500GB   4.35G  2.26T      0    708      0  82.0M
ZFS2500GB   4.38G  2.26T      0    327      0  36.7M
ZFS2500GB   4.67G  2.26T      0    580      0  67.9M
ZFS2500GB   4.85G  2.26T      0    349      0  41.2M
ZFS2500GB   5.03G  2.26T      0    579      0  69.4M
ZFS2500GB   5.39G  2.26T      0    355      0  40.6M
ZFS2500GB   5.57G  2.26T      0    787      0  95.4M
ZFS2500GB   6.10G  2.26T      0    400      0  46.0M
ZFS2500GB   6.09G  2.26T      0    557      0  66.5M
ZFS2500GB   6.43G  2.26T      0    337      0  38.4M
ZFS2500GB   6.73G  2.26T      0    502      0  58.4M
ZFS2500GB   7.02G  2.26T      0    509      0  59.4M
ZFS2500GB   7.18G  2.26T      0    607      0  73.6M
ZFS2500GB   7.61G  2.26T      0    512      0  57.6M
ZFS2500GB   7.73G  2.26T      0    394      0  45.1M
ZFS2500GB   7.89G  2.26T      0    282      0  32.9M
ZFS2500GB   7.91G  2.26T      0     42      0  3.56M
ZFS2500GB   7.91G  2.26T      0      0      0      0
Pero la diferencia vino de la mano de tu prueba sugerida

Code: Select all

dd if=/dev/zero of=/mnt/ZFS2500GB/temp.dat bs=2048k count=50k
10548+0 records in
10547+0 records out
22118662144 bytes transferred in 110.680619 secs (199842234 bytes/sec)
Que en tiempo real arrojo estos resultados:

Code: Select all

zpool iostat ZFS2500GB 5 100
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
ZFS2500GB   7.91G  2.26T      0      0      0      0
ZFS2500GB   8.20G  2.26T      0    704      0  83.2M
ZFS2500GB   3.97G  2.26T      0  1.53K      0   184M
ZFS2500GB   4.80G  2.26T      0  1.60K      0   191M
ZFS2500GB   5.88G  2.26T      0  1.59K      0   193M
ZFS2500GB   6.76G  2.26T      0  1.68K      0   205M
ZFS2500GB   7.66G  2.26T      0  1.50K      0   183M
ZFS2500GB   8.09G  2.26T      0  1.41K      0   174M
ZFS2500GB   8.94G  2.26T      0  1.64K      0   200M
ZFS2500GB   10.2G  2.26T      0  1.61K      0   200M
ZFS2500GB   10.8G  2.26T      0  1.42K      0   177M
ZFS2500GB   12.1G  2.25T      0  1.68K      0   207M
ZFS2500GB   13.0G  2.25T      0  1.61K    204   196M
ZFS2500GB   14.0G  2.25T      1  1.62K    715   195M
ZFS2500GB   14.9G  2.25T      0  1.33K    715   160M
ZFS2500GB   14.9G  2.25T      0  1.87K      0   236M
ZFS2500GB   16.3G  2.25T      0  1.81K      0   226M
ZFS2500GB   17.2G  2.25T      0  1.62K      0   200M
ZFS2500GB   18.2G  2.25T      0  1.43K      0   179M
ZFS2500GB   19.6G  2.25T      0  1.85K    204   227M
ZFS2500GB   20.6G  2.25T      0  1.02K    408   126M
ZFS2500GB   20.6G  2.25T      0    876      0   109M
ZFS2500GB   20.9G  2.25T      0    903    408   109M
ZFS2500GB   22.0G  2.24T      0  1.66K      0   203M
ZFS2500GB   22.9G  2.24T      0   1020    102   124M
ZFS2500GB   23.4G  2.24T      0    861    510   104M
ZFS2500GB   23.4G  2.24T      0      0      0      0
Así que desde ya estoy muy agradecido.
Lo que me queda pendiente es habilitar el Zpool que arme con los 2 SSD para cache del ZFS2500GB.
Y luego comenzare con las pruebas en RED e ire publicando los resultados.
Lo que si quisiera saber es a partir de que tamaño de archivo las tasas de transferencias son tan elevadas.

Gracias

Post Reply

Return to “Español”