L’alternative du passthrough des disques vers le contrôleur complet
Le passthrough disque-par-disque présenté dans le tuto initial fonctionne bien, mais présente une limitation importante : la veille des disques durs ne fonctionne pas.
Le contrôleur virtuel virtio-scsi (pvscsi) utilisé par Proxmox pour présenter les disques à la VM ne transmet pas les commandes ATA natives (comme STANDBY IMMEDIATE), ce qui empêche DSM d’envoyer l’ordre de mise en veille aux disques physiques. Résultat : vos disques tournent en permanence, peu importe les réglages de veille configurés dans DSM.
La solution est de passer en passthrough du contrôleur SATA/AHCI physique entier, ce qui présente le contrôleur directement à la VM — avec toutes ses fonctionnalités, y compris les commandes ATA natives, SMART complet, et donc la veille.
Attention toutefois : cela signifie que les disques ne seront plus disponibles pour les autres VM du serveur Proxmox
Prérequis : vérifier que le contrôleur est isolable
Commencez par identifier votre contrôleur SATA et vérifier qu’il est bien dans un groupe IOMMU séparé (condition nécessaire pour le passthrough PCIe) :
# Identifier le contrôleur SATA
lspci | grep -i sata
# Vérifier son groupe IOMMU (il doit être seul dans son groupe)
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
lspci -nns "${d##*/}"
done | grep -i sata
Si le contrôleur partage son groupe IOMMU avec d’autres composants critiques (GPU, NIC principal…), cette méthode n’est pas applicable sur votre matériel.
Activer le module vfio et blacklister le pilote ahci
Ajoutez les modules nécessaires au chargement du kernel Proxmox :
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
Puis blacklistez le pilote ahci pour que Proxmox ne prenne plus la main sur ce contrôleur, et assignez-le à vfio-pci à la place. Récupérez d’abord l’identifiant PCI exact de votre contrôleur (par exemple 0000:00:17.0 et le couple vendor:device comme 8086:43d2) :
lspci -n | grep -i sata
Créez ensuite les deux fichiers de configuration :
# Blacklister ahci
echo "blacklist ahci" > /etc/modprobe.d/blacklist-ahci.conf
# Assigner le contrôleur à vfio-pci (remplacez 8086:43d2 par vos valeurs)
echo "options vfio-pci ids=8086:43d2" > /etc/modprobe.d/vfio.conf
Mettez à jour l’initramfs et redémarrez l’hôte :
update-initramfs -u -k all
reboot
Après redémarrage, vérifiez que vfio a bien pris la main sur le contrôleur :
lspci -k -s 00:17.0
# Le pilote en cours doit être "vfio-pci", pas "ahci"
Ajouter le contrôleur à la VM
Dans l’interface Proxmox, ouvrez la configuration de votre VM Xpenology (VM 101) → Matériel → Ajouter → Périphérique PCI → sélectionnez votre contrôleur SATA dans la liste. Cochez All Functions et si disponible PCI-Express.
Ou en ligne de commande :
qm set 101 -hostpci0 0000:00:17.0,pcie=1
Configuration du loader Arc : AhciRemap
Avec le contrôleur physique présenté à la VM, les disques apparaissent avec des numéros de port qui peuvent ne pas correspondre à ce qu’Xpenology attend. Le loader Arc gère cela nativement via la fonctionnalité AhciRemap, accessible depuis son menu de configuration (mode Arc Config Mode au démarrage).
La valeur de remap est à construire selon la position physique de vos disques dans le contrôleur. Par exemple pour 4 disques sur les ports SATA 0, 1, 8, 9 à remappe vers les slots DSM 0 à 3 :
ahci_remap: 0>6:1>0:8>1:9>2:10>3:11>4
La syntaxe est port_physique>slot_DSM, séparé par des :. Adaptez selon votre câblage physique — Arc vous proposera d’ailleurs une valeur automatique si vous laissez le champ vide au premier boot, que vous pourrez ensuite affiner.
Vérifier que le SMART et la veille fonctionnent
Une fois DSM démarré avec le contrôleur en passthrough, confirmez que les commandes ATA natives passent bien :
# Sur la VM NickFury (SSH root)
sudo smartctl -d ata /dev/sda
# Le SMART doit retourner des données complètes, pas une erreur "unsupported"
# Vérifier l'état de veille d'un disque
sudo hdparm -C /dev/sdb
# Doit afficher "standby" après la période d'inactivité configurée dans DSM
Si smartctl retourne des données et que hdparm -C bascule bien en standby après inactivité, la mise en veille est pleinement fonctionnelle — ce que le passthrough disque-par-disque ne permettait pas.
Rollback si nécessaire
Pour revenir au passthrough disque-par-disque :
# Sur l'hôte Proxmox
rm /etc/modprobe.d/vfio.conf
rm /etc/modprobe.d/blacklist-ahci.conf
update-initramfs -u -k all
# Retirer le hostpci de la VM
qm set 101 -delete hostpci0
# Réajouter les disques un par un par leur ID
qm set 101 -scsi2 /dev/disk/by-id/ata-WDC_WD161KFGX-68AFPN0_4ZH16PPV
# etc.
reboot
Une Réponse Xpenology sur Proxmox – Passthrough du contrôleur SATA / AHCI
Synology – Créer un dossier partagé sur un disque externe
Déployer Xpenology sur Proxmox (et ajouter les disques en passthrough)
Utiliser Whisper pour la reconnaissance vocale de Home Assistant
Installer Vaultwarden sur Synology (DSM7) via Docker
Utiliser Whisper pour la reconnaissance vocale de Home Assistant
Xpenology sur Proxmox – Passthrough du contrôleur SATA / AHCI
Réinitialiser le mot de passe admin de SnappyMail (fork de Rainloop)
Installer Restreamer sur son Synology