Linux / Systèmes

📚 Stockage Backup LVM RAID ZFS rsync Sauvegarde Linux

LVM, RAID mdadm, ZFS, rsync — gérer les volumes, assurer la redondance et mettre en place une stratégie de sauvegarde 3-2-1.

LVMRAID mdadmZFSrsyncSauvegarde 3-2-1Snapshots

LVM — Gestion des volumes logiques

LVM ajoute une couche d'abstraction entre les disques physiques et les systèmes de fichiers. Les 3 niveaux : PV (Physical Volume) → VG (Volume Group) → LV (Logical Volume).

lvm-commands.sh
# === CRÉATION ===

# 1. Initialiser les disques en PV
pvcreate /dev/sdb /dev/sdc
pvdisplay

# 2. Créer un groupe de volumes
vgcreate vg_data /dev/sdb /dev/sdc
vgdisplay vg_data

# 3. Créer un volume logique (50G)
lvcreate -L 50G -n lv_www vg_data
mkfs.ext4 /dev/vg_data/lv_www
mount /dev/vg_data/lv_www /var/www

# Ajouter au fstab pour montage automatique
echo "/dev/vg_data/lv_www  /var/www  ext4  defaults  0  2" >> /etc/fstab

# === EXTENSION ===

# Étendre un LV de 20G supplémentaires (online)
lvextend -L +20G /dev/vg_data/lv_www
resize2fs /dev/vg_data/lv_www      # ext4
xfs_growfs /var/www                 # xfs

# === SNAPSHOT (avant une mise à jour risquée) ===
lvcreate -L 5G -s -n snap_www_avant_maj /dev/vg_data/lv_www

# Restaurer un snapshot
umount /var/www
lvconvert --merge /dev/vg_data/snap_www_avant_maj

# === COMMANDES UTILES ===
lvs          # Lister les LV
vgs          # Lister les VG
pvs          # Lister les PV
lsblk        <span class="cm"># Vue arborescente des blocs

RAID Linux — mdadm

Niveau RAIDDisques minTolérance pannesPerformanceUsage typique
RAID 020 (aucune)Lecture/écriture maxScratch disk, performances pures
RAID 121 disqueLecture amélioréeOS, données critiques
RAID 531 disqueBon équilibreServeurs fichiers, NAS
RAID 642 disquesLecture bonneDonnées très critiques
RAID 1041 par miroirExcellentBases de données
mdadm-commands.sh
# Créer un RAID 1 (miroir) sur 2 disques
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# Créer un RAID 5 sur 3 disques
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

# Suivre la synchronisation initiale
watch -n2 cat /proc/mdstat

# Détails de l'array
mdadm --detail /dev/md0

# Sauvegarder la configuration
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u

# Simuler une panne de disque
mdadm --manage /dev/md0 --fail /dev/sdb

# Remplacer par un nouveau disque
mdadm --manage /dev/md0 --remove /dev/sdb
mdadm --manage /dev/md0 --add /dev/sde

# Surveiller l'état (alerte email)
echo "MAILADDR admin@entreprise.local" >> /etc/mdadm/mdadm.conf
mdadm --monitor --scan --daemonise

Stratégie de sauvegarde 3-2-1

Règle 3-2-1 : 3 copies des données · sur 2 supports différents · dont 1 hors site (cloud, bande, NAS distant, site DR).
backup-321.sh
#!/bin/bash
set -euo pipefail
SRC="/etc /var/www /var/lib/mysql /home"
LOCAL="/backup/local"
REMOTE_HOST="backup-offsite"
REMOTE_PATH="/backup/$(hostname)"
DATE=$(date +%Y%m%d_%H%M)
LOG="/var/log/backup.log"

log() {{ echo "[$(date)] $*" | tee -a $LOG; }}

log "=== Démarrage sauvegarde $DATE ==="

# 1. Backup local incrémental avec hardlinks (économise l'espace)
log "Copie locale vers $LOCAL/$DATE"
rsync -az --link-dest="$LOCAL/latest" $SRC "$LOCAL/$DATE/" 2>>$LOG
ln -snf "$LOCAL/$DATE" "$LOCAL/latest"

# 2. Sync vers site distant (hors-site = règle 3-2-1)
log "Sync vers $REMOTE_HOST"
rsync -az -e "ssh -i /root/.ssh/backup_key -o StrictHostKeyChecking=no" \
  "$LOCAL/$DATE/" "$REMOTE_HOST:$REMOTE_PATH/$DATE/" 2>>$LOG

# 3. Purger les sauvegardes locales > 30 jours
find "$LOCAL" -maxdepth 1 -name "20*" -mtime +30 -exec rm -rf {{}} \; 2>>$LOG

# 4. Vérifier l'espace disque restant
USED=$(df -h $LOCAL | awk 'NR==2 {{print $5}}')
log "Espace utilisé sur $LOCAL : $USED"
log "=== Sauvegarde $DATE terminée ==="

<span class="cm"># Cron : 0 2 * * * root /usr/local/bin/backup-321.sh

ZFS — Système de fichiers avancé

zfs-commands.sh
# Installation (Debian/Ubuntu)
apt install -y zfsutils-linux

# Créer un pool en miroir (RAID 1)
zpool create datapool mirror /dev/sdb /dev/sdc

# Créer un pool RAID-Z (similaire RAID 5)
zpool create datapool raidz /dev/sdb /dev/sdc /dev/sdd

# Créer des datasets (sous-volumes)
zfs create datapool/www
zfs create datapool/databases
zfs create datapool/backups

# Activer la compression
zfs set compression=lz4 datapool

# Snapshot instantané
zfs snapshot datapool/www@avant-maj
zfs list -t snapshot

# Restaurer un snapshot
zfs rollback datapool/www@avant-maj

# Envoyer un snapshot vers un autre hôte
zfs send datapool/www@avant-maj | ssh backup-srv "zfs receive pool2/www"

# État du pool
zpool status
zpool iostat -v 2
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google