🎯 Objectiu

  • Aprofitar discos de diferents capacitats sense perdre espai.
  • Afegir paritat (1 o 2 discos) per protegir dades.
  • Poder afegir/treure discos fàcilment.
  • Ideal per a NAS domèstic, multimedia, backups, arxius grans.

🔩 1) Hardware necessari

A. Servidor / PC

  • CPU bàsica (Intel/AMD) — SnapRAID no requereix gaire CPU.
  • 8–16 GB de RAM (suficient per a NAS).

B. Connectivitat per discos

  • Ports SATA suficients.
  • Si no en tens prou:
    • HBA LSI 9211-8i / 9207-8i (en mode IT, “flashejada”).
    • Cables SFF-8087 → 4×SATA si uses HBA.
  • Caixa/Backplane amb baies de 2,5″ i ventilació.

C. Emmagatzematge

  • 1 SSD petit per al sistema (p. ex. 120–240 GB).
  • 10 HDD de 2,5″ (els teus, 500 GB–1 TB barrejats).

D. Xarxa (opcional però recomanat)

  • 1 GbE com a mínim; 2.5 GbE si copies grans.

E. Altres

  • SAI (UPS) per evitar corrupció durant talls elèctrics.
  • Disseny de flux d’aire: els 2,5″ també s’escalfen.

🧠 2) Concepte clau (mergerFS + SnapRAID)

  • mergerFS: munta múltiples discos com una sola carpeta (no fa striping ni RAID) → màxima flexibilitat i capacitat.
  • SnapRAID: crea paritat (1 o 2 discos) per recuperar si un disc falla.
  • No és temps real: SnapRAID protegeix dades quan fas syncs (planificats amb cron/systemd).

Avantatge clau: Si cauen més discos que la paritat, només perds els fitxers que hi eren (no tot el pool).


🧱 3) Disseny recomanat amb 10 discos (exemple)

  • 8 discos de dades (mescla de 500 GB–1 TB).
  • 2 discos de paritat (triar els més grans possibles per maximitzar cobertura).
    • Nota: cada disc de paritat ha de ser com a mínim tan gran com el disc de dades més gran.

Estructura de directoris (exemple):

/srv/data/disk1
/srv/data/disk2
...
/srv/data/disk10
/mnt/pool        ← punt de muntatge del mergerFS

🐧 4) Instal·lació a Ubuntu Server (22.04/24.04)

Executa com a root o amb sudo.

4.1. Preparació de discos

Identifica discos:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

Crea particions i format ext4 (repeteix per a cada disc /dev/sdX):

parted /dev/sdX --script mklabel gpt
parted /dev/sdX --script mkpart primary ext4 1MiB 100%
mkfs.ext4 -L dataX /dev/sdX1

Crea carpetes de muntatge:

mkdir -p /srv/data/disk{1..10}
mkdir -p /mnt/pool

Aconsegueix UUIDs:

blkid

Afegeix a /etc/fstab (exemple per 4 discos; repeteix per tots):

UUID=XXXXXXXX-... /srv/data/disk1 ext4 defaults,nofail 0 2
UUID=YYYYYYYY-... /srv/data/disk2 ext4 defaults,nofail 0 2
UUID=ZZZZZZZZ-... /srv/data/disk3 ext4 defaults,nofail 0 2
UUID=WWWWWWWW-... /srv/data/disk4 ext4 defaults,nofail 0 2

Munta-ho:

mount -a

4.2. Instal·la mergerFS i SnapRAID

apt update
apt install -y mergerfs snapraid

4.3. Configura mergerFS (pool únic)

Edita /etc/fstab i afegeix una línia per crear el pool:

# Pool amb política de còpia «mspmfs» (millor distribució) i permisos coherents

/srv/data/disk1:/srv/data/disk2:/srv/data/disk3:/srv/data/disk4:/srv/data/disk5:/srv/data/disk6:/srv/data/disk7:/srv/data/disk8:/srv/data/disk9:/srv/data/disk10 /mnt/pool fuse.mergerfs </span>

defaults,allow_other,use_ino,category.create=mspmfs,minfreespace=50G,moveonenospc=true,fsname=mergerfs 0 0

minfreespace=50G evita que un disc s’ompli al 100%. Ajusta segons capacitat.

Aplica:

mount -a

4.4. Configura SnapRAID

Fitxer de config: /etc/snapraid.conf (exemple amb 2 paritats i 8 discos de dades). Tria com a parity els discos més grans.

# Paritat (1 o 2 línies). Usa particions/muntatges dedicats a paritat.

parity /srv/data/disk9/snapraid.parity
parity /srv/data/disk10/snapraid.par2

# «content» guarda metadades de fitxers. Millor en múltiples discos.

content /srv/data/disk1/snapraid.content
content /srv/data/disk2/snapraid.content
content /srv/data/disk3/snapraid.content

# Discos de dades (nom lògic + camí)

disk d1 /srv/data/disk1
disk d2 /srv/data/disk2
disk d3 /srv/data/disk3
disk d4 /srv/data/disk4
disk d5 /srv/data/disk5
disk d6 /srv/data/disk6
disk d7 /srv/data/disk7
disk d8 /srv/data/disk8

# Exclusions (carpetes temporals, trash, etc.)

exclude .tmp
exclude /lost+found/
exclude .Trash-
exclude .recycle/
exclude @Recycle/

Inicialització (primer cop):

snapraid -e fix -p 100 -o 2000 touch   # prepara estructura (opcional)
snapraid sync                          # crea la paritat inicial (tardarà hores)
snapraid status

⏱️ 5) Planificació automàtica (sync, scrub, check)

Opció A: amb cron

Editeu crontab -e i afegiu:

# Sync diari a les 3:30
30 3 * * * /usr/bin/snapraid sync >> /var/log/snapraid-sync.log 2>&1

# Scrub setmanal (revisa 12% del data set per setmana)
0 4 * * 6 /usr/bin/snapraid scrub -p 12 >> /var/log/snapraid-scrub.log 2>&1

# Diff diari per veure canvis
0 3 * * * /usr/bin/snapraid diff >> /var/log/snapraid-diff.log 2>&1

Opció B: amb systemd (més robust)

Unitats d’exemple:

/etc/systemd/system/snapraid-sync.service[Unit]
Description=SnapRAID sync
[Service]
Type=oneshot
ExecStart=/usr/bin/snapraid sync
/etc/systemd/system/snapraid-sync.timer[Unit]
Description=Run SnapRAID sync nightly
[Timer]
OnCalendar=--* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
/etc/systemd/system/snapraid-scrub.service[Unit]
Description=SnapRAID scrub 12 percent
[Service]
Type=oneshot
ExecStart=/usr/bin/snapraid scrub -p 12
/etc/systemd/system/snapraid-scrub.timer[Unit]
Description=Run SnapRAID scrub weekly
[Timer]
OnCalendar=Sat 04:00
Persistent=true
[Install]
WantedBy=timers.target

Activa:

systemctl daemon-reload
systemctl enable --now snapraid-sync.timer snapraid-scrub.timer
systemctl list-timers | grep snapraid

🛡️ 6) Supervisió i salut de discos

Instal·la SMART:

apt install -y smartmontools

Proves SMART (exemple setmanal llarga):

smartctl -t long /dev/sdX
# Després de 3–5 h:
smartctl -a /dev/sdX

Monitoritza:

smartctl -H /dev/sdX

(Obtingues alertes via correu amb smartd si vols: /etc/smartd.conf.)


🧰 7) Bones pràctiques i “gotchas”

  • Discos de paritat: tan grans com el més gran de dades.
  • No guardis dades al mateix nivell que els fitxers de paritat (snapraid.parity): reserva carpetes exclusives si cal.
  • No desmuntis discos abans de fer snapraid -e fix si has mogut fitxers manualment.
  • No és temps real: fes sync després de canvis massius (o diàriament via cron/timer).
  • Scrub regular per detectar corrupció latent.
  • Backups externs per a dades crítiques (SnapRAID no substitueix còpies fora de línia / offsite).
  • 2,5″ HDD: revisa temps de spin-down i APM per evitar desgast excessiu (eina hdparm).
  • Permisos: si uses serveis (Samba, NFS, Plex), assegura propietaris/permisos a /mnt/pool.

🔁 8) Ampliar el pool (afegir un nou disc)

  1. Prepara i munta el nou disc (ex. /srv/data/disk11).
  2. Afegeix la ruta al fstab i munta.
  3. Afegeix-lo a mergerFS:
    • Edita l’entrada del pool a /etc/fstab afegint :/srv/data/disk11.
    • mount -a
  4. Afegeix-lo a SnapRAID:
    • Afegeix línia disk d9 /srv/data/disk11 a /etc/snapraid.conf.
  5. Executa: snapraid -e fix    # opcional si hi ha desajustossnapraid syncsnapraid scrub -p 5

Si el nou disc és més gran que els anteriors i supera el màxim de dades, amplia també la paritat amb un disc de paritat com a mínim igual de gran.


🧯 9) Recuperació davant d’un error

  • Disc de dades fallat:
    1. Substitueix físicament el disc.
    2. Formata’l i munta’l mateix camí (/srv/data/diskX).
    3. snapraid -e fix
    4. snapraid fix -d dX (on dX és el nom lògic del disc a snapraid.conf).
  • Disc de paritat fallat:
    1. Substitueix-lo.
    2. Reconfigura rutes si cal.
    3. snapraid sync per recalcular paritat.

📦 10) Compartició de fitxers (opcional)

Samba (Windows/macOS)

apt install -y samba

/etc/samba/smb.conf(fragment):[pool]
path = /mnt/pool
browseable = yes
   read only = no
   guest ok = no

Aplica:

systemctl restart smbd

✅ Resum executiu

  • mergerFS et dona un pool únic amb discos heterogenis.
  • SnapRAID aporta paritat programada (1–2 discos) i recuperació per fitxer.
  • Ideal per NAS multimèdia i arxius grans, no per bases de dades de molta IOPS.
  • Amb 10 discos barrejats, tindràs màxima capacitat útil i resiliència configurable.