Guía A2 – Crear un bonding/lagg y RAID en FreeNAS 1
Escenario del desafío de la guía 2
1. Configuración de Tarjetas de RED 3
Paso 1 – Verificar que el servidor ha reconocido las tarjetas de red 4
Paso 2 – Verificar la comunicación con el router01 4
Paso 3 – Configuración de las opciones de red utilizando herramienta Web. 5
Paso 4 – Configuración de las opciones del enlace “Lagg” 6
Paso 1 – Verificar que se encuentren los discos disponibles 9
El objetivo de esta guía es configurar un servidor para la SAN basado en FreeNAS 9.X con un sistema de agrupación con al menos dos tarjetas de red y un RAID 1+0 con discos ISCI de forma que se obtenga alta disponibilidad tanto en la comunicación con el servidor FreeNAS así como en el almacenamiento de los disco ISCI.
Para esta práctica se utilizará el siguiente software.
•Equipo o MV con dos tarjetas de red tipo Intel. (De preferencia)
•Cuatro discos duros tipo iSCSI. (De preferencia)
•VirtualBox en su versión más reciente, si no se cuenta con el equipo físico
•MV con dos tarjetas de red (driver Intel) y dos discos duros (tipo SATA o SCSI de 10GB c/u)
•Imagen del archivo de instalación en formato ISO de FreeNAS (64 bits) en la versión más reciente.
•Conexión a Internet.
La Empresa Y ha contratado los servicios profesionales de vuestro equipo de trabajo para realizar las siguientes tareas:
•Configurar dos tarjetas de red en modalidad Failover o Round Robin para el servidor datastore1 en FreeNAS
•Agregar redundancia en el sistema de almacenamiento del servidor FreeNAS con un RAID 1+0 usando cuatro discos duros.
•Crear dos volúmenes: uno con 8 GB y otro con 6 GB.
•Definir el tamaño de cada volumen que permita un mejor rendimiento y almacenamiento, el primer volumen se utilizará para ejecutar las máquinas virtuales y el segundo volumen se utilizará para almacenar las imágenes de las máquinas virtuales o archivos de usuario.
Para realizar las tareas anteriores en la “Empresa Y” se tienen las siguientes condiciones:
•Un equipo con 16 GB de RAM y dos procesadores para el datastore1
•Una red LAN de alta velocidad (1 GBps) para la SAN
•Un equipo físico para el Datastore1 con FreeNAS 9.X
•El equipo del Datastore1 tiene dos tarjetas de red
•El equipo del Datastore1 tiene 4 Discos SCSI de 10 GB y 10 Krpm
En la siguiente figura se ilustra la conexión de red LAN que tendrá el datastore1, es de hacer notar que el servidor FreeNAS tendrá al menos dos tarjetas de red Ethernet para el acceso a la red LAN. En la sección de la izquierda se puede tener una configuración failover o round robin utilizando un Switch, para proveer redundancia o rendimiento respectivamente. En la sección de la derecha se cuenta con dos Switch con lo que se puede tener alta disponibilidad en todo el enlace, aquí solo se puede utilizar failover.
Figura 1. Diagrama de conexión a la red SAN del datastore1 (fuete: elaboración propia)
En la figura 2 se ilustra el arreglo de discos que se utilizarán, es de tener en cuenta que el área de datos final depende del formato utilizado y que los valores finales siempre son mayores al tamaño de los discos sin formato. La información del RAID 1+0 se divide entre el disco 1 y el disco 3, el disco 2 es espejo del disco 1 y el disco 4 es espejo del disco 2.
Figura 2. Arreglo de discos para proveer alta disponibilidad en el almacenamiento.
0.1 Verifique que haya dos tarjetas de red conectadas a la máquina virtual.
0.2 Utilice el driver Intel servidor o desktop.
0.3 Defina una dirección física según el siguiente formato 02:YY:XX:B0:00:02
Dónde
YY = es para definir el número del grupo de alumnos, 01, 02, 08, 10, etc.
XX = la computadora que estará utilizado cada grupo de estudiantes.
0.4 Utilizar la opción Adaptador puente o red interna, ya que la salida hacia Internet la proporcionará el router01
✍Nota: Es de considerar crear una tarjeta loopback que permita acceder desde el equipo host a la máquina virtual si perder la conexión a Internet en el host. Para Windows se puede utilizar el driver KM-Test
✍Nota: Es de tener en cuenta que no deberán haber dos tarjetas de red con la misma dirección MAC
✍Nota: Para la segunda tarjeta de red se puede utilizar la dirección MAC 02:YY:XX:B0:02:02
[root@datastore1] ~# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 02:00:00:b0:00:02
inet 192.168.50.2 netmask 0xffffff00 broadcast 192.168.50.255
nd6 options=9<PERFORMNUD,IFDISABLED>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 02:00:00:b0:22:02
inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
nd6 options=9<PERFORMNUD,IFDISABLED>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
ipfw0: flags=8800<SIMPLEX,MULTICAST> metric 0 mtu 65536
nd6 options=9<PERFORMNUD,IFDISABLED>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
[root@datastore1] ~# ping -c 3 192.168.50.1
PING 192.168.50.1 (192.168.50.1): 56 data bytes
64 bytes from 192.168.50.1: icmp_seq=0 ttl=64 time=0.295 ms
64 bytes from 192.168.50.1: icmp_seq=1 ttl=64 time=0.861 ms
64 bytes from 192.168.50.1: icmp_seq=2 ttl=64 time=0.447 ms
--- 192.168.50.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.295/0.534/0.861/0.239 ms
[root@datastore1] ~# ping -c 3 google.com
PING google.com (190.150.50.174): 56 data bytes
64 bytes from 190.150.50.174: icmp_seq=0 ttl=56 time=18.612 ms
64 bytes from 190.150.50.174: icmp_seq=1 ttl=56 time=17.285 ms
64 bytes from 190.150.50.174: icmp_seq=2 ttl=56 time=30.565 ms
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 17.285/22.154/30.565/5.972 ms
A. Utilizar la URL http://192.168.50+Y.2
B. Utilizar las credenciales root/123456
C. Dar clic en el botón “Entrar al sistema”
•Hostname: datastore1
•Dominio: empresay.com.sv
•GW– IPv4: 192.168.50.1
•DNS – Ipv4: 192.168.50.1
•Tipo de protocolo: Failover
•Tarjetas de red físicas: Seleccionar em0 y em1
Dar clic en botón “OK”
Al cambiar la configuración se perderá la comunicación
✍Nota: Si se presentan problemas se puede configurar el lagg0 por medio del asistente de la consola. Se puede configurar la IPv4, Router y DNS
Si se desea se puede configurar la dirección estática, esto reducirá tráfico DHCP
✍Nota: Si el datastore1 está virtualizado, es posible que se presenten problemas para comprobar el funcionamiento del lagg debido a que FreeBSD esperará detectar la señal eléctrica de la tarjeta, lo cual no ocurrirá por razones de la virtualización y lo más importante al establecerse el lagg se clona la MAC para el lagg0, em0 y em1, lo cual hará que el sistema de virtualización detecte que existe tráfico en modo promiscuo el cual no está aprobado de forma predefinida. Por ejemplo en Workstation puede recibirse un mensaje como lo muestra la siguiente pantalla
Primera parte. Habilitar el modo promiscuo en el software de virtualización
Segunda parte Habilitar el modo promiscuo dentro de FreeBSD para el canal lagg0
Primera parte de los pasos previos para las máquinas virtuales
Para VirtualBox se deberá realizar lo siguiente:
1.Abrir el administrador de la máquina virtual
2.Seleccionar la máquina virtual (por ejemplo datastore1)
3.Abrir opción de configuración
4.Seleccionar la opciones de red
5.Habilitar en cada tarjeta de red el modo promiscuo
Para Workstation Linux de VMWare se deberá realizar lo siguiente:
1.Abrir el editor de redes virtuales.
2.Identificar la tarjeta de red que utiliza la vmnet (en este caso particular tap0 -> vmnet2)
3.Abrir una consola con permisos de root (o sudo)
4.Dar permiso de escritura de escritura a los usuarios de /dev/vmnet2 con el comando chmod a+w /dev/vmnet2
5.Verificar que se hallan aplicado los permisos
cuchillac@eqlin:~$ sudo chmod a+w /dev/vmnet2
[sudo] password for cuchillac: 123456
cuchillac@eqlin:~$ ls -l /dev/vmnet2
crw--w--w- 1 root root 119, 2 ene 4 19:18 /dev/vmnet2
Segunda parte de los pasos previos para las máquinas virtuales
Digitar los siguientes comandos dentro de una consola de texto de FreeNAS
[root@datastore1] ~# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 02:00:00:b0:00:02
inet 192.168.50.2 netmask 0xffffff00 broadcast 192.168.50.255
nd6 options=9<PERFORMNUD,IFDISABLED>
media: Ethernet autoselect
status: active
laggproto roundrobin lagghash l2,l3,l4
laggport: em1 flags=4<ACTIVE>
laggport: em0 flags=4<ACTIVE>
[root@datastore1] ~# ifconfig lagg0 promisc
[root@datastore1] ~# ifconfig lagg0
lagg0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 02:00:00:b0:00:02
inet 192.168.50.2 netmask 0xffffff00 broadcast 192.168.50.255
nd6 options=9<PERFORMNUD,IFDISABLED>
media: Ethernet autoselect
status: active
laggproto roundrobin lagghash l2,l3,l4
laggport: em1 flags=4<ACTIVE>
laggport: em0 flags=4<ACTIVE>
Se debe hacer desde una máquina desde la red 192.168.50+Y.0, para visualizar se utilizará un retraso de 2 segundos
root@router1~# ping 192.168.50+Y.2
PING 192.168.50.2 (192.168.50.2) 56(84) bytes of data.
64 bytes from 192.168.50.2: icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from 192.168.50.2: icmp_seq=2 ttl=64 time=0.117 ms
No se debe detener el flujo de paquetes ICMP al datastore1
✍Nota: Si se desea puede ejecutar el envío de paquetes ICMP con un retraso de 2 a 3 segundos de manera que se puedan observar mejor los paquetes que se envían y reciben en el equipo datastore1
Ejecute el siguiente comando unas dos o tres veces para ver el valor de los Ipkts de la tarjeta em0
[root@datastore1] ~# netstat -i
Name Mtu Network Address Ipkts Ierrs Idrop Opkts Oerrs Coll
usbus 0 <Link#1> 0 0 0 0 0 0
em0 1500 <Link#2> 02:00:00:b0:00:02 291691 0 0 291103 0 0
em1 1500 <Link#3> 02:00:00:b0:00:02 53 0 0 0 0 0
usbus 0 <Link#4> 0 0 0 0 0 0
ipfw0 65536 <Link#5> 0 0 0 0 0 0
lo0 16384 <Link#6> 16804 0 0 16803 0 0
lo0 16384 localhost ::1 2 - - 2 - -
lo0 16384 fe80::1%lo0 fe80::1 0 - - 0 - -
lo0 16384 your-net localhost 16792 - - 16800 - -
lagg0 1500 <Link#7> 02:00:00:b0:00:02 291721 0 0 291105 0 0
lagg0 1500 192.168.50.0 datastore1 291620 - - 291031 - -
✍Nota: En FreeBSD no se puede utilizar el comando watch -d -n1 netstat –i para ver los cambios en la pantalla, el comando equivalente es cmdwatch, pero en por criterios de seguridad FreeNAS no permite la instalación de paquetes de una manera sencilla, se recomienda crear un script que ejecute peridoicamente el comando netstat –i
Para crear el script realice lo siguiente en FreeNAS:
[root@datastore1] ~# touch mi_script01
[root@datastore1] ~# nano mi_script01
Agregar el siguiente contenido
#!/usr/local/bin/bash
while [ 1 -lt 2 ]
do
clear
netstat -i
echo ---Para salir presionar Ctl + c ---------------------------------
eval $@
sleep 0.5
done
Para ejecutar el comando digitar
[root@datastore1] ~# ./mi_script01
Si es Workstation desconecte la primera interfaz de red (izquierda)
Si es VirtualBox desconecte la primera interfaz de red (arriba)
✍Nota: Para simular el pulso eléctrico si no funcionara la conmutación de las tarjetas, descoecte las dos interfaces de red pero solo reconecte la segunda interfaz de red.
[root@datastore1] ~# netstat -i
Name Mtu Network Address Ipkts Ierrs Idrop Opkts Oerrs Coll
usbus 0 <Link#1> 0 0 0 0 0 0
em0 1500 <Link#2> 02:00:00:b0:00:02 327832 0 0 327106 0 0
em1 1500 <Link#3> 02:00:00:b0:00:02 193 0 0 77 0 0
usbus 0 <Link#4> 0 0 0 0 0 0
ipfw0 65536 <Link#5> 0 0 0 0 0 0
lo0 16384 <Link#6> 20249 0 0 20248 0 0
lo0 16384 localhost ::1 2 - - 2 - -
lo0 16384 fe80::1%lo0 fe80::1 0 - - 0 - -
lo0 16384 your-net localhost 20224 - - 20245 - -
lagg0 1500 <Link#7> 02:00:00:b0:00:02 327954 0 0 327184 9 0
lagg0 1500 192.168.50.0 datastore1 327760 - - 327093 - -
bridg 1500 <Link#8> 02:0e:43:a1:51:00 61 0 0 536 0 0
epair 1500 <Link#9> 02:13:22:00:09:0a 1 0 0 83 0 0
Si todo está bien el flujo de envío de paquetes ICMP no debe detenerse y la tarjeta que debe mostrar paquetes de entrada y salida debe ser em1
Cuando se tenga la configuración inicial del lagg se debe detener el flujo de paquetes ICMP
0.1 Agregar una controladora SCSI, si se dan errores utilizar una tarjeta SATA
0.2 Agregar a la máquina virtual cuatro discos duros tipos SCSI
•Los discos serán 10GB
•Nombre: disco1.vdi, disco2.vdi, disco3.vdi, disco4.vdi
•El tipo de almacenamiento para el disco dentro de la máquina virtual será: dinámicos
0.3 Verificar que se reconozca los cuatro discos duros al iniciar el sistema operativo FreeBSB.
Si hay error en el arranque quitar la controladora SCSI y utilizar SATA
0.4 Ingrese a la consola Web de configuración
1.1 Clic en Opción “Almacenamiento”
1.2 Clic en botón “Ver Discos”
1.3 Verifique que los discos duros estén en Always On
A- Si los discos son SCSI -> da
[root@datastore1] ~# ls -l /dev/da*
crw-r----- 1 root operator 0x50 Jul 17 05:44 /dev/da0
crw-r----- 1 root operator 0x51 Jul 17 05:44 /dev/da1
crw-r----- 1 root operator 0x52 Jul 17 05:44 /dev/da2
crw-r----- 1 root operator 0x53 Jul 17 05:44 /dev/da3
B- Si los discos son SATA -> ada
Por consola
[root@datastore1] ~# ls -l /dev/ad*
lrwxr-xr-x 1 root wheel 4 Jun 23 09:28 /dev/ad0@ -> ada0
lrwxr-xr-x 1 root wheel 6 Jun 23 09:28 /dev/ad0p1@ -> ada0p1
lrwxr-xr-x 1 root wheel 6 Jun 23 09:28 /dev/ad0p2@ -> ada0p2
lrwxr-xr-x 1 root wheel 4 Jun 23 09:28 /dev/ad10@ -> ada4
lrwxr-xr-x 1 root wheel 4 Jun 23 09:28 /dev/ad4@ -> ada1
lrwxr-xr-x 1 root wheel 4 Jun 23 09:28 /dev/ad6@ -> ada2
lrwxr-xr-x 1 root wheel 4 Jun 23 09:28 /dev/ad8@ -> ada3
crw-r----- 1 root operator 0x50 Jun 23 09:28 /dev/ada0
crw-r----- 1 root operator 0x53 Jun 23 09:28 /dev/ada0p1
crw-r----- 1 root operator 0x55 Jun 23 09:28 /dev/ada0p2
crw-r----- 1 root operator 0x57 Jun 23 10:32 /dev/ada1
crw-r----- 1 root operator 0x59 Jun 23 10:32 /dev/ada2
crw-r----- 1 root operator 0x5b Jun 23 10:32 /dev/ada3
crw-r----- 1 root operator 0x5d Jun 23 10:32 /dev/ada4
2.1 Seleccione menú Almacenamiento
2.2 Clic en botón “Volúmenes”
2.3 Clic en botón “Volume Manager”
2.4 En la pantalla “Volume Manager”, y Completar pantalla:
•Escriba el nombre del Volumen: miRaid01
•Dé un clic en el botón “+”
•Seleccione “Mirror”
2.5 Clic en botón: “Añadir Volumen”
Espere un par de minutos.
Nota si utiliza el método manual, verifique que el tamaño resultante sea mayor que 12 GB y menor que 20 GB
Completar pantalla:
•Escriba el nombre del Volumen: miRaid01
•Encriptación: NO
•Discos del volumen: Presionando la tecla Ctrl y seleccionar 4 discos SCSI (da0, da1, da2, da3), si son SATA (ada1, ada2, ada3 y ada4)
•Deduplicación: Apagado
•Tipo de grupo: mirror
•Clic en botón: “Añadir Volumen”
3.1 Vea que aparezca en el listado de volúmenes /mnt/miRaid01
3.2 Seleccione Ver todos los volúmenes y compruebe que el volumen miRaid tiene 15.4 GiB
(10 || 10 = 10) + (10 || 10 = 10) ≈ 16 GiB
Mensaje en la consola principal
GEOM_ELI: Device ada1p1.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI: Crypto: software
GEOM_ELI: Device ada2p1.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI: Crypto: software
GEOM_ELI: Device ada3p1.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI: Crypto: software
GEOM_ELI: Device ada4p1.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI: Crypto: software
warning: total configured swap (2097152 pages) exceeds maximum recommended amount (1981824 pages).
warning: increase kern.maxswzone or reduce amount of swap.
4.1 Ingresar a FreeNAS con permisos administrativos
4.2 Seleccionar menú “Almacenamiento”
4.3 Seleccionar el Volumen a utilizar
Para este caso miRaid01
4.4 Dé un clic en el botón “crear zvol”
4.5 Completar formulario Crear zvol
•zvol name: miZvol01
•Size for this zvol: 8GiB
•Force size: No
•Nivel de compresión: Heredar
•Sparce volumen: No
•Block size: 16K (utilice botón modo avanzado)
4.6 Clic en botón “Add zvol”
4.7 Repetir el proceso para crear otro volumen en el RAID
4.8 Completar formulario Crear zvol
•zvol name: miZvol02
•Size for this zvol: 8GiB
•Force size: No
•Nivel de compresión: Heredar
•Sparce volumen: No
•Block size: 64K (utilice botón modo avanzado)
4.9 Verifique que se hayan creado los volúmenes.
4.10 Verifique el estado de los volúmenes
Digite en la TTY2
[root@dns1] ~# zpool status -v
pool: freenas-boot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
freenas-boot ONLINE 0 0 0
ada0p2 ONLINE 0 0 0
errors: No known data errors
pool: miRaid01
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
miRaid01 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gptid/92f23ad3-19e9-11e5-b52f-080027000001 ONLINE 0 0 0
gptid/93195cb8-19e9-11e5-b52f-080027000001 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
gptid/93408b3f-19e9-11e5-b52f-080027000001 ONLINE 0 0 0
gptid/93697b73-19e9-11e5-b52f-080027000001 ONLINE 0 0 0
errors: No known data errors
4.10 Verifique los puntos de montaje de los volúmenes.
[root@dns1] ~# ls /dev/zvol
./ ../ miRaid01/
[root@dns1] ~# ls -l /dev/zvol/miRaid01/
total 1
dr-xr-xr-x 2 root wheel 512 Jun 23 15:16 ./
dr-xr-xr-x 3 root wheel 512 Jun 23 15:16 ../
crw-r----- 1 root operator 0x94 Jun 23 15:16 miZvol01
crw-r----- 1 root operator 0x97 Jun 23 15:24 miZvol02
Ver discos duros, SATA (ada), ISCI (da), IDE ()
[root@datastore1] ~# dmesg | grep -i --color SATA
[root@datastore1] ~# dmesg | grep -i transfers
Ver la información de un disco específico, por ejemplo soporte para smartdrive
[root@datastore1] ~# smartctl -i /dev/ada0
[root@datastore1] ~# camcontrol identify ada0 | more
[root@datastore1] ~# diskinfo -v ada0
Ver temperatura en los discos
[root@datastore1] ~# smartctl -d ata -A /dev/ad0 | grep -i temperature
Ver particiones por disco duro
Ver por número de partición
[root@datastore1] ~# gpart show
Ver por número etiqueta de partición
[root@datastore1] ~# gpart show -p
Ver por número RAW de la partición
[root@datastore1] ~# gpart show -r
Ver estado del RAID Z
[root@datastore1] ~# zpool list
[root@datastore1] ~# zpool status
[root@datastore1] ~# zpool status miRaid01
[root@datastore1] ~# zpool get all miRaid01
Para limpiar el estado
[root@datastore1] ~# zpool clear miRaid01
Ver historial de acciones en el pool
[root@datastore1] ~# zpool history –il
Crear espejo
[root@datastore1] ~# zpool create tank mirror c4t5d0 c4t6d0
zpool add tank mirror c4t7d0 c4t8d0
Estado del RAID (zpool)
https://www.freebsd.org/cgi/man.cgi?zpool%288%29
Administración de los pool
https://www.freebsd.org/doc/handbook/zfs-zpool.html