Nettoyer son serveur WSUS
Ce chapitre aborde le nettoyage d’un serveur WSUS dans le but d’alléger la base de données, mais aussi de libérer de l’espace disque. Il s’agit d’un problème fréquent rencontré par les administrateurs de serveurs WSUS.
Avec le temps, le serveur WSUS va devenir de plus en plus gourmand en espace disque et cela sera d’autant plus problématique si vous n’effectuez pas de nettoyage. Vous allez me dire en quoi consiste le nettoyage d’un serveur WSUS ? Et bien, il consiste à supprimer les fichiers correspondants aux mises à jour obsolètes, aux mises à jour refusées ou aux mises à jour remplacées. Ces données prennent de la place sur le disque malgré qu’elles soient inutiles.
WSUS intègre des options de nettoyage natives, mais nous verrons également comment utiliser PowerShell pour réaliser ce nettoyage, et éventuellement, le planifier.
I. Nettoyage avec la console WSUS
Commençons par découvrir les différentes options de nettoyage proposées par la console WSUS. Par défaut, un serveur WSUS va télécharger seulement les mises à jour approuvées, c’est ce que nous allons vérifier dans un premier temps.
Au sein de la console WSUS, cliquez sur « Options » sur la gauche puis sur « Fichiers et langues des mises à jour ».
Une fenêtre va s'ouvrir, l'option « Stocker les fichiers des mises à jour localement sur ce serveur » doit être cochée, ainsi que la sous-option « Télécharger les fichiers de mise à jour sur ce serveur uniquement lorsque les mises à jour sont approuvées ». Si ce n'est pas le cas, je vous recommande de cocher cette option.
Ensuite, il y a l'Assistant de nettoyage intégré à WSUS. Toujours au sein de la partie « Options », on peut y accéder en cliquant sur « Assistant de nettoyage du serveur ». Différentes options sont proposées pour effectuer ce nettoyage et espérer libérer de l'espace disque. Deux options peuvent potentiellement libérer de l'espace disque : « Fichiers de mise à jour inutiles » et « Mises à jour et révisions de mises à jour inutilisées ».
Lorsque vous exécutez une action de nettoyage, votre serveur WSUS plante et affiche le message « Réinitialiser le nœud du serveur » ? Vous devez augmenter la mémoire allouée au site dans IIS :
1 - Ouvrez le Gestionnaire IIS. Sur la gauche, déroulez jusqu'à « Pools d'applications » puis effectuez un clic droit sur « WsusPool » puis « Paramètres avancés ».
2 - Descendez jusqu'à la section « Recyclage » jusqu'à trouver l'option « Limite de la mémoire privée (Ko) » qui par défaut est définie sur la valeur 1 258 015 Ko soit environ 1,2 Go de mémoire. Il est nécessaire d'augmenter cette valeur ou alors de la définir sur « 0 » pour que ce soit illimité.
3 - Pour être sûr d'appliquer la nouvelle valeur, redémarrez le pool d'applications, ensuite c'est terminé !
Revenons au nettoyage en lui-même. Par expérience, on constate bien souvent que le nettoyage intégré à WSUS n'est pas suffisamment efficace. L’alternative consiste à s’orienter vers des scripts PowerShell.
II. Nettoyage avec des scripts PowerShell
Les scripts PowerShell sont plus efficaces que la console WSUS pour effectuer un nettoyage régulier et quand il y a énormément de données à nettoyer. Le script PowerShell peut être exécuté à intervalle régulier via une tâche planifiée sur le serveur WSUS afin d’automatiser la maintenance.
Sur Internet, il existe de nombreux scripts PowerShell permettant d’effectuer le nettoyage d’un serveur WSUS. Une recherche sur Github.com suffit pour s’en convaincre.
Sur son site, Microsoft a mis en ligne un script de nettoyage pour supprimer les mises à jour obsolètes. Il est accessible à cette adresse :
Sur le site PowerShell Gallery, le script « Wsus-Maintenance » développé par Mike Galvin est disponible en téléchargement, avec un code source sur Github. Ce script s’appuie sur la commande PowerShell « Invoke-WsusServerCleanup » pour réaliser le nettoyage et il intègre une fonctionnalité de reporting par e-mail. Il est mis à jour régulièrement par son auteur et fonctionne sur les dernières versions de Windows Server, notamment Windows Server 2022. Je vous recommande ce script.
Voici un exemple pour exécuter ce script :
Wsus-Maintenance.ps1 -Run -WsusSsl -Port 8531 -Server srv-wsus.it-connect.local
Ce qui donne une sortie sous cette forme :
Sinon, il y a le script « wsus-cleanup-updates-v4.ps1 » qui a une bonne réputation et que vous pouvez télécharger sur mon Github (je l’héberge simplement, il n’est pas de moi).
Prenons l’exemple de ce second script, qu’il suffit d’appeler pour déclencher un nettoyage :
.\wsus-cleanup-updates-v4.ps1
Ce script va réaliser un nettoyage WSUS afin de supprimer les mises à jour expirées, remplacées, obsolètes, et les ordinateurs inactifs. Pour éviter de surcharger le serveur, les mises à jour sont supprimées une par une.
Dans le cas où le nettoyage ne suffit pas pour récupérer suffisamment d’espace disque ou pour alléger votre serveur WSUS, vous pouvez reconstruire la base « SUSDB » de WSUS (dans WID, par exemple), mais cela implique de repartir de zéro.
La procédure est détaillée dans cette documentation : WSUS - Recréer la base SUSDB sur WID et les données WSUS