
Migrer ses données Synology vers un NAS Debian sans rien perdre
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.
Articles similaires