Salta el contingut

4. Sistema RAID

En el següent manual s’explica com dur a terme la creació d’un sistema de discos RAID, tant en Sistemes Operatius Windows com Ubuntu.

Un sistema RAID combina diversos discos per funcionar com una sola unitat, augmentant la seguretat mitjançant còpies redundants, o el rendiment (lectura/escriptura més ràpida).

Windows 10/11

Passos

  1. PowerShell com a Administrador
# Es crea el directori per als discs virtuals (VHD)
mkdir "C:\RAIDDisks"
  1. Per crear els discs virtuals, haurem d’utilitzar l’eina de Windows "DISKPART"
# Es creen 3 VHDs

diskpart # Per accedir dins de l’eina

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

# Es munten els discs

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 # Per sortir de DISKPART
  1. Comprovem que s’hagin fet correctament les accions.
# Verifiquem existència dels discs

Get-Disk | Format-Table Number, FriendlyName, Size, PartitionStyle -AutoSize 
# Haurien d’aparèixer 3 discs virtuals semblants a la següent sortida:

---
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
---

Es crea l’espai d’emmagatzematge:

  1. Win + S -> Panell de control -> Sistema i seguretat -> Espais d’emmagatzematge

  1. Crear un nou grup i espais d’emmagatzematge.

  1. Seleccionem els discs que vulguem utilitzar -> Crear Grup

  1. Tipus de resistència = Reflex doble

    Mida = 9GB

  1. Crear espais d’emmagatzematge.

  1. Verifiquem que al sistema de fitxers apareix la unitat que acabem de crear.

Per automatitzar processos

Es poden crear scripts (.bat) perquè cada cop que s’iniciï l’escriptori, es muntin els discs.

  • El primer script tindrà la funció de muntatge, amb els comandaments que hem utilitzat anteriorment per muntar-los manualment.Per a això, es pot crear un arxiu en blanc i copiar les següents instruccions.

    Es guardarà amb el nom: "2_muntar_discs_raid.bat"

@echo off
REM ========================================
REM    MUNTAR DISCS VIRTUALS RAID
REM ========================================

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

REM Esperar 5 segons perquè el sistema estigui llest
timeout /t 5 /nobreak >nul

REM Muntar els tres discs
(
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 segon script crearà una tasca que s’executarà cada cop que s’iniciï Windows

    Per a això, es pot crear un fitxer en blanc i copiar les següents instruccions. Un cop fet, es guarda amb l’extensió ".bat" i s’executa en mode Administrador.

@echo off
echo ========================================
echo   CONFIGURAR MUNTATGE AUTOMÀTIC
echo ========================================
echo.

REM Verificar privilegis d’administrador

net session >nul 2>&1
if %errorLevel% neq 0 (
    echo ERROR: Aquest script requereix privilegis d’administrador
    pause
    exit /b 1
)

REM Obtenir la ruta actual de l’script de muntatge

set "SCRIPT_MONTATGE=%~dp02_muntar_discs_raid.bat"

echo Es configurarà el muntatge automàtic utilitzant:
echo %SCRIPT_MONTATGE%
echo.

REM Crear tasca programada a l’inici de Windows

schtasks /create /tn "MuntardiscsRAID" /tr "\"%SCRIPT_MONTATGE%\"" /sc onstart /ru SYSTEM /rl HIGHEST /f

if %errorLevel% equ 0 (
    echo.
    echo ========================================
    echo   CONFIGURACIÓ COMPLETADA
    echo ========================================
    echo.
    echo Els discs virtuals es muntaran automàticament
    echo cada cop que Windows s’iniciï.
    echo.
    echo Per verificar: Executar "taskschd.msc" i buscar "MuntardiscsRAID"
) else (
    echo ERROR: No s’ha pogut crear la tasca programada
)

echo.
pause

En aquest moment es podrà fer un reinici de l’escriptori i es podran veure els discs muntats correctament des de l’inici.

  • Explicació:

El 1r script emmagatzema les instruccions per muntar els discs.

El 2n script, primer de tot, comprova que s’hagi executat en mode administrador.

Un cop comprovat, crida el 1r script per fer el muntatge i li assigna el nom "SCRIPT_MONTATGE". A partir d’aquí, crea una tasca que s’inicia amb l’inici de l’escriptori i que crida aquest script.

La tasca creada es pot veure executant "taskschd.msc" i cercant "MuntardiscsRAID".

Ubuntu

Passos

Mitjançant 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
#                                     /
---
Cal verificar que tenim una partició del disc sense assignar.

Entrant a l’administrador de discs del mateix sistema ho podrem comprovar.

sudo fdisk /dev/vda # Això es pot substituir fent-ho directament des de GParted, només cal fer 2 particions d’1G (1024 MiB)
---
#    n (nova partició Disc1)
#    Intro
#    Intro
#    +1G
#    n (Disc2)
#    Intro
#    Intro
#    +1G
#    w
---
Aquí teniu un enllaç al manual on expliquem com fer aquestes particions amb GParted mitjançant un exemple.
sudo lsblk # Comprovar que s’ha realitzat correctament la acció
---
#    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

Proves de comprovació del bon funcionament:

# per provar

sudo apt install -y  # Eina que s'utilitza per administrar sistemes d'arxius
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
---

# fi prova