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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
La carcasa viene con 3 soportes por defecto. Es posible montar dos unidades de disco duro en cada soporte.
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.
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.
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.
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.
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 0Esto 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 sectorsA 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 partPodemos 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 mdadmYa 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 0You 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/sdf1Puesto 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.
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