Magic SysRq : la béquille du sysadmin
Un serveur est figé. Plus de SSH, pas de console, pas de réponse au ping. Vous êtes en datacenter ou en SSH série et la seule option avant de tirer la prise est la touche SysRq.
Ce que c’est
La touche SysRq (System Request) est interceptée directement par le kernel Linux, indépendamment de l’état du système. Le serveur peut être en kernel panic, le scheduler peut être bloqué: le kernel répond à SysRq tant que les interruptions matérielles fonctionnent. C’est la béquille d’urgence.
La combinaison physique: Alt + SysRq + <touche> (SysRq est la touche Imprime écran sur la plupart des claviers). Sur une console série (le vrai réflexe en datacenter), c’est une séquence d’échappement dépendante du matériel.
La séquence REISUB
Le mnémonique qui survit à tout: REISUB, lu à l’envers dans les langues latines (Busier, Busy reversed), donne l’ordre d’extinction propre:
- R -
Raw(take back the keyboard from X or whatever grabbed it) - E -
tErminate(SIGTERM à tous les processus sauf init) - I -
kIll(SIGKILL à tous les processus restants) - S -
Sync(flush des buffers disque) - U -
UnmounT(remontage des filesystems en read-only) - B -
reBoot(reboot immédiat)
Sans SysRq, la séquence est: tirer la prise et espérer que le filesystem survive au fsck du prochain boot. Avec SysRq, le S et le U garantissent que le disque est propre avant le B. C’est la différence entre un fsck de 4 secondes et un fsck de 4 heures sur un volume de 2 To.
L’activation
Sur les distributions récentes, SysRq est limité ou désactivé par défaut. Pour l’activer complètement:
echo 1 > /proc/sys/kernel/sysrq
La valeur est un masque binaire: 1 = tout autorisé, 4 = klog safe, 16 = sync, 32 = remount, 64 = signalling, 128 = reboot/poweroff, 256 = nicing. Le 1 active tout.
Ce que ça sert en vrai
Deux situations que j’ai rencontrées cette année:
- Le serveur répond au ping mais plus au SSH. Le scheduler est saturé par un process qui a mangé tous les fd. Alt+SysRq+E (SIGTERM) et les process meurent, le serveur reprend le SSH. Pas de reboot nécessaire.
- Le serveur est complètement figé après une OOM. Alt+SysRq+S,U,B: sync, remount, reboot propre. Le fsck du boot suivant prend 4 secondes au lieu de 4 heures.
Avant de tirer la prise
SysRq n’est pas un outil de gestion, c’est une béquille de dernier recours. La documentation kernel dit “crash recovery”. C’est exactement ça: vous êtes en train de récupérer un crash et la séquence REISUB est la seule chose entre vous et la prise.