Comme premier article, je vais aborder le problème auquel j’ai été confronté récemment après avoir mis en place ma petite infrastructure que je présenterai éventuellement dans un prochain billet.
Je possède un contrôleur de domaine fonctionnant sous Windows Server 2012 R2, le seul de la forêt. Je possède un autre serveur 2012 R2, qui va recevoir sur un disque virtuel dédié les fichiers de sauvegarde des autres serveurs Windows ainsi que les fichiers des quelques scripts de sauvegardes de mes machines Linux.
Je veux donc concentrer sur ce serveur les sauvegardes Windows Server afin de pouvoir les sauvegarder en ligne plus facilement par la suite.
Sur mon contrôleur de domaine, j’installe donc la fonctionnalité Windows Server, et tente d’exécuter une première sauvegarde. Pour des raisons de performances disques (disques mécaniques en SATA3) et vu le peu de criticité, je ne souhaite pas effectuer de sauvegarde planifiée mais des sauvegardes uniques que je réaliserai de temps en temps. Je choisis donc de sauvegarder le serveur complet.
Je précise l’emplacement réseau du lecteur de sauvegarde, et je lance l’opération. Quelques minutes plus tard, la sauvegarde rentre en erreur au moment de sauvegarder le disque C:.
Dans les logs, rien de bien transcendant : c:\windows\logs\WindowsImageBackup
J’essaye donc de sauvegarder un autre serveur exactement de la même manière et avec le même compte de sauvegarde (un compte de service qui est le seul à avoir les droits complets sur le dossier du partage réseau, et qui est membre du groupe Opérateurs de Sauvegarde). Cela fonctionne, cela signifie que ce n’est pas le partage réseau qui pose problème.
Autre piste suggérée : la taille des secteurs n’est pas la même. En regardant sur les deux machines grâce à msinfo32.exe, je vois qu’ils font bien la même taille de 512 K.
Je tente un sfc /scannow sur le contrôleur de domaine afin de vérifier l’état des fichiers système, même si le serveur a été installé il y a moins de 48 heures. Pas d’erreur décelée. Je monte un second disque virtuel afin d’effectuer une sauvegarde en local, toujours impossible, le problème semble donc venir de l’accès au C:.
Finalement, je décide alors de boycotter l’interface graphique de wbadmin ainsi que l’utilisation en ligne de commande qui ne donne pas plus de résultats, même avec un lancement en tant qu’administrateur du domaine. Je recherche rapidement sur le web comment utiliser PowerShell pour se substituer au cmd et tombe sur un script fourni sur une plateforme Microsoft.
Etant donné que je n’ai pas besoin de toute la partie envoi de mail ni suivi du nombre de sauvegarde, je l’ai quelque peu simplifié.
Add-PsSnapin Windows.ServerBackup
$Server = « \\serveur »
$Folder = ($Server+ »\dossier »)
$WBPolicy = New-WBPolicy
Add-WBBareMetalRecovery -Policy $WBPolicy | Out-Null
$BackupLocation = New-WBBackupTarget -network ($Folder)
Add-WBBackupTarget -Policy $WBPolicy -Target $BackupLocation -force | Out-Null
$WBPolicy | Out-Null
Start-WBBackup -Policy $WBPolicy
On spécifie donc un serveur de sauvegarde, un répertoire accessible, on spécifie les paramètres souhaités dans la policy, et on exécute.
Via PowerShell, la sauvegarde s’est bien déroulée, il ne me restera plus qu’à appeler ce script lorsque je souhaiterai réaliser une sauvegarde. A noter que le script d’origine permet de sauvegarder également les autres volumes du systèmes qui sont non critiques (non swap, non système), mais n’ayant qu’un volume sur ce DC, l’option ne me concerne pas. Vous pouvez trouver le script d’origine en suivant ce lien. Apparemment la fonctionnalité WBBackup de PowerShell est conseillée par rapport au wbadmin. Question d’habitudes, j’utilisais toujours wbadmin avant.
Il ne me reste plus qu’à uploader sur mon ftp la sauvegarde pour être tranquille, et la faire redescendre sur ma station de travail au cas où.
Vous pouvez récupérer le script présent dans ce billet en le téléchargeant sur mon miroir de fichiers.