Monta un Almacenamiento de Acceso en red (NAS) de 6 bahías por tu Cuenta: Aprovecha el Potencial del ODROID-H2

Este artículo te mostrará cómo montar un servidor NAS de 6 bahías con ODROID-H2. Hace unas cuantas semanas, se inició un pequeño proyecto para montar un servidor NAS de 6 bahías con el ODROID-H2 (Rev.B) que fue publicado en junio. Muchos usuarios han preguntado si el ODROID-H2 puede ejecutar más de 2 unidades usando la tarjeta de expansión PCI-e a SATA y un par de usuarios lo han intentado.

Carcasa

He intentado buscar una carcasa decente que tenga espacio suficiente para que cojan 6 unidades de disco de 3.5" y el ODROID-H2. Existen muchas carcasas NAS o HTPC que pueden ajustarse a la placa mini-ATX, pero el inconveniente lo teníamos en la altura que era demasiada baja o que las dimensiones no eran las suficientes para instalar seis unidades de disco duro. Las elegantes carcasas con 4-6 bahías con intercambio en caliente eran demasiado caras o solo admitían unidades de 2.5". Para disponen del espacio de instalación suficiente con un presupuesto decente, finalmente se optó por una carcasa NAS de https://bit.ly/2X82Qtr.

Dispone de 3 soportes que pueden albergar 2 unidades de 3.5" cada uno, y es posible ubicar un sistema de alimentación ATX estándar debajo de las bahías donde se ubican los discos. También tiene 4 montajes PCB en la parte inferior, pero sus dimensiones son de un tamaño ATX estándar en el que el ODROID- H2 no encaja, por lo que se hace necesario un adaptador para montar el ODROID-H2.

Figura 1

Figura 2

Figura 3

Montaje de la placa

Muchos de vosotros ya habréis notado que el tamaño físico del OROID-H2 no es compatible con ninguna especificación ATX, lo cual dificulta su montaje en una carcasa de PC estándar o en un HTPC. La carcasa que compramos también está diseñada para una mini tarjeta ATX que sigue siendo grande para el ODROID-H2; por lo tanto, se necesita una placa adaptadora para el montaje. Al principio, tuvimos en cuenta un panel acrílico como material para la placa adaptadora de montaje. Sin embargo, era demasiado frágil y tendría que realizar un nuevo corte cada vez que cambiase el diseño. Finalmente, decidí crearlo con una impresora 3D.

Figura 4

El panel se ha unido al ODROD-H2 mediante el soporte de PCB de 10 mm de altura. La altura de 10 mm es suficiente para colocar ODROID-H2 en la superficie superior; de lo contrario, el zócalo de memoria interferirá con el montaje. Dado que la altura del panel de montaje es de 3 mm, ODROID-H2 se monta 13 mm más alto que otras placas ATX y esto causa un problema con el panel posterior.

Figura 5

Figura 6

Como tenemos pensado conectar 6 unidades al ODROID-H2, la tarjeta de expansión SATA admite 4 conectores SATA adicionales en la ranura M.2 que son independientes de las 2 ranuras SATA del ODROID-H2. La conexión de los cables SATA al adaptador requiere de más espacio por debajo del ODROID-H2, el cable tipo ángulo recto ayuda a ahorrar espacio. Sin embargo, el cable aún requiere aproximadamente 25 mm de superficie debajo de ODROID-H2. Puesto que ya tenemos 13 mm del panel de montaje, tuvimos que ganar los 12 mm restantes de la carcasa. Afortunadamente, la altura de los agujeros de montaje en la PCB es de 12 mm, lo cual cumple con nuestros requisitos y de esta forma es posible colocar el ODROID-H2 de forma segura en la carcasa.

Figura 7

Figura 8

Figura 9

Después, tuve que abordar el problema del panel posterior. Todo es más alto que una placa de PC normal, ya que montamos el ODROID-H2 utilizando los agujeros de montaje ATX estándar e hicimos hueco para los cables SATA en la parte inferior. Esto significa que los usuarios de NAS tendrán que renunciar a un conector de audio. Los conectores Ethernet, por otro lado, pueden suponer un problema. Después de colocar la tapa posterior del panel impresa con el panel de montaje, observé que ésta no estaba completamente alineada con los conectores del ODROID-H2, aunque podía valer en nuestro caso.

Figura 10

Figura 11

Tengo otra imagen de cómo conectar los cables Ethernet al ODROID-H2 al mismo tiempo que se está montado en la carcasa. Apenas es posible conectar el cable al ODROID-H2 sin topar con algún obstáculo de la caja. Así que, creo que conectar el cable Ethernet a ODROID-H2 no supone mayor problema, sin embargo, una vez conectado no es posible quitarlo.

Figura 12

Tenemos intención de seguir adelante a pesar de haber tenido problemas con el panel posterior y el cable Ethernet que queda muy ajustado. Nuestro NAS funcionará 24/7, por lo tanto, el cable de red estará fijo u optar por montar la conexión del cable por el otro lado de la carcasa.

Fuente de Alimentación

Hemos comprado una fuente de alimentación ATX estándar de 350 vatios que encaja perfectamente dentro de la carcasa. Aunque 350W puede parecer demasiada potencia para ejecutar 6 HDD y el ODROID-H2, el coste de dicha potencia ATX no es excesivo, de modo que esta fuente de alimentación es aceptable. Aparte de la ratio de potencia de la fuente de alimentación, lo que tenemos que tener en cuenta es si la fuente de alimentación tiene suficientes conectores SATA. Como la mayoría de las unidades de suministro de energía de menos de 500 vatios tienen hasta 4 conectores de alimentación SATA, se ha tenido que añadir un cable de extensión SATA adicional para las 2 unidades de disco duro restantes.

Figura 13

Suministrar energía al ODROID-H2 y a los 6 HDD es un reto, pero, es aún más importante la cuestión de que si el sistema podría controlarse mediante un único interruptor. Esto es debido a que la alimentación ATX estándar no solo se “enciende” cuando se dispare la señal de alimentación en el conector de alimentación ATX. Más bien, necesitaremos monitorizar otra señal que indique si el estado de la energía es bueno o no. Finalmente, se decidió utilizar la señal Power "on" con un módulo interruptor normal. Esta fue la forma más sencilla de controlar la fuente de alimentación con el interruptor. Se ha comprado un pequeño interruptor que encaja muy bien en la ranura de la tarjeta de expansión. El soporte de la ranura de la tarjeta debe cortarse con la longitud del interruptor.

Figura 14

El color del cable de la señal de encendido en la fuente de alimentación es verde. Esta señal debe estar cortocircuitada al suelo para encender la fuente de alimentación. Puesto que hemos decidimos usar un interruptor de palanca, el cable verde y el cable negro deben soldarse a éste.

Figura 15

Figura 16

El ODROID-H2 no tiene un diagrama tipo PC de los indicadores o botones LED. Por lo tanto, para encender el LED de alimentación, el cable debe estar conectado a la salida de voltaje en el pin de expansión. El DC 3.3V y los pines de puesta a tierra se pueden conectar como se muestra a continuación.

Figura 17

Figura 18

Cableado e Instalación del disco duro

Para este proyecto, fueron comprados y montados 6 HDD Western Digital 1TB sobre el soporte dentro de la carcasa.

Figura 19

La carcasa viene con 3 soportes por defecto. Es posible montar dos unidades de disco duro en cada soporte.

Figura 20

Figura 21

Se conectarán cuatro HDD con cables blancos a través de la tarjeta de expansión SATA M.2 y los otros dos con cables rojos se canalizarían usando las conexiones SATA integradas. Los cables de alimentación para las unidades de disco duro se conectarán mediante los conectores SATA de la PSU. Sin embargo, todavía necesitamos otro cable "Y" que convierta el conector único IDE en dos cables SATA.

Figura 22

Figura 23

Configurar BIOS

Con la configuración por defecto, el adaptador SATA en la ranura M.2 no funcionará. Para proceder correctamente, tenemos que recurrir a la configuración de la BIOS. Entra en la BIOS presionando la tecla “Eliminar” justo después de presionar el botón de encendido. Luego, deberías ver la pantalla que se muestra en la Figura 24.

Figura 24

Tienes que configurar 2 opciones:

  • Chipset - South Cluster Configuration - Miscellaneous Configuration - State After G3, cambiar a “S0 State” para que se encienda automáticamente cuando se conecte la alimentación.
  • Chipset - South Cluster Configuration - PCI Express Configuration - PCI Express Clock Gating, cambiar a “Disabled” para hacer que el adaptador M.2 a SATA funcione correctamente.

Muévete con las teclas de flechas del teclado y configura cada opción.

Figura 25

Figura 26

Instalación de Ubuntu

Para el sistema operativo host, hemos decidido instalar Ubuntu 19.04. Descargué la última imagen del sistema operativo de la página de descarga de Ubuntu (https://ubuntu.com/download), y grabé esa imagen en una memoria USB con Etcher. Etcher es una herramienta para grabar imágenes multiplataforma. Conecta el dispositivo de memoria USB al H2 y enciéndalo. Luego presiona F7 para entrar en la pantalla de selección de soportes de arranque. Si se muestra la pantalla, selecciona el dispositivo de arranque USB que hemos conectado.

Figura 27

Continúa instalando Ubuntu de acuerdo a tus preferencias. Solo ten en cuenta el seleccionar un disco duro cuando selecciones un soporte root durante la instalación. Mantener el sistema actualizado es altamente recomendable para cualquier uso de la aplicación, en la mayoría de los casos.

Para comprobar si las unidades de disco duro se instalaron correctamente, puedes echar un vistazo al resultado de dmesg:

$ dmesg | grep scsi
[    2.067831] scsi host0: ahci
[    2.068684] scsi host1: ahci
[    2.080796] scsi host2: ahci
[    2.080964] scsi host3: ahci
[    2.084816] scsi host4: ahci
[    2.084976] scsi host5: ahci
[    2.548364] scsi 0:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.549029] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.549321] scsi 1:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.549627] sd 1:0:0:0: Attached scsi generic sg1 type 0
[    2.563013] scsi 2:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.563292] sd 2:0:0:0: Attached scsi generic sg2 type 0
[    2.563497] scsi 3:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.563693] sd 3:0:0:0: Attached scsi generic sg3 type 0
[    2.563875] scsi 4:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.564070] sd 4:0:0:0: Attached scsi generic sg4 type 0
[    2.564268] scsi 5:0:0:0: Direct-Access     ATA      WDC WD10EFRX-68F 0A82 PQ: 0 ANSI: 5
[    2.564444] sd 5:0:0:0: Attached scsi generic sg5 type 0
Esto muestra que esas 6 unidades han sido reconocidas. Si las tuyas no, debes comprobar la conexión del hardware o la configuración de la BIOS.

Particionar los discos duros

Comprueba los discos duros instalados utilizando los siguientes comandos.

$ sudo fdisk -l | grep sd
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sdd: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sde: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sdf: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
A continuación, crea una partición utilizando la herramienta parted. Puede usar fdisk para peticionar los discos duros, para poder usar más de 2 TB de disco duro debes crear una tabla de particiones GPT. Particiona los discos respectivamente en base a los siguientes procedimientos:
$ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
(parted) print free                                                       
Model: ATA WDC WD10EFRX-68F (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 
 
Number  Start   End     Size    File system  Name  Flags
        17.4kB  1000GB  1000GB  Free Space
 
(parted) mkpart primary 1M 1000GB                                         
(parted) p                                                                
Model: ATA WDC WD10EFRX-68F (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 
 
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  1000GB  1000GB               primary
 
(parted) q                                                                
Information: You may need to update /etc/fstab.
Check the changes applied.
$ lsblk | grep sd
sda            8:0    0 931.5G  0 disk 
└─sda1         8:1    0 931.5G  0 part 
sdb            8:16   0 931.5G  0 disk 
└─sdb1         8:17   0 931.5G  0 part 
sdc            8:32   1 931.5G  0 disk 
└─sdc1         8:33   1 931.5G  0 part 
sdd            8:48   1 931.5G  0 disk 
└─sdd1         8:49   1 931.5G  0 part 
sde            8:64   1 931.5G  0 disk 
└─sde1         8:65   1 931.5G  0 part 
sdf            8:80   1 931.5G  0 disk 
└─sdf1         8:81   1 931.5G  0 part
Podemos ver que cada disco duro tiene una sola partición. Después de particionar todas las unidades, es el momento de configurar RAID 6 en nuestro NAS.

Configurar RAID 6

Hay dos razones principales para usar el nivel 6 de RAID:

  • Es más robusto que RAID 5, porque usa un disco más para la paridad.
  • No perderemos los datos incluso si fallan 2 discos. Podemos reconstruir el sistema después de reemplazar el disco que ha fallado.

Sin embargo, no encontramos con una cierta sobrecarga: la doble paridad puede verificar su estabilidad, pero viene acompañado de un rendimiento más deficiente en términos de escritura. Se requiere un mínimo de 4 discos para montar un RAID 6. Puesto que tenemos 6 discos duros con una capacidad de 1 TB cada uno, podemos montarlos usando RAID 6 y tendremos una capacidad de 4 TB que podremos usar.

Para configurar RAID sin un controlador RAID físico en un sistema Linux, tenemos que usar la herramienta mdadm. La puedes localizar en el administrador de paquetes de cualquier distribución de Linux:

$ sudo apt install mdadm
Ya sabemos que esas 6 unidades se asignan como /dev/sda a /dev/sdf. Crea una matriz usando el siguiente comando:
$ sudo mdadm --create /dev/md0 --level=6 --raid-devices=6 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Se creará el archivo de dispositivo /dev/md0. Debe usar ese dispositivo como una única partición de disco duro, de modo que, si deseas montar esa matriz en un directorio, puedes simplemente usar ese archivo de dispositivo. Formatea esa partición y monta en / media/storage:
$ sudo mkfs.ext4 /dev/md0
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 976628736 4k blocks and 244162560 inodes
Filesystem UUID: 100a470d-96f1-47d2-8cf0-a211c010e8b9
Superblock backups stored on blocks: 
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
  102400000, 214990848, 512000000, 550731776, 644972544
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done       
 
$ sudo mkdir /media/storage
$ sudo mount /dev/md0 /media/storage/
Comprueba si está montado correctamente.
$ cat /proc/mounts | grep md0
/dev/md0 /media/storage ext4 rw,relatime,stripe=512 0 0
You also can see the RAID configurations:
$ sudo mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jun 17 18:08:26 2019
        Raid Level : raid6
        Array Size : 3906514944 (3725.54 GiB 4000.27 GB)
     Used Dev Size : 976628736 (931.39 GiB 1000.07 GB)
      Raid Devices : 6
     Total Devices : 6
       Persistence : Superblock is persistent
 
     Intent Bitmap : Internal
 
       Update Time : Mon Jun 17 18:27:08 2019
             State : active, resyncing 
    Active Devices : 6
   Working Devices : 6
    Failed Devices : 0
     Spare Devices : 0
 
            Layout : left-symmetric
        Chunk Size : 512K
 
Consistency Policy : bitmap
 
     Resync Status : 8% complete
 
              Name : ODROID-H2:0  (local to host ODROID-H2)
              UUID : d4759dbb:65fd2b07:d5f4f9c3:0fba55cc
            Events : 253
 
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       33        2      active sync   /dev/sdc1
       3       8       49        3      active sync   /dev/sdd1
       4       8       65        4      active sync   /dev/sde1
       5       8       81        5      active sync   /dev/sdf1
Puesto que esta matriz RAID se acaba de crear, debemos realizar un proceso de re-sincronización para que se sincronice con los otros dispositivos. Puedes ver el estado del proceso de resincronización con el siguiente comando:
$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid6 sdf1[5] sde1[4] sdd1[3] sdc1[2] sdb1[1] sda1[0]
      3906514944 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [=>...................]  resync =  9.6% (93909272/976628736) finish=120.2min speed=122360K/sec
      bitmap: 8/8 pages [32KB], 65536KB chunk
 
unused devices:
Una vez que se complete el proceso rsync, podrás ver un mensaje a través de dmesg:
$ dmesg | grep resync
[  199.311304] md: resync of RAID array md0
[10093.988694] md: md0: resync done.
También configuraría el entorno el sistema agregando una entrada a /etc/fstab y configurando el servidor SAMBA o SFTP para compartir tus datos utilizando los discos duros RAID-ed. Existen muchas guías de administración para usos adicionales del sistema RAID integrado, que incluye añadir unidades de repuesto o tratar dispositivos con fallos, pero esta guía no se detendrá en todos estos detalles.

Pruebas de rendimiento

Ejecuté iozone3 para evaluar el rendimiento del H2 con RAID nivel 6 con 6 discos duros, después de asegurarme de que el proceso de sincronización se había completado:

$ sudo iozone -e -I -a -s 100M -r 4k -r 16384k -i 0 -i 1 -i 2
  Iozone: Performance Test of File I/O
          Version $Revision: 3.429 $
    Compiled for 64 bit mode.
    Build: linux-AMD64 
 
  Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
               Al Slater, Scott Rhine, Mike Wisner, Ken Goss
               Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
               Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
               Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
               Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
               Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
               Vangel Bojaxhi, Ben England, Vikentsi Lapa.
 
  Run began: Tue Jun 18 10:03:49 2019
 
  Include fsync in write timing
  O_DIRECT feature enabled
  Auto Mode
  File size set to 102400 kB
  Record Size 4 kB
  Record Size 16384 kB
  Command line used: iozone -e -I -a -s 100M -r 4k -r 16384k -i 0 -i 1 -i 2
  Output is in kBytes/sec
  Time Resolution = 0.000001 seconds.
  Processor cache size set to 1024 kBytes.
  Processor cache line size set to 32 bytes.
  File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          102400       4     9241    14364    27027    29648    15326     4404                                                          
          102400   16384   208414   209245   521260   669540   731096   177565                                                          
 
iozone test complete.
Puesto que los 6 discos duros están conectados entre sí, su rendimiento es mucho mejor que el de los resultados con el único 1 disco duro.

Figura 28 - Pruebas de rendimiento

RAID 6 usa doble paridad, aunque los 6 discos duros funcionan literalmente como una especie de multiprocesamiento de la CPU, de modo que la velocidad general aumenta considerablemente. Si utilizas RAID nivel 5, el rendimiento sería un poco mejor que este, ya que RAID 5 utiliza una paridad única. Por lo tanto, no hay razón para no usar RAID 6 cuando se tiene más de 4 discos duros, especialmente, dado que el H2 es un potente hardware host para usarse a modo de NAS a un precio razonable, con 2 puertos LAN Gigabit como ventaja adicional para la conectividad. Nos ocuparemos de la instalación del software en el siguiente artículo.

Referencias

https://forum.odroid.com/viewtopic.php?f=172&t=35309https://www.tecmint.com/create-raid-6-in-linux/ https://askubuntu.com/questions/350266/how-can-i-create-a-raid-array-with-2tb-disks

Be the first to comment

Leave a Reply