
Mi idea actual es crear una matriz de software, clase RAID-6, con 4 unidades miembros, usando mdadm
.
En concreto, las unidades serían discos duros de 1 TB en SATA en un pequeño servidor Dell T20.
El sistema operativo esGNU/LinuxDebian8.6 (posteriormente actualizado:Jessie⟶Estirar⟶Buster)
En mi caso, eso haría 2 TB de espacio en disco con 2 TB de paridad.
También me gustaría tenerlo con la tabla de particiones GPT, para que funcione, no estoy seguro de cómo proceder específicamente, suponiendo que preferiría hacer esto únicamente a través del terminal.
Como nunca creé una matriz RAID, ¿podrían orientarme sobre cómo debo proceder?
Notas:
Esta matriz servirá únicamente para los datos. No tiene arranque ni sistema operativo.
Opté por RAID-6 debido al propósito de esta matriz. Dos fallas en la unidad la matriz debe poder sobrevivir. Dado que estoy limitado por hardware a 4 unidades, no existe ninguna alternativa al RAID-6, que yo sepa. (Por muy fea que pueda parecer la desaceleración de RAID-6, no importa en esta matriz).
Respuesta1
En esta respuesta, deje claro que todos los datos se destruirán en todos los miembros de la matriz (unidades), ¡así que primero haga una copia de seguridad!
Abra la terminal y conviértaseroot
(su
); si usted tienesudo
habilitado, también puede hacer, por ejemplo sudo -i
; verman sudo
para todas las opciones):
sudo -i
Primero, debemos borrar las unidades, es decir, si antes había datos y sistemas de archivos. Supongamos que tenemos 4 miembros: sdi
, sdj
, sdk
, sdl
. Con el fin de tener retroalimentación de este proceso visualmente, elpv
(visor de tuberías)se usó aquí:
pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl
Alternativamente, para simplemente comprobar si no queda nada, puede echar un vistazo con GParted en todas las unidades, y si hay alguna partición con o sin sistema de archivos, borrarla podría ser suficiente, aunque yo prefiero lo anterior, poner a cero todas las las unidades involucradas, recuerde desmontar todas las particiones antes de hacerlo, podría hacerse de manera similar a estas frases ingeniosas:
umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl
Luego, inicializamos todas las unidades con la tabla de particiones GUID (GPT) y necesitamos particionar todas las unidades, pero no hagamos esto con GParted, porque crearía un sistema de archivos en el proceso, lo cual no queremos. utilizar gdisk
en su lugar:
gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl
En todos los casos utilice lo siguiente:
o
Enterpara una nueva tabla de particiones GUID vacía (GPT)
y
Enterpara confirmar su decisión
n
Enterpara una nueva partición
Enterpara la configuración predeterminada de la primera partición
Enterpara la configuración predeterminada del primer sector
Enterpara la configuración predeterminada del último sector
fd00
Enterpara el tipo de RAID de Linux
w
Enterpara escribir cambios
y
Enterpara confirmar su decisión
Puede examinar las unidades ahora:
mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl
Debería decir:
(type ee)
Si es así, ahora examinamos las particiones:
mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1
Debería decir:
No md superblock detected
Si es así, podemos crear la matriz RAID6:
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1
Debemos esperar hasta que la matriz esté completamente creada, este proceso lo podemos realizar fácilmente watch
:
watch cat /proc/mdstat
Después de la creación del array, debemos fijarnos en su detalle:
mdadm --detail /dev/md0
Debería decir:
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Ahora creamos un sistema de archivos en la matriz, si usa ext4
, lo siguienteocultoEs mejor evitar el comando, ya que ext4lazyinit
tomaría una cantidad considerable de tiempo en el caso de una matriz grande, de ahí el nombre "perezoso", por lo tanto te recomiendo que evites este:
mkfs.ext4 /dev/md0
En su lugar, deberías forzar una inicialización instantánea completa (con el 0% reservado root
ya que es una matriz de datos):
mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0
Al especificar estas opciones, los inodos y el diario se inicializarán inmediatamente durante la creación, lo que resulta útil para matrices más grandes.
Si eligió tomar un atajo y creó el ext4
sistema de archivos con el "comando que es mejor evitar", tenga en cuenta que ext4lazyinit
llevará una cantidad considerable de tiempo inicializar todos los inodos; puede observarlo hasta que termine, por ejemplo, con iotop
o nmon
.
De cualquier manera que elija realizar la inicialización del sistema de archivos, debe montarlo después de que haya finalizado su inicialización.
Ahora creamos algún directorio para esta matriz RAID6:
mkdir -p /mnt/raid6
Y simplemente móntelo:
mount /dev/md0 /mnt/raid6
Como básicamente hemos terminado, podemos usar GParted nuevamente para verificar rápidamente si muestra linux-raid
el sistema de archivos, junto con la raid
bandera en todas las unidades.
Si es así, creamos correctamente la matriz RAID6 con particiones GPT y ahora podemos copiar archivos en ella.
Vea qué UUID md
tiene el sistema de archivos:
blkid /dev/md0
Copie el UUID al portapapeles.
Ahora necesitamos editar fstab
, con tu editor de texto favorito, usénano
, aunquesudoedit
podría usarse mejor:
nano /etc/fstab
Y agregue una entrada:
UUID=<the UUID you have in the clipboard> /mnt/raid6 ext4 defaults 0 0
Yo mismo no recomiendo el uso de defaults
un conjunto de banderas, simplemente quería que la línea no fuera demasiado compleja.
Estos son los indicadores de montaje que uso en un RAID de datos respaldado por UPS (en lugar de defaults
): nofail,nosuid,nodev,noexec,nouser,noatime,auto,async,rw,data=journal,errors=remount-ro
Puede comprobar si es correcto después de guardar los cambios:
mount -av | grep raid6
Debería decir:
already mounted
Si es así, guardamos la configuración de la matriz; en caso de que aún no tengas ningún md
dispositivo creado, simplemente puedes hacer:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
En caso de que ya existan matrices, simplemente ejecute el comando anterior sin redirigir al archivo de configuración:
mdadm --detail --scan
y agregue la nueva matriz al archivo de configuración manualmente.
Al final, no olvide actualizar su archivo initramfs
, porque de lo contrario su nueva matriz solo se ensamblará automáticamente en modo de solo lectura, probablemente igual /dev/md127
o similar:
update-initramfs -u -k all
Comprueba si hiciste todo según lo planeado y, de ser así, puedes reiniciar:
reboot
Respuesta2
Si crea las matrices RAID en 4 dispositivos de bloque sin formato en lugar de 2 x 4 particiones, eso significa que todas las operaciones de recuperación RAID necesariamente pueden operar en todos los dispositivos, y viceversa.
Entonces, por ejemplo, si espera que los discos eventualmente comiencen a desarrollar errores de E/S en la segunda mitad de ellos, con los arreglos sobre las particiones, eso significaría que solo uno de los arreglos se daría cuenta, mientras que el otro continuaría intacto, al menos hasta el daño se extiende a su mitad. Esto podría brindarle cierta flexibilidad temporal o la ausencia de desaceleración de E/S.
Por otro lado, tan pronto como comienzas a intervenir, tienes que sacar todo el disco físico para reemplazarlo, por lo que necesariamente tienes que degradar ambos arreglos en algún momento. Además, con los SSD, aparentemente se ha vuelto más común que falle todo el disco, por lo que ambas matrices podrían verse afectadas por tales eventos de todos modos.
No hay nada que decir sobre los detalles del proceso que no se pueda encontrar en la documentación típica de partición y mdadm.