Migrer ses données Synology vers un NAS Debian sans rien perdre

Migrer ses données Synology vers un NAS Debian sans rien perdre

·6 min de lecture·Mis à jour le 3 février 2026

Le point de départ

DSM est un excellent produit, mais ses limites finissent par peser : impossible d'installer un kernel custom, packages soumis au cycle de release Synology, et un vendor lock-in qui se renforce avec le temps. Debian rend le contrôle sur chaque couche et permet d'automatiser avec Ansible — encore faut-il récupérer les données existantes.

Ce qu'il y a sous le capot chez Synology

Bonne nouvelle : DSM repose sur des technos Linux standard.

  • mdadm pour le RAID logiciel (le « SHR » de Synology est du mdadm avec du RAID 5)
  • LVM pour les volumes logiques
  • Btrfs comme système de fichiers
  • eCryptFS pour le chiffrement des dossiers partagés

Mauvaise nouvelle : Synology a ajouté un flag custom à Btrfs, le flag caseless, qui autorise les noms de fichiers insensibles à la casse pour satisfaire SMB/Windows. Le kernel Linux vanilla ne le connaît pas.

Le patch Btrfs : support du caseless

Sans patch, le montage échoue :

BTRFS error: unrecognized feature flag: caseless

La solution est de compiler un module Btrfs patché qui reconnaît le flag. Un rôle Ansible btrfs_synology automatise les quatre étapes : installation des headers du kernel et des outils de build, récupération des sources kernel correspondant à la version en cours, application du patch ajoutant le support caseless, puis compilation du module btrfs.ko et installation via DKMS.

Le patch lui-même est minimal : quelques lignes pour déclarer le flag comme connu et le traiter en lecture seule. Créer de nouveaux fichiers caseless n'est pas nécessaire, seulement lire ceux qui existent. Une fois le module chargé, le kernel accepte les partitions Btrfs Synology.

Détection et montage du RAID

Synology utilise mdadm de façon standard, donc la détection est automatique :

# Scan des arrays RAID existants
mdadm --assemble --scan

# Vérification de l'état du RAID
mdadm --detail /dev/md2

Résultat typique pour un SHR (RAID 5) sur 4 disques :

/dev/md2:
        Version : 1.2
  Creation Time : Fri Mar 15 10:22:18 2024
     Raid Level : raid5
     Array Size : 5860270080 (5.46 TiB)
  Used Dev Size : 1953423360 (1.82 TiB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent
          State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0
            Layout : left-symmetric
        Chunk Size : 64K

Puis l'activation de LVM :

# Scan et activation des volume groups
vgscan
vgchange -ay

# Listing des volumes logiques
lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%
  lv   vg1  -wi-a----- 5.46t

Le volume logique /dev/vg1/lv contient le système de fichiers Btrfs, qu'on monte avec mount -t btrfs /dev/vg1/lv /mnt/data. Pour que tout remonte au boot :

# /etc/fstab - montage du RAID Synology
/dev/vg1/lv  /mnt/data  btrfs  defaults,noatime,autodefrag  0  0

Le rôle Ansible gère aussi l'assemblage automatique via /etc/mdadm/mdadm.conf.

eCryptFS : déchiffrer les dossiers chiffrés

Si le chiffrement était activé sur les dossiers partagés Synology, chaque dossier chiffré est un répertoire @eaDir avec des fichiers eCryptFS en dessous :

# Montage de la couche eCryptFS
mount -t ecryptfs /mnt/data/@Famille /mnt/data/Famille \
  -o ecryptfs_cipher=aes,ecryptfs_key_bytes=32,\
ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=no

Le système demande la passphrase définie dans DSM. Un rôle Ansible ecryptfs_synology automatise ça : passphrase stockée dans un fichier sécurisé (permissions 600, root owner), montage automatique des dossiers chiffrés au boot via un script systemd, et support de plusieurs dossiers avec des passphrases différentes.

Samba : recréer les partages

En reprenant les mêmes noms de partage que sur le Synology, les clients Windows/Mac ne voient aucune différence :

# /etc/samba/smb.conf (extrait)
[Famille]
    path = /mnt/data/Famille
    valid users = @famille
    read only = no
    create mask = 0664
    directory mask = 0775

[Images]
    path = /mnt/data/Images
    valid users = @famille
    read only = no

[Musiques]
    path = /mnt/data/Musiques
    valid users = @famille
    read only = no

[Vidéos]
    path = /mnt/data/Vidéos
    valid users = @famille
    read only = no

À côté des données migrées, on crée les répertoires des nouveaux services :

# Répertoires pour les applications Docker
mkdir -p /mnt/data/apps
mkdir -p /mnt/data/media/{movies,tv,music}
mkdir -p /mnt/data/downloads/{complete,incomplete}
mkdir -p /mnt/data/photos

chown -R nasadmin:nasadmin /mnt/data/apps /mnt/data/media /mnt/data/downloads /mnt/data/photos

Attention : les subvolumes Btrfs

Btrfs organise les données en subvolumes, et Synology en crée un par dossier partagé. Le piège : déplacer un fichier d'un subvolume à l'autre n'est pas un rename mais une copie complète suivie d'une suppression. Sur des fichiers de plusieurs Go, c'est très long et ça double temporairement l'espace consommé.

# Lister les subvolumes
btrfs subvolume list /mnt/data

Pour déplacer de gros fichiers entre partages, rsync vaut donc mieux que mv : barre de progression et reprise possible après interruption.

Swap file sur Btrfs

Créer un fichier swap sur Btrfs impose de désactiver le copy-on-write, sinon le kernel refuse :

# Création du swap file
truncate -s 0 /mnt/data/swapfile
chattr +C /mnt/data/swapfile
fallocate -l 4G /mnt/data/swapfile
chmod 600 /mnt/data/swapfile
mkswap /mnt/data/swapfile
swapon /mnt/data/swapfile

# Entrée fstab
# /mnt/data/swapfile  none  swap  sw  0  0

Le chattr +C doit venir avant l'allocation.

Scrub mensuel pour l'intégrité

Le mécanisme scrub de Btrfs vérifie l'intégrité de toutes les données via les checksums :

# /etc/systemd/system/btrfs-scrub.timer
[Unit]
Description=Monthly Btrfs scrub on /mnt/data

[Timer]
OnCalendar=monthly
Persistent=true
RandomizedDelaySec=3600

[Install]
WantedBy=timers.target
# /etc/systemd/system/btrfs-scrub.service
[Unit]
Description=Btrfs scrub /mnt/data

[Service]
Type=oneshot
ExecStart=/usr/bin/btrfs scrub start -B /mnt/data
Nice=19
IOSchedulingClass=idle

Nice=19 et IOSchedulingClass=idle garantissent que le scrub ne perturbe pas l'usage courant.

Bilan

La migration de Synology vers Debian est faisable, chiffrement compris. L'obstacle principal reste le flag Btrfs caseless : une fois le kernel patché, le reste suit naturellement. mdadm, LVM, Btrfs et eCryptFS sont des outils Linux standard que Synology a assemblés derrière une interface web — les manipuler directement rend le contrôle et la flexibilité, sans perdre un octet.

PartagerLinkedInXBluesky

Articles similaires