Mi idea actual es crear una matriz de software, clase RAID-6, con 4 unidades de miembro, usando mdadm
.
Específicamente, las unidades serían HDD de 1 TB en SATA en un pequeño servidor Dell T20.
El sistema operativo es GNU/Linux Debian 8.6 (más tarde actualizado:Jessie ⟶ Stretch ⟶ Buster)
Eso haría 2 TB de espacio en disco con 2 TB de paridad en mi caso.
También me gustaría tenerlo con la tabla de particiones GPT, para que eso funcione, no estoy seguro de cómo proceder específicamente, suponiendo que preferiría hacer esto puramente en la terminal.
Como nunca creé una matriz RAID, ¿podría orientarme sobre cómo debo proceder?
Notas:
-
Esta matriz servirá solo para los datos únicos. 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. Como estoy limitado por el hardware a 4 unidades, no hay alternativa a RAID-6 que yo sepa. (Por desagradable que parezca la ralentización de RAID-6, no importa en esta matriz).
Respuesta aceptada:
En esta respuesta, deje claro que todos los datos se destruirán en todos los miembros de la matriz (unidades), ¡así que haga una copia de seguridad primero!
Abra la terminal y conviértase en root
(su
); si tienes sudo
habilitado, también puede hacer, por ejemplo, sudo -i
; ver man sudo
para todas las opciones):
sudo -i
Primero, deberíamos borrar las unidades, si hubo datos y sistemas de archivos antes, eso es. Supongamos que tenemos 4 miembros:sdi
, sdj
, sdk
, sdl
. Con el propósito de tener una retroalimentación de este proceso visualmente, el pv
(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 verificar si no queda nada, puede mirar 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 todo 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 haga esto con GParted, porque crearía un sistema de archivos en el proceso, que no queremos, usa gdisk
en cambio:
gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl
En todos los casos utilice lo siguiente:
o
Entrar para la nueva tabla de particiones GUID vacía (GPT)y
Entrar para confirmar su decisiónn
Entrar para nueva partición
Introducir por defecto de la primera partición
Intro por defecto del primer sector
Introducir por defecto del último sectorfd00
Entrar para Linux tipo RAIDw
Entrar para escribir cambiosy
Entrar para 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
Deberíamos esperar hasta que la matriz esté completamente creada, este proceso podemos watch
fácilmente :
watch cat /proc/mdstat
Después de la creación de la matriz, debemos ver 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
, el siguiente oculto es mejor evitar el comando, debido a ext4lazyinit
tomaría una cantidad de tiempo notable en el caso de una matriz grande, de ahí el nombre, "lazyinit “, por lo que te recomiendo que evites este:
mkfs.ext4 /dev/md0
En su lugar, debe forzar una inicialización instantánea completa (con 0% reservado para 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 arreglos más grandes.
Si eligió tomar un atajo y creó el ext4
sistema de archivos con el "comando mejor evitado", tenga en cuenta que ext4lazyinit
tomará una cantidad de tiempo notable para inicializar todos los inodos, puede verlo hasta que termine, p. con iotop
o nmon
.
De cualquier manera que elija realizar la inicialización del sistema de archivos, debe montarlo después de que haya terminado su inicialización.
Ahora creamos un directorio para esta matriz RAID6:
mkdir -p /mnt/raid6
Y simplemente montarlo:
mount /dev/md0 /mnt/raid6
Como esencialmente hemos terminado, podemos usar GParted nuevamente para verificar rápidamente si muestra linux-raid
sistema de archivos, junto con el raid
marca en todas las unidades.
Si es así, creamos correctamente la matriz RAID6 con particiones GPT y ahora podemos copiar archivos en ella.
Ver qué UUID el md
el sistema de archivos tiene:
blkid /dev/md0
Copie el UUID al portapapeles.
Ahora necesitamos editar fstab
, con tu editor de texto favorito, usé nano
, aunque sudoedit
podría ser mejor usado:
nano /etc/fstab
Y agregue agregarle una entrada:
UUID=<the UUID you have in the clipboard> /mnt/raid6 ext4 defaults 0 0
Yo mismo no recomiendo usar defaults
conjunto de banderas, simplemente quería que la línea no fuera demasiado compleja.
Estas son las banderas 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 verificar si es correcto después de guardar los cambios:
mount -av | grep raid6
Debería decir:
already mounted
Si lo hace, guardamos la configuración del arreglo; en caso de que no tengas ningún md
dispositivo aún creado, simplemente puede hacer:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
En caso de que ya existan matrices, simplemente ejecute el comando anterior sin redirección al archivo de configuración:
mdadm --detail --scan
y agregue la nueva matriz al archivo de configuración manualmente.
Relacionado:¿Hora de inicio del proceso con zona horaria?
Al final, no olvide actualizar su initramfs
, porque de lo contrario su nueva matriz solo se ensamblará automáticamente en modo de solo lectura, probablemente como /dev/md127
o similar:
update-initramfs -u -k all
Compruebe si hizo todo según lo planeado y, de ser así, puede reiniciar:
reboot