Ce guide explique comment empêcher Linux de couper l’alimentation de vos ports USB ou de mettre vos disques durs externes en veille profonde, ce qui provoque souvent des erreurs de type Input/Output (I/O) error.
Par défaut, Linux utilise une fonction appelée USB Autosuspend pour économiser l’énergie. Si un disque USB n’est pas sollicité pendant quelques secondes, le système réduit sa tension ou coupe le port.
Pourquoi est-ce un problème pour un serveur ?
Avant de modifier quoi que ce soit, vérifiez la valeur actuelle du délai d’autosuspend (exprimée en secondes) :
cat /sys/module/usbcore/parameters/autosuspend
💡 Interprétation :
- 2 (ou plus) : l’autosuspend est actif (réglage par défaut).
- -1 : l’autosuspend est désactivé (réglage cible).
Pour tester la stabilité tout de suite, forcez la valeur à -1 en mémoire vive :
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend
Pour que ce réglage survive à un redémarrage, il faut modifier les paramètres de démarrage du noyau.
sudo nano /etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT.usbcore.autosuspend=-1 à l’intérieur des guillemets.GRUB_CMDLINE_LINUX_DEFAULT="quiet usbcore.autosuspend=-1"Ctrl+O, Entrée) et quittez (Ctrl+X).sudo update-grubCertains boîtiers USB ont leur propre micro-logiciel (firmware) qui force la mise en veille malgré les réglages de Linux. Pour contrer cela, on crée une activité artificielle très légère.
Ajoutez une tâche planifiée dans la crontab de l’utilisateur root :
sudo crontab -e
Ajoutez cette ligne tout en bas :
# Empêcher la mise en veille physique du disque USB toutes les 15 min
*/15 * * * * ls /media/VOTRE_UTILISATEUR/NOM_DU_DISQUE > /dev/null 2>&1