🎯 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=50Gevita 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 fixsi 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)
- Prepara i munta el nou disc (ex.
/srv/data/disk11). - Afegeix la ruta al
fstabi munta. - Afegeix-lo a
mergerFS:- Edita l’entrada del pool a
/etc/fstabafegint:/srv/data/disk11. mount -a
- Edita l’entrada del pool a
- Afegeix-lo a SnapRAID:
- Afegeix línia
disk d9 /srv/data/disk11a/etc/snapraid.conf.
- Afegeix línia
- 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:
- Substitueix físicament el disc.
- Formata’l i munta’l mateix camí (
/srv/data/diskX). snapraid -e fixsnapraid fix -d dX(ondXés el nom lògic del disc asnapraid.conf).
- Disc de paritat fallat:
- Substitueix-lo.
- Reconfigura rutes si cal.
snapraid syncper 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.