Thanat0S Lair

REDO de ESX... v0.1

alias la RECUPERATION EFFICACE DES (bourdes) OPERATEUR...

Je dédié cet article à mon estimé collègue le Niol. En espérant que celui ci ne le mutile pas mentalement plus qu'il ne l'est...




Si vous les aviez raté, allez aussi lire les articles sur la RAM et ESX en général sur thanatos.trollprod.org

INTRO


Bon ok ok, de janvier à mars, je n'ai pas pondu le moindre article et je vous sens impatients... la raison est simple j'ai déménagé, donc estimez vous déjà heureux de ne pas vous taper un article sur la pose de papier peint où le montage d'un placard en kit c'est déjà ça...

Ce mois ci, ouais bon ok il a été posté border line pour ce mois ci (j'entend déja les remarques désagréables).. MAIS c'est toujours ce mois ci...bref ce mois ci, toujours de l'informatique... et on va donc se dépêcher d'apprendre a fond les possibilités du REDO donné à Vmware ESX... Dépêchons nous avant que ESX V3.0 ne sorte et que l'on se retrouve comme des cons avec notre vieux REDO.

Au passage remercions tous, Mr PC (je vous jure c'est ses vrai initiales), IT dévoué dans une grande société d'assurance dont nous tairons le nom, de m'avoir fournis un joli Proliant 6500 (qui n'a plus d'age) permettant ainsi a votre humble serviteur d'avoir enfin son ESX à lui, chez lui.  Cela dis, P, s'il te reste toujours cette fameuse baie de disques, je suis toujours preneur.

Soit..Une fois de plus la lecture de cet article va pas être facile, figurez vous que pour une obscure raison de hardware fatigué je n'ai pas accès à de la musique dans ma nouvelle salle machine.. je ne sais donc pas vous conseiller le moindre entremet a soumettre a vos tympans... en.. coté gniole par contre tout va bien... il me reste UNE et UNE seule Chimay Bleu.. déja évoquée certes, mais une valeur sur... à votre santé et allons y enfin....

Reprenons les Bases

Qu'est ce qu'un REDO


Prenons un PC standard.. oui, lui votre bon vieux PC avec lequel vous liser ce triste article... toutes vos data sont posée sur votre disque dur... c'est votre Windows (ouais ca pourrais aussi etre votre pinguin) qui utilise un Système de Fichier genre le NTFS et c'est ce même Windows qui contient aussi le driver de ce même disque qui au final pose consciencieusement vos petit fichier en des endroit bien précis de ce disque... premier postulat, le PC, sait juste que vous changer des Bits sur le disque Dur, c'est tout, il ignore tout le process... transposons ceci a Vmware... je rappelle que le disque dur n'est pour le serveur ESX, qu'un énorme fichier à l'extension DSK ou VMDK posé dans une partition VMFS2 et c'est donc dans ce fichier des bits sont changés...

Maintenant le REDO c'est quoi, le REDO c'est pouvoir revenir à l'état des ces fameux bits a l'instant T. comment ca marche, facile.. un fichier avec l'extension .REDO est généré, dès qu'on change un bit  ce bit n'est pas changé dans le disque dur ( le gros fichier DSK ou VMDK ) mais il est noté dans le fichier redo, «à tel secteur j'ai changé la valeur de tel bit»... facile n'est ce pas...

On arrive donc a notre premier constat... en lecture il va falloir regarder dans le redo si on a déjà ce bit, si non... le lire dans le vrai disque, et en écriture on s'un fous il suffit de noter tout cela dans le redo...

On a donc deux options avec notre REDO...

Soit on enlève ce fichier REDO, et notre disque dur revient à la position qu'il avait avant qu'on le mette en place... comme par magie...

Soit on Fusionne ce REDO avec le disque existant et conserver alors ces modifications AD Vitam.

Le Redo dans le Clickodrôme

pour ceux qui ont pas encore lu tout cet article, pour l'instant la seul approche du REDO que vous avez c'est via la configuration disque et c'est par disques que cela se configure... premièrement il faut avoir la Machine Virtuelle éteinte et là quand on va chipoter la configuration disque via Virtual Center ou le Mui, on tombe sur 4 possibilités...

redo in Clickodrome

PERSISTENT: Facile c'est un disque dur normal sans REDO ça devrait pas trop poser de problèmes de compréhension vus que ça ne change rien à rien

A partir de la, il reste 3 Autre mode qui on tendance à perturber Mr Niol, déjà pour clarifier la situation, sachez que ESX va inter-agir avec ces modes principalement au Power OFF et eventuellement au Power ON de la dite virtual Machine, entre dehors de cela il ne vous embetteras pas, vous pouvez rebooter autant de fois que cela vous fait plaisir. Attention rebooter pas faire reset.. un reset sous vmware c'est un POWER off/on. Alors les petits modes sont ... alors dans la catégorie REDO sont nominés cette année.....

NON PERSISTANT: Comme son nom l'indique (enfin juste pour ceux qui ont de solides bases en anglais) Le REDO quand on fait power Off est simplement et automatiquement supprimé... chaque modification au niveau disque ne subsiste pas au power off... c'est l'idéal pour se faire un serveur de TEST ou de Démo qui a chaque power off reprend sont état initial.

UNDOABLE: Ici aussi une vaste connaissance de l'anglais nous permet de comprendre que le fait de choisir ce mode nous ouvrira au Power OFF trois possibilités... détaillons les précisément car c'est ici que Mr Niol dans 95% des cas fait le contraire de ce qu'il pense faire.. on a donc trois possibilité offerte a chaque power de la machine virtuelle

Soyons pratique, prenons le cas concret suivant, j'ai une VM sous Windows avec Internet Explorer 6, je la met en UNDOABLE et ensuite j'installe Internet Explorer 7 Beta. On est tous bien d'accord que le disque de la VM (le gros VMDK) Contient IE6 et que dans le REDO j'ai le delta entre mon HD de base et ce qu'il faut comme bits dissméminés sur le disque pour avoir IE7

Dès que je vais éteindre la machine virtuelle, je vais tomber sur une boi-boite à 3 boutons...Mr NIOL soyez attentif c'est là qu'on y vient :

Redo Question

3 boutons et il se plante a chaque coups... soit allons y.... si vous cliquer sur :

Commit: Il va fusionner le REDO avec votre disque dur... vos modification entre le power on et power off seront donc inscrite dans le disque dur réel et c'est indélébile. Et au power on  recommence un nouveau fichier de REDO tout frais.

Discard: on dégage le REDO sans le fusioner avec le disque dur. Donc les modification entre le power on et power off disparaiterons comme par magie et ce sera comme si vous n'avier rien fait depuis le dernier power on. Hop exit IE7. Comme sont pote le bouton commit, au Power on  recommence un nouveau fichier de REDO tout frais.

Keep: c'est l'option de la raison ou plutôt du mec pas sur... disons que ca ne fait rien au power off, aucune fusion ou suppression..au prochain power on continuera sur le même fichier de redo.

Hein que c'est simple.... et oui... je vous l'avait dis que mon estimé collègue est mentalement mutilé...enfin... on vis avec... reste donc le dernier mode disponible dans le menu général, le mode append...

APPEND:  et bien c'est comme si la réponse keep expliquée ci dessus était automatiquement cliqué a chaque power off... ca ne fait rien au power off, aucune fusion ou suppression..au prochain power ca continuera sur le même fichier de redo.

Je passe pour un Warrior.. le REDO à la main

Bon ca c'est déjà pas mal...mais je vous sens déjà trépignant d'impatience, vous fideles warriors de la command line... comment que je peut fourrer un REDO via le shell de la console ESX.... haaaa j'ai même mieux pour vous mes fideles lecteurs... Non seulement on va voir comment mettre en place un REDO, mais en plus sachez que contrairement à la selection du mode disque avec le MUI ou virtual Center... en ligne de commande on peut mettre en place un REDO sur un disque à chaud... sans jouer avec le power de la bécanne.. en plein milieu du travail de la VM. Génial non ?

La commande magique c'est vmware-cmd avec l'option addredo, la syntaxe est la suivante :

vmware-cmd <cfg> addredo <disk_device_name>

cfg c'est le chemin du fichier VMX de la définition de la machine (si on a oublié où c'est vmware-cmd -l votre amis) et le  disk_device_name c'est le nom du périphérique disque dur du type bus:id-scsi définis dans ce fameux fichier. Exemple: SCSI0:0 pour le 1er disque dur (généralement) si vous voulez savoir quel disque SCSI sont dispo dans votre machine virtuelle deux simple grep seront utile.



passons à la pratique...j'ai un HD en mode persisTANT et je vais mettre en place un REDO a chaud machine active...



Super, magnifique, trop de bohneur j'ai un REDO.. et maintenant je fait un power off de ma bécanne que se passe t'il...



Damned !! Enfer et damnation, le redo commit automatiquement au Power OFF.. vous imaginer.. (HEIN NIOL)... vous êtes la, on vous a dis le redo c'est génial on peut faire des conneries et après on le discard.. vous démarrer votre VM, vous la salopez affectueusement.. et la ...merde... coincé, vous commencer à tirer une geule de labrador qui aurai dévasté un salon à coup de crocs et aurai été surpris par son maitre...... comment faire... là concretement Rien.. vous êtes totalement niqués, reste eventuellement le backup...vous auriez du faire un 'Double' Redo (Priere de dire Double avec l'accent américain).

Le Coup du 'Double' Redo

La rêgle est simple... le fichier nommé .REDO est commité au power Off, et vous avez pas le choix c'est comme ca et puis c'est tout. C'est la loi !.. le truc pour se tirer de ce gay pied (oui bon ok mais écrit comme ca c'est tendance) aurait été de créer un double redo... ainsi :

Double Redo

Que remarquons nous... on a un créer REDO puis un second.. travaillons un peut avec la VM poussons des update un peu partout sur son HD et regardons la taille des REDO...



Hooo dites voir... le REDO.REDO est a 48Mo et l'autre le REDO tout cours est vachement plus petit 16Mo !!...

Qu'en déduisons nous, le second REDO (le REDO.REDO) est utilisé pour stoquer nos IO et le 1er REDO (Le REDO tout court) ne fous rien, et est quasiment vide (élémentaire mon cher Dr watson).  Le redo tout cours qui est vide c'est le 1er que nous avons fait pendant notre scéance redo du jour.. c'est lui qui va être comité au power off... donc on commitera du vide... et on risque rien.

On remarque aussi qu'un redo vide fait quand même 16Mo.

alor comment que ca marche l'ordonancement de ce merdier, c'est toouchy, mais assez facile à comprendre si on image un peut. faut voir ca comme comme une PILE de trois boites tupperwares. vous pouvez vous découpez le machin qui va suivre comme pense bete, je suis sur qu'il reservira.

--------------------------------------- CUT HERE ----------------------------------------
Sans redo cela ressemble a cela....
1 VIDE
0 VIDE
LEDISQUE (I/O)

je fait un redo, j'ai un FICHIER nommé REDO nr 0
1 VIDE
0 REDO (I/O)
LEDISQUE

je refait encore un redo, j'ai donc 2 Redo,  j'ai un FICHIER nommé REDO.REDO Nr 0 et mon redo tout court monte d'un cran

1 REDO
0 REDO.REDO(I/O)
LEDISQUE

j'éteint la VM le .REDO tout court est comité... le REDO.REDO est renommé REDO et descend au nr 0
1 VIDE
0 REDO (IO)
LEDISQUE

Déjà vous pouvez retenir que les I/O en cas de redo sont toujours sur la boite 0, et que un REDO.REDO qui serait tout seul est renommé en REDO

--------------------------------------- CUT HERE ----------------------------------------

Du coup... la manip dite du double redo sera :

1) J'arrête pas ma prod et je veut tenter un truc...
2) Je fait un REDO
3) immédiatement après, Je fait un second REDO, le 1er est donc vide
4) je fait ma connerie... merde ca marche pas
5) j'eteint ma VM.. il commit le redo vide...et renomme le redo.redo en redo tout court
6) je pete le REDO qui contient ma connerie...avec un bete commande « rm »
7) je redémarre ma machine comme une fleur....

On aurais aussi pus ne pas peter le REDO avec notre commande RM et au power on de la VM, la console nous aurais gentiment demandé le sort qu'on réserve au REDO restant.

Redo found

Pas se planter Hein.. HEIN Mr NIOL... commit c'est une connerie dans ce cas de figure...

Bon maintenant adméttons que le truc qu'on voulait tenter ai marché... on veut donc conserver ces redo et les fusionner au disque dur.

option 1...
on réteint et au redémarrage on dit commit pour le second REDO (qui est devenus le premier... ALORS CA SUITE DANS LE FOND)..

option deux
on le commit en live sans éteindre la VM avec nos petits doigts...
la commande magique est :

vmware-cmd <cfg> commit <disk_device_name> <level> <freeze> <wait>

Bon cfg et  disk_device_name facile on connait déjà... mais voilà 3 autres étrange paramètres , maryse présentez nous ces paramètre...

Et bien jean pierre :
Level : on commit le niveau 0 ou le niveau 1, rapellez vous des boites, une boite c'est un level.

Freeze : et là drame de l'histoire.. ET OUI la machine est toute frezzée pendant le commitage du REDO qui à les I/O disques (décidément y a pas de secrets ) le fameux level 0 (revoir le mémo des boites que vous avez découpé) par contre on peut commiter le redo nr 1 sans freezer la VM. L'option 1 ici frezera la VM et l'option 0 commitera san frezer la VM (mais juste pour le redo level 1) cependant le disque sera plus lent pendant le commitage, on a rien sans rien de nos jours

Wait : la commande de commit doit elle rendre la main immédiatement ou attendre la fin du commitage du redo ? donc 0 ca veut dire j'attend pas que ca ai finis de comité, 1 j'attend la fin du commit avant de rendre la main.

Avant que vous vous lancier sur cette commande , il y a un Bug qui cours toujours même sur les ESX 2.5 qui fait que le parsage des « level » « freeze » et  « wait » merdouille à mort voir la page :

Vmware c'est de la merde mais la knowledge base est sympas

Veuillez SVP mettre a jour le script vmware-cmd comme indiqué avant de se lancer dans un commit sauvage...................j'attend.........c'est patché votre commande...Commitons la bete... alors un level 0 avec un freeze à 1 ( pas le choix ) et en attendant wait a 1.. et Hop

Comit

Easy... des warriors j'vous dis...

Poser un Redo en Douceur

Alors a quoi que ca peut servir de pouvoir commiter le redo level 1 sans freezer la bécanne.. et bien mettons que vous faite un backup de votre VM, vous venez de découvrir le REDO ca change votre vie, vous pouvez backuper à chaud vos disques de serveur sans les éteindre en plein journée ... le panard !!! Sauf que mettons que votre backup mette 2H.. vous faites un REDO et il se mange les I/O disque pendant 2H. Il a de grande chances de faire au moins quelque centaine de mégas votre redo.. du coup le freeze pendant le commit du redo level 0 ca pourrait prendre quelques minutes... et patatra votre beau backup en nonstop, foutu.. au placard..niké. car cela sera dur a faire croire que vous backuper sans arret si après le backup il y a 15mn de downtime.

L'idée est donc :
1) Je fait un REDO ( level 0 )
2) je backup... ca dure et mon redo level 0 enfle..
3) j'ai finis le backup je fait un redo.redo level 0 mon redo simple passe donc à level 1
4) je commit sans freezer le REDO enorme de level 1,
5) du coup le REDO.REDO passe à level 0 et se renomme redo tout court
6) je commit en freezant l'ancien redo.redo devenus redo de level 0 et qui est tout petit

j'ai donc un freeze ridiculement petit, qui prend le temps du commit du redo vide de la taille minimale de 16Mo plus éventuellement du nombre d'I/O écriture qui on eu lieu pendant le commit du premier redo...

GéNIAL NON ? c'est une variante du « double » redo (l'accent l'accent...)

Bon franchement j'en ai encore perdu combien ce coup ci ?

Rapellez vous :  un fichier REDO alors REDO = level 0, si REDO.REDO alors REDO= level 1

Le Redo c'est pas l'amis de tous les Backups

Bon alors là, je vous entend déjà ho joie, on peut backuper a chaud en journée sans downtime, tranquille tranquille.. oui mais non !!... la mise en place du redo c'est exactement la même chose que si on avait un miroir ( RAID 1 ) et qu'on arrachait a la hussarde un des deux disque pour s'assurer un backup... ne riez pas de nombreux le font je peut donner des noms...

Alors effectivement ca marche nickel pour des file serveur ou des disques système mais faut avouer que dès que ca va toucher une database ou un truc qui fait genre database ( exchange, notes ) ca risque de laisser la DB dans un état pathétique. Car notre redo et l'arrachage de HD travaille au niveau I/O rien ne peut dire que on est pas en plein transaction dans un db, rien ne peut même dire qu'on a pas un fichier en cours d'écriture. Dans ces cas la, il vaut mieux un bon viel agent de backup dans la machine virtuelle... la journalisation à ses limites il parait. je n'ai jamais eu le temps de tester les dire de M. Vmware la dessus. mais pour des backup consistent, sur ce coup là j'ai tendance à le croire.

Donc on peut effectivement faire le backup de DSK via redo sans problèmes pour avoir une image des disque systèmes et en cas de crash ou de drp repartir sur les image puis recharger les db du backup traditionnel. C'est ce qu'on peut appeller du norton ghost classieux à 2000€ la licence.

L'autre couillonerie chiante c'est qu'on ne peut pas restorer au niveau fichier.. enfin je dis on ne peut pas... si on peut mais c'est loin d'etre pratique (yep on peut monter une un disque d'une VM depuis la console.. ne le dite jamais à l'audit). Disons que si vous sauver un file serveur, et que madame machin vous à, pour la enieme fois, péter son fichier XLS.. ce sera quand meme beaucoup plus facile de restorer son putain de fichier excel du backup fichier de l'intérieur de la VM que de l'extraire du disque backupé...

Enfin pour l'exercice de style, comment restaurer un fichier emprisoné à l'intérieur d'un disque vmware vmdk:

Alors on a deux options, soit vous avez backuper directement les disques complets vmdk, soit vous avez intelligemment (et parce que vous aviez de la place) exporté les disque au format COW (copy on write), le format utiliser par GSX 3, avant de backuper. (rapellez vous la commande vmkfstool -e qui permet d'exporter le disque ENORME VMDK en block de 2 Go dans lequel on ne garde que les secteurs vraiment utilisé... )

Si c'est un vmdk on peut le monter directement dans la console , voir la commande vmware-mount
Si c'est un disque exporté Cow il y a un super jouet pour monter les partitions dans un windows -> Vmware Diskmount Utility

On s'en rend bien compte... pour restaurer dans la vie de tout les jours, c'est effectivement pénible. Par contre ce qui est fun... c'est quand on est en REDO on peut monter le disque natif coté console et voir un fichier qu'on aurait saloper dans le redo pour comparer.

Avoir un Redo ou Dropper le Djebel

Chaques médailles ayant sont revers ( expression placée ici idéalement, parce que par exemple ici, chaque pot a son couvercle expression chère à ma grand mêre n'aurait pas convenu) il vas quand même falloir que je vous le dise, le REDO ca plomble les performances disques.... je sais c'est un drame. mais ne vous pendez pas tout de suite...écoutez pourquoi...

Bon déjà on se doute... si on fait des I/O dans le Redo, c'est pas des I/O linéaires comme dans un faux disque Vmware c'est indéxé bref on perd de la performance là déjà.. ensuite quand on lis un truc et que le redo l'a pas faut le lire dans le vrais disque et la rebam on a aussi pbm de performances, et enfin le redo il grossis... et cà c'est chiant.. sur une partitions VMFS a chaque fois qu'une des machines change l'attribut d'un fichier ( pas lire ét ecrire dedans ) genre faire grossir le redo, pour eviter tout pbm toutes les machines sous ESX qui sont connectées à cette partition VMFS sont privée d'I/O pendant ce temps là....

Moralité, pendant que le redo grossis, et bien tout les serveur ESX retiennent leur souffle pendant que le serveur qui fait grossir le redo, termine de le faire grossir et mette a jours l'espace Metadata de la VMFS 2 c'est pas génial ca... donc un cela va....mais imaginez 10 serveurs .. ca deveint lourd. Encore une raison de pas avoir tous vos VM en REDO constamment...

A bon entendeur....

Redo vs Snapshots amis de la sémantiques !

Alors quel est la différence entre un RedO et un SnapShot maryse ?

Dans les deux cas C'est  un peu la même choses on va faire un fichier qui prendra les I/O ce qui va permettre de Revenir à un instant T... le Redo c'est le fameux Fichier crée à l'instant T. On a bien compris que si on se sépare de ce fichier on revint à cet instant T.

Le Snapshot c'est le nom Donné à cet instant et du coup On Comprend mieux que quand Vmware demande «voulez vous revenir au Snapshot» cela veut dire qu'il va discarder le redo.

Bon Normalement vous n'aurez pas ce problème car vous êtes des puristes et vous ne Travaillez qu'avec Vmware Esx et donc vous ne verrez que des Redo  car le Snapshot on ne le trouve que sur les autres Produits Vmware le Gsx le workstation et bien sur le nouveau gsx,  l'ami des gens qui n'ont Pas de sous votre nouvel ami  j'ai cité Virtual server .

Juste une Petite chose encore Sur Gsx et Virtual Server il n'y a qu'un seul niveau de redo alors que Sur la workstation, il faut bien avouer qu'ils on bétonné la chose. Il y a possibilité de mettre en place de multiples snapshot, mais on peut aussi repartir d'un snapshot, faire un nouveau snapshot... puis revenir a l'original snapshot et resnasphsoter..etc. bref c'est festif !




Voilà les ptis Gars.... vous êtes présentement des caids du REDO... je suis émus... bon mois...(à demain quoi)


Moyenne Dédicace au Chef Chaudart pour sa lecture peu motivée ce coup ci.
Et monsieur Niol... bon courage à ce qui vont bientôt vous supporter. (mais qui va finir l'alcool chinois avec moi !)

Contactez Moi et soyez méchant


Document made with Nvu

v 1.0 rev 30/04/06 - Edition Originale

Go Home