OpenBSD con raid 1 por software
OpenBSD con raid 1 por software
Escrito por Adrian Ali el 13 de julio de 2021, usando OpenBSD Release 7.0 contacto: adrianali arroba fortix.com.ar
Índice
1. Introducción
2. Instalación con softraid raid1
3. Administración
4. Prueba de desenchufar un disco de una raid1
5. Referencias
1. Introducción
OpenBSD ofrece algunos niveles de RAID a través del driver llamado softraid(4). En esta guía vamos a detallar los pasos para instalar OpenBSD sobre una raid1 por software montada en dos discos, ademas de documentar comandos de administración.
2. Instalación con softraid raid1
Cuando estamos instalando OpenBSD, para poder montar su raiz (/) sobre una raid1 debemos entrar al shell cuando aparece el siguiente mensaje:
Welcome to the OpenBSD/amd64 X.X installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? s
#
podemos consultar los discos con el siguiente comando:
# sysctl
como hemos arrancado con el instalador en una ramdisk limitada, no tenemos todos los devices creados, debemos crearlo con:
# cd /dev
# sh MAKEDEV sd0 sd1 sd2
ahora tenemos que inicializar el sector de arranque de los discos a usar:
MBR:
# fdisk -iy sd0
# fdisk -iy sd1
UEFI:
# fdisk -iy -g -b 960 sd0
# fdisk -iy -g -b 960 sd1
particionamos el primer disco:
# disklabel -E sd0
Label editor (enter '?' for help at any prompt)
sd0> a a
offset: [64]
size: [39825135] *
FS type: [4.2BSD] RAID
sd0*> w
sd0> q
No label changes.
Copio el esquema de particionado en el segundo disco:
# disklabel sd0 > layout
# disklabel -R sd1 layout
# rm layout
ensamblo el RAID1 con el comando de administración bioctl(8) :
# bioctl -c 1 -l sd0a,sd1a softraid0
sd3: at scsibus2 targ 1 lun 0: <OPENBSD , SR RAID 1, 006>
sd3: 305242MB, 512 bytes/sector , 625136753 sectors
softraid0: RAID 1 volume attached as sd3
Esto muestra que ahora tenemos un nuevo bus SCSI y un nuevo disco, "sd3" , no lo crea como "sd2" porque el mismo esta ocupado con el pen drive de arranque de instalación. Este volumen se detectara y ensamblara automáticamente cuando se inicie el sistema. Incluso si crea varias RAID array, el nombre del dispositivo siempre sera softraid0 , nunca softraid1 ni nada parecido. Debido a que el nuevo dispositivo probablemente tiene mucha basura donde se espera un registro de arranque maestro y una etiqueta de disco, es muy recomendable poner a cero la primera parte. Tener mucho cuidado con este comando; emitirlo en el dispositivo incorrecto podría provocar un mal día. Esto supone que el nuevo dispositivo softraid se creo como sd3.
hay q crear el device para el nuevo sd3:
cd /dev
sh MAKEDEV sd3
y ahora limpiamos el device con el comando "dd":
# dd if=/dev/zero of=/dev/rsd3c bs=1m count=1
hemos terminado de preparar la raid1, ahora con el comando "exit" volvemos al menú de instalación desde donde continuamos la misma.
3. Administración
Una ves instalado y reiniciado el sistema podemos administrar la raid1, esta es una secuencia de comandos para ver primero, en que device esta instalado el sistema; segundo, cuales son los discos del sistema. Con esto deducimos que hay un device raid1 (sd2), vemos sus propiedades y estado con los comandos bioctl y sysctl :
Consulamos el espacio libre:
puffy # df
Filesystem 512-blocks Used Avail Capacity Mounted on
/dev/sd2a 604723056 3182944 571303960 1% /
puffy #
consultamos los dispositivos de disco disponibles en el sistema:
puffy # sysctl hw.disknames
hw.disknames=sd0:7af8d5850aa5fe84,sd1:39ab931146a1e4b4,sd2:fe9801d4570827e8
puffy #
consultamos información especifica de un disco, en este caso es el device de la raid1:
puffy # bioctl -q sd2
sd2: <OPENBSD, SR RAID 1, 006>, serial (unknown)
puffy #
consultamos el estado de la raid por software:
puffy # sysctl -a | grep softraid0
hw.sensors.softraid0.drive0=online (sd2), OK
puffy #
otra forma de consultar el estado con más detalle:
puffy # bioctl softraid0
Volume Status Size Device
softraid0 0 Degraded 320070017536 sd2 RAID1
0 Online 320070017536 0:0.0 noencl <sd0a>
1 Offline 0 0:1.0 noencl <sd1a>
puffy #
4. Prueba de desenchufar un disco de una raid1
Vamos aprender a reconstruir "rebuild" una raid1 degradada, para ello vamos a desenchufar un disco, ya sea desde su alimentación, desde el cable de datos o ambos, noté que en algunos servidores con controladoras SAS/SCSI muy viejas se producía un delay de unos 10 segundos aproximadamente en donde el IO de acceso a disco se congelaba, no sé si este comportamiento es particular del servidor donde hice las pruebas o general cuando usamos raid1 por software con OpenBSD.
Una ves desenchufado el disco con estos comandos vemos que la raid ahora esta degradada:
puffy # sysctl -a | grep softraid0
hw.sensors.softraid0.drive0=degraded (sd2), WARNING
puffy #
con más detalle:
puffy # bioctl softraid0
Volume Status Size Device
softraid0 0 Degraded 320070017536 sd2 RAID1
0 Offline 0 0:0.0 noencl <sd0a>
1 Online 320070017536 0:1.0 noencl <sd1a>
puffy #
confirmamos que esta degradada puesto se informa que el device sd2 que es la raid que creamos esta en estado "Degraded". Se prueba reiniciar en este estado el sistema operativo y arranca bien, las pruebas las hice degradando la raid ya sea desenchufando el primer disco SATA o el segundo, en ambos casos el sistema soporta arrancar sin problemas.
Cuando arrancamos con una raid degrada, en el sistema solo aparecen dos discos, el que esta online y el disco/device de la raid1:
puffy # sysctl hw.disknames
hw.disknames=sd0:7af8d5850aa5fe84,sd1:fe9801d4570827e8
puffy #
el device raid paso de ser "sd2" a ser "sd1" , lo comprobamos:
puffy # bioctl -q sd1
sd1: <OPENBSD, SR RAID 1, 006>, serial (unknown)
puffy #
muestra que esta degradada:
puffy # sysctl -a | grep softraid0
hw.sensors.softraid0.drive0=degraded (sd1), WARNING
puffy #
ahora volvemos a enchufar el disco faltante, después que reiniciamos aparece el disco que volvimos a enchufar:
puffy # sysctl hw.disknames
hw.disknames=sd0:7af8d5850aa5fe84,sd1:39ab931146a1e4b4,sd2:fe9801d4570827e8
puffy #
El device del disco que volvimos a enchufar es el "sd1" , pero aún sigue degradada la raid:
puffy # sysctl -a | grep softraid0
hw.sensors.softraid0.drive0=degraded (sd2), WARNING
puffy #
consultamos con más detalle:
puffy # bioctl softraid0
Volume Status Size Device
softraid0 0 Degraded 320070017536 sd2 RAID1
0 Online 320070017536 0:0.0 noencl <sd0a>
1 Offline 0 0:1.0 noencl <sd1a>
puffy #
ahora hago el rebuild agregando el disco/particion a la raid:
puffy # bioctl -R /dev/sd1a sd2
softraid0: rebuild of sd2 started on sd1a
puffy #
controlamos:
puffy # sysctl -a | grep softraid0
hw.sensors.softraid0.drive0=rebuilding (sd2), WARNING
puffy #
con más detalle:
puffy # bioctl softraid0
Volume Status Size Device
softraid0 0 Rebuild 320070017536 sd2 RAID1 0% done
0 Online 320070017536 0:0.0 noencl <sd0a>
1 Rebuild 320070017536 0:1.0 noencl <sd1a>
puffy #
Tener en cuenta que el rebuild es un proceso lento que puede demorar varias horas dependiendo del servidor, después de 30 minutos en este servidor el avance solo fue de un 4%:
puffy # bioctl softraid0
Volume Status Size Device
softraid0 0 Rebuild 320070017536 sd2 RAID1 4% done
0 Online 320070017536 0:0.0 noencl <sd0a>
1 Rebuild 320070017536 0:1.0 noencl <sd1a>
puffy #
se soporta perfectamente reiniciar el servidor o apagarlo mientras esta en proceso de rebuild, una ves encendido continua desde donde quedo.