Saltar a contenido

4. Sistema RAID

En el siguiente manual se explica cómo llevar a cabo la creación de un sistema de discos RAID, tanto en Sistemas Operativos Windows cómo Ubuntu.

Un sistema RAID combina varios discos para funcionar como una sola unidad, aumentando la seguridad, mediante copias redundantes, o el rendimiento (lectura/escritura más rápida).

Windows 10/11

Pasos

  1. PowerShell como Administrador
# Se crea el directorio para los discos virtuales (VHD)
mkdir "C:\RAIDDisks"
  1. Para crear los discos virtuales, deberemos utilizar la herramienta de Windows "DISKPART"
# Se crean 3 VHDs

diskpart # Para acceder dentro de la herramienta

DISKPART> create vdisk file="C:\RAIDDisks\Disco1.vhd" maximum=10000 type=expandable # Disc1

DISKPART> create vdisk file="C:\RAIDDisks\Disco2.vhd" maximum=10000 type=expandable # Disc2

DISKPART> create vdisk file="C:\RAIDDisks\Disco3.vhd" maximum=10000 type=expandable # Disc3

# Se montan los discos

DISKPART> select vdisk file="C:\RAIDDisks\Disco1.vhd"
DISKPART> attach vdisk

DISKPART> select vdisk file="C:\RAIDDisks\Disco2.vhd"
DISKPART> attach vdisk

DISKPART> select vdisk file="C:\RAIDDisks\Disco3.vhd"
DISKPART> attach vdisk

DISKPART> exit # Para salir de DISKPART
  1. Comprobamos que se hayan hecho correctamente las acciones.
# Verificamos existencia de los discos

Get-Disk | Format-Table Number, FriendlyName, Size, PartitionStyle -AutoSize 
# Debería de aparecer 3 discos virtuales parecidos a la salida siguiente:

...
Number FriendlyName              Size          PartitionStyle
------ ------------              ----          --------------
1      Msft Virtual Disk         10485760000   RAW
2      Msft Virtual Disk         10485760000   RAW
3      Msft Virtual Disk         10485760000   RAW
0      Red Hat VirtIO            171798691840  GPT
---

Se crea el espacio de almacenamiento:

  1. Win + S -> Panel de control -> Sistema y seguridad -> Espacios de almacenamiento

  1. Crear un nuevo grupo y espacios de almacenamiento.

  1. Seleccionamos los discos que queramos utilitzar -> Crear Grup

  1. Tipo de resistencia = Reflejo Doble

    Tamaño = 9GB

  1. Crear espacios de almacenamiento.

  1. Verificamos que en el sistema de archivos nos sale la unidad que acabamos de crear. Si es así ya tenemos el sistema RAID terminado.

Para automatizar Procesos

Se pueden crear scripts (.bat), para que cada vez que se inicie el escritorio, se montan los discos.

  • El primer script será el encargado de tener la función de montaje, los comandos que hemos utilizado anteriormente para montarlos manualmente. Para esto, se puede crear un archivo en blanco y copiar las siguientes instrucciones.

    Se guarda con el nombre: "2_montar_discos_raid.bat"

@echo off
REM ========================================
REM    MONTAR DISCOS VIRTUALES RAID
REM ========================================

REM Verificar privilegios administrador
net session >nul 2>&1
if %errorLevel% neq 0 (
    exit /b 1
)

REM Esperar 5 segundos para que el sistema esté listo
timeout /t 5 /nobreak >nul

REM Montar los tres discos
(
echo select vdisk file="C:\RAIDDisks\Disco1.vhd"
echo attach vdisk
echo select vdisk file="C:\RAIDDisks\Disco2.vhd"
echo attach vdisk
echo select vdisk file="C:\RAIDDisks\Disco3.vhd"
echo attach vdisk
) | diskpart >nul 2>&1

exit /b 0
  • El segundo script creará una tarea que se ejecutará cada vez que se inicie Windows

    Para esto, se puede crear un archivo en blanco y copiar las siguientes instrucciones. Una vez hecho, se guarda con la extensión ".bat" y se ejecuta en modo Administrador.

@echo off
echo ========================================
echo   CONFIGURAR MONTAJE AUTOMÁTICO
echo ========================================
echo.

REM Verificar privilegios administrador

net session >nul 2>&1
if %errorLevel% neq 0 (
    echo ERROR: Este script requiere de privilegios de administrador
    pause
    exit /b 1
)

REM Obtener la ruta actual del script de montaje

set "SCRIPT_MONTAJE=%~dp02_montar_discos_raid.bat"

echo Se configurará el montaje automático utilizando:
echo %SCRIPT_MONTAJE%
echo.

REM Crear tarea programada al inicio de Windows

schtasks /create /tn "MontarDiscosRAID" /tr "\"%SCRIPT_MONTAJE%\"" /sc onstart /ru SYSTEM /rl HIGHEST /f

if %errorLevel% equ 0 (
    echo.
    echo ========================================
    echo   CONFIGURACIÓN COMPLETADA
    echo ========================================
    echo.
    echo Los discos virtuales se montarán automáticamente
    echo cada vez que Windows encienda.
    echo.
    echo Para verificar: Ejecutar "taskschd.msc" y buscar "MontarDiscosRAID"
) else (
    echo ERROR: No se pudo crear la tarea programada
)

echo.
pause

En este momento se podrá hacer un reinicio del escritorio y se podrán ver los discos montados correctamente desde el inicio.

  • Explicación:

El 1r script, almacena las instrucciones para montar los discos.

El 2n script, primero de todo comprueba que se hayan ejecutado en modo administrador.

Una vez comprobado, llama al 1r script para hacer el montaje y le da el nombre "SCRIPT_MONTAJE". A partir de aquí crea una tarea que se inicia al start del escritorio y que llama a este script.

La tarea creada se puede ver ejecutando al buscar "taskschd.msc" y buscar "MontarDiscosRAID"

Ubuntu

Pasos

Mediante terminal:

sudo apt update
sudo apt upgrade -y
sudo apt install -y mdadm
sudo lsblk
---
#    vda    252:0    0   100G  0 disk 
#    ├─vda1 252:1    0     1M  0 part 
#    ├─vda2 252:2    0   513M  0 part /boot/efi
#    └─vda3 252:3    0  79,5G  0 part /var/snap/firefox/common/host-hunspell
#                                     /
---
Hay que verificar que tenemos una partición en el disco sin asignar

Entrando en el administrador de discos del mismo sistema lo podremos verificar.

sudo fdisk /dev/vda # Esto se puede sustituir haciéndolo desde el GParted directamente, solo se necesitarán hacer 2 particiones de 1G (1024 MiB)
---
#    n (nueva partición Disco1)
#    Intro
#    Intro
#    +1G
#    n (Disco2)
#    Intro
#    Intro
#    +1G
#    w
---
Aquí teneis un enlace al manual donde explicamos cómo hacer estas particiones con GParted mediante un ejemplo.
sudo lsblk #se hace para comprobar que se realiza correctamente la acción
---
#    vda    252:0    0   100G  0 disk 
#    ├─vda1 252:1    0     1M  0 part 
#    ├─vda2 252:2    0   513M  0 part /boot/efi
#    ├─vda3 252:3    0  79,5G  0 part /var/snap/firefox/common/host-hunspell
#    │                                /
#    ├─vda4 252:4    0     1G  0 part 
#    └─vda5 252:5    0     1G  0 part 
---
sudo wipefs -a /dev/vda4 /dev/vda5
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/vda4 /dev/vda5
---
#    yes
---
sudo lsblk
---
#    vda     252:0    0   100G  0 disk  
#    ├─vda1  252:1    0     1M  0 part  
#    ├─vda2  252:2    0   513M  0 part  /boot/efi
#    ├─vda3  252:3    0  79,5G  0 part  /var/snap/firefox/common/host-hunspell
#    │                                  /
#    ├─vda4  252:4    0     1G  0 part  
#    │ └─md0   9:0    0  1022M  0 raid1 
#    └─vda5  252:5    0     1G  0 part  
#      └─md0   9:0    0  1022M  0 raid1
---
sudo mdadm --detail /dev/md0
---
#    /dev/md127:
#               Version : 1.2
#         Creation Time : Wed Nov 12 13:51:17 2025
#            Raid Level : raid1
#            Array Size : 1046528 (1022.00 MiB 1071.64 MB)
#         Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
#          Raid Devices : 2
#         Total Devices : 2
#           Persistence : Superblock is persistent
#    
#           Update Time : Wed Nov 12 13:51:31 2025
#                 State : clean 
#        Active Devices : 2
#       Working Devices : 2
#        Failed Devices : 0
#         Spare Devices : 0
#
#    Consistency Policy : resync
#
#                  Name : ubuntu:0  (local to host ubuntu)
#                  UUID : 4afe7442:2f7b8bd2:b42d29cd:78ac0321
#                Events : 17
#
#        Number   Major   Minor   RaidDevice State
#           0     252        4        0      active sync   /dev/vda4
#           1     252        5        1      active sync   /dev/vda5
---
echo "DEVICE partitions" | sudo tee /etc/mdadm/mdadm.conf >/dev/null
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf >/dev/null
sudo update-initramfs -u

Pruebas de comprobación del buen funcionamiento:

# para probar

sudo apt install -y  # Herramienta que se utiliza para administrar sistemas de archivos
sudo mkfs.xfs -f /dev/md0
---
#    meta-data=/dev/md0               isize=512    agcount=4, agsize=65408 blks
#             =                       sectsz=512   attr=2, projid32bit=1
#             =                       crc=1        finobt=1, sparse=1, rmapbt=0
#             =                       reflink=1    bigtime=0 inobtcount=0
#    data     =                       bsize=4096   blocks=261632, imaxpct=25
#             =                       sunit=0      swidth=0 blks
#    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
#    log      =internal log           bsize=4096   blocks=1566, version=2
#             =                       sectsz=512   sunit=0 blks, lazy-count=1
#    realtime =none                   extsz=4096   blocks=0, rtextents=0
#    Discarding blocks...Done.
---
sudo mount -t xfs -o defaults,noatime,nodiratime /dev/md0 /mnt
sudo lsblk
---
#    vda       252:0    0   100G  0 disk  
#    ├─vda1    252:1    0     1M  0 part  
#    ├─vda2    252:2    0   513M  0 part  /boot/efi
#    ├─vda3    252:3    0  79,5G  0 part  /var/snap/firefox/common/host-hunspell
#    │                                    /
#    ├─vda4    252:4    0     1G  0 part  
#    │ └─md0     9:127  0  1022M  0 raid1 /mnt
#    └─vda5    252:5    0     1G  0 part  
#      └─md0     9:127  0  1022M  0 raid1 /mnt
---
df -hT /mnt
---
#    S. ficheros     Tipo  Medida En uso Libre  %Uso Montado en
#    /dev/md0        xfs   1016M  40M    977M   4%   /mnt
---
sudo umount /mnt
sudo lsblk
---
#    vda       252:0    0   100G  0 disk  
#    ├─vda1    252:1    0     1M  0 part  
#    ├─vda2    252:2    0   513M  0 part  /boot/efi
#    ├─vda3    252:3    0  79,5G  0 part  /var/snap/firefox/common/host-hunspell
#    │                                    /
#    ├─vda4    252:4    0     1G  0 part  
#    │ └─md0     9:127  0  1022M  0 raid1 
#    └─vda5    252:5    0     1G  0 part  
#      └─md0     9:127  0  1022M  0 raid1
---

# fin prueba