Sauvegarde à chaud de VM

Avoir du RAID redondé c’est bien pour éviter la coupure de service en cas de panne matériel mais cela ne protège pas des effacements par erreur. Il faut des sauvegardes.

Comme ce que je recherche c’est de pouvoir revenir à  un l’état de mes données dans le passé, je laissz dz côté la sauvegarde de la définition des VM.

Un script glané sur le site de Debian me sert de base //wiki.debian.org/fr/RsyncSnapshots. Il utilise rsync avec des liaison dur avec la précédente sauvegarde. Un peu inutile quand les VM sont allumée en permanence mais trouve son intérêt quand les fichiers ne changent pas d’une sauvegarde à l’autre.

Voici le script:

#!/bin/sh
##==========================================================================
## Auteur      : Thierry BRESSURE
## Licence     : GNU GPL v3 – //www.gnu.org/licenses/gpl.html
## Description : Script de sauvegarde disques des VM
##============================================================================
## Parametres d’entree : liste des profils a sauvegarder.
## Exemple d’appel     : rsync.sh blog kitejust4fun
## Code de retour      :
##  0 – La sauvegarde des disques s’est correctement terminee.
##============================================================================

ROOT_BACKUP=/media/backup
DEVICE_BACKUP=/dev/sdc1

#####################################
# GESTION DE L’APPEL DE LA COMMANDE #
#####################################

# Recuperation des profils passes en parametre.
if [ $# -ne 0 ]
then
    while [ $# -ne 0 ]
    do
        domains=”$domains $1 ”
        shift
    done
# Aucun domain n’est passe en parametre, on fait donc la sauvegarde pour tout
# le monde.
else
    # lister les vm
    domains=`virsh list | sed 1,2d | awk ‘{print $2}’`   
fi

###################################
# MONTAGE DU DISQUE DE SAUVEGARDE #
###################################

if [ ! -d $ROOT_BACKUP ]
then
   rm -rf $ROOT_BACKUP
   mkdir $ROOT_BACKUP
fi

montage=0

mount | grep “$ROOT_BACKUP” 2>/dev/null
if [ $? -ne 0 ]
then
mount -t ext4 $DEVICE_BACKUP $ROOT_BACKUP && montage=1

fi

####################################
# BOUCLE DE SAUVEGARDE DES PROFILS #
####################################

for un_domain in $domains
do

date_sauvegarde=$(date “+%Y%m%d_%H%M%S”)

echo
echo “${date_sauvegarde} – sauvegarde de la VM ${un_domain}”
        echo “—————————————–”
     

nombre_de_sauvegardes=2
# Creation d’un fichier temporaire pour y ecrire les fichiers et
# repertoires a ne pas sauvegarder (pour ne mettre que le fichier
# temporaire en parametre de la commande rsync)
ce_quil_ne_faut_pas_sauvegarder=$(tempfile)
:>$ce_quil_ne_faut_pas_sauvegarder
# Exclusions generales
echo “*~” >> $ce_quil_ne_faut_pas_sauvegarder

## DECOUVRIR LES DISQUES DE LA VM

        les_disques=`virsh domblklist ${un_domain} –details | sed 1,2d | grep ^file | awk ‘{print $3}’`
        les_images_disques=`virsh domblklist ${un_domain} –details | sed 1,2d | grep ^file | awk ‘{print $4}’`
               
       

## CREER UN SNAPSHOT
    virsh snapshot-create-as –domain ${un_domain} “${date_sauvegarde}” –atomic –disk-only

        ## garder en memoire les disques temporaires de la VM

        les_disques_temp=`virsh domblklist ${un_domain} –details | sed 1,2d | grep ^file | awk ‘{print $3}’`
        les_images_disques_temp=`virsh domblklist ${un_domain} –details | sed 1,2d | grep ^file | awk ‘{print $4}’`

## SAUVEGARDE

  # Si le repertoire de sauvegarde n’existe pas, je le cree.
    if [ ! -d $ROOT_BACKUP/vm_”${un_domain}” ]
    then
        echo “L’emplacement de la sauvegarde n’existait pas.”
        mkdir $ROOT_BACKUP/vm_”${un_domain}”
    fi

    ##############
    # SAUVEGARDE #
    ##############
   
    #il peut avoir plus d’un disque à sauvegarder
    for ce_quil_faut_sauvegarder in ${les_images_disques}
    do
    if [ -L $ROOT_BACKUP/vm_”${un_domain}”/current ] \
        && [ -d $ROOT_BACKUP/vm_”${un_domain}”/current ]
   then
        # Si une precedente sauvegarde existe, on la lie en dur.
        rsync  –delete-excluded –partial \
       –skip-compress=gz/jpg/mp[34]/7z/bz2 –stats -rlpthz \
       –link-dest=$ROOT_BACKUP/vm_”${un_domain}”/current \
–exclude-from “${ce_quil_ne_faut_pas_sauvegarder}” \
“${ce_quil_faut_sauvegarder}” \
      $ROOT_BACKUP/vm_”${un_domain}”/”${date_sauvegarde}”/
else
        # Sinon, on en cree une toute neuve !
      rsync –delete-excluded –partial \
      –skip-compress=gz/jpg/mp[34]/7z/bz2 –stats -rlpthz \
–exclude-from “${ce_quil_ne_faut_pas_sauvegarder}” \
       “${ce_quil_faut_sauvegarder}” \
       $ROOT_BACKUP/vm_”${un_domain}”/”${date_sauvegarde}”/
    fi

    retour_rsync=$?
if [ $retour_rsync -ne 0 ]
then
echo “le disque ${ce_quil_faut_sauvegarder} n’a pas pu etre sauvegarder, on annule le reste”
break
fi      
echo # Pour passer une ligne 🙂

    done

    # Suppression du fichier temporaire qui stocke les repertoires a exclure
    rm $ce_quil_ne_faut_pas_sauvegarder

    #######################
    # GESTION DES ERREURS #
    #######################

    # Pas d’erreur
    if [ $retour_rsync -eq 0 ]
    then
        # La sauvegarde a reussit, on cree un lien “current” pour retenir la
        # derniere.
        rm -f $ROOT_BACKUP/vm_”${un_domain}”/current 2>/dev/null
        ln -s $ROOT_BACKUP/vm_”${un_domain}”/”${date_sauvegarde}”/ \
            $ROOT_BACKUP/vm_”${un_domain}”/current

        # Si le nombre de snapshots depasse nombre_de_sauvegardes, je purge.
        nombre_snapshots=$((`ls $ROOT_BACKUP/vm_”${un_domain}” | wc -l` – 1))
        if [ ${nombre_snapshots} -gt $nombre_de_sauvegardes ]
        then
            # On supprime la plus vieille des sauvegardes
            plus_ancienne=”$(ls $ROOT_BACKUP/vm_”${un_domain}” | head -n 1)”
            rm -rf $ROOT_BACKUP/vm_”${un_domain}”/”${plus_ancienne}”
            echo “Purge de la plus ancienne sauvegarde : ${plus_ancienne}.”
        else
            echo “Aucune sauvegarde anterieure ne doit etre supprimee.”
        fi
    # Probleme lors de la sauvegarde rsync
    else
        # La sauvegarde a echouee, on affiche une erreur et on supprime la
        # tentative.
        echo “La commande rsync a echouee pour l’utilisateur ${un_domain}.”
        echo “Suppression de la sauvegarde en erreur : ${date_sauvegarde}.”
        rm -rf $ROOT_BACKUP/vm_”${un_domain}”/”${date_sauvegarde}”/
    fi
   

## REBASCULER LA VM VERS CHAQUE DISQUE ORIGINAL
    for un_disque in $les_disques
do
    virsh blockcommit ${un_domain} ${un_disque} –active –verbose –pivot
done
   
## SUPPRIMER LE SNAPSHOT DEVENU INUTILE
        virsh snapshot-delete –domain ${un_domain} –metadata ${date_sauvegarde}

## supprimer les disques temporaires qui ne sont hélas pas supprimés par la commande précédente
for image_temp in $les_images_disques_temp
do
echo “suppression du disque temporaire ${image_temp}…”
rm -rf “${image_temp}” && echo “$image_temp supprimé”
done
done

###########################
# démontage si nécessaire #
###########################

if [ $montage -eq 1 ]
then
    umount $ROOT_BACKUP
fi

exit 0

Juste pour le plaisir… CC-BY-SA

Le web en danger

C’était sur ces mots qu’un plaidoyer pour un internet libre était lancé par l’inventeur du web il y a quelques années. Il mettait en garde contre le fait que les sites fermés, tel que Facebook, tuait le web en enfermant en leur sein une portion du monde qui pourrait trés bien être à l’exterieur. En effet il faut être inscrit pour accéder à Facebook. Or Facebook agit comme un portail où les utilisateurs restent captifs. Tout ce qu’on met dans Facebook, reste dans Facebook.

Il avait raison. Les gens confondent allègrement Facebook et internet. J’en ai eu l’exemple le week-end dernier où sur le festival de Berk, un animateur disait à un visiteur d’aller sur le site web de son association pour avoir des informations complémentaires. Le visiteur demanda aussitôt si il n’avait pas une page facebook, que c’était mieux qu’un site car cela permettait aux gens de découvrir son association puisque les gens vont de page Facebook en page Facebook par les partages… il ignorait que c’est éxactement ce que permet le world wide web par les hyperliens tout en étant libre, sans obligation d’être inscrit.

Cependant sur un point ce visiteur à raison. Si on veut avoir une grande visibilité à peu de frais, avoir une page Facebook est un moyen comme un autre voire des plus efficace si on sait manipuler le buzz. Mais il faut prendre garde de ne mettre sur Facebook que ce qui existe par ailleurs et accessible sans contrainte.

Bye bye Ubuntu Bonjour Debian

English: Debian GNU/Linux 6.0 ("Squeeze&q...
English: Debian GNU/Linux 6.0 (“Squeeze”) with GNOME. Polski: Debian GNU/Linux 6.0 (“Squeeze”) z GNOME. (Photo credit: Wikipedia)

 

Utilisant Ubuntu depuis 2006, j’ai pu constater les changements de la distribution au fil du temps. Si au début le bureau était celui de GNOME certes simple, mais très rapide pour la bête de course que j’avais, il s’est transformé au fur-et-à-mesure des mises à jours (tous les 6 mois) en devenant plus beau, plus sexy et plus gourmand en ressource.

 

Aussi lorsque mon PC portable est revenu à la vie, je me suis empressé de mettre à jour Ubuntu 9.10 vers son remplaçant au goût du jour. Les difficultés d’installations ont alors commencé. Ne disposant pas de lecteur optique fonctionnel, je me tourne donc vers une installation par clé USB. Un bug empêche alors l’installation du gestionnaire de démarrage GRUB sur le disque dur. Pour le contourner l’utilisation de l’ISO d’installation “alternate” me permit d’effectuer une installation en mode texte (semi-graphique). Enfin une Ubuntu récente ! J’ai préféré la 12.04 qui est une LTS dont le support va jusqu’en 2017. Au fil du temps Canonical (la société qui est derrière Ubuntu) a réduit la durée de support de ces produits non LTS. Cela ce comprend car avec le rythme de sortie des versions, une tous les 6 mois, cela fait beaucoup de version à maintenir. Ne souhaitant pas faire de mise à jour de version tout les 6 mois, l’utilisation d’une LTS est pour moi obligatoire, d’autant plus que les non LTS ont une durée de support de 9 mois seulement. Autant dire qu’une on LTS n’est pas destinée au grand public.

 

Une fois Ubuntu installé sur vieux portable, je commence à jouer avec en installant un bon vieux Netbeans. Je remarque alors des artefacts d’affichage qui n’est corrigé par aucune des différentes version disponibles du pilote graphique. Par ailleurs le bureau très beau devenait inutilisable à cause de ces bugs graphiques. C’est alors que je me suis dit pourquoi pas revenir à un OS reconnu pour sa stabilité et ayant un long historique ou pourquoi pas une distribution vraiment libre estampillée par la FSF ?

 

Finalement j’opte pour une Debian. Le bug de l’installateur de Ubuntu est en fait aussi présent dans celui de Debian dont est issu Ubuntu. L’usage de premier disque de la distribution DVD permit de mener à bien l’installation. Et voilà, mon vieux portable est mu par un OS stable et au goût du jour. Le bureau de Debian est assez jolie, plus sobre que celui d’Ubuntu et finalement cela me convient bien !

La main dans le cambouis

English: Samsung Logo Suomi: Samsungin logo
English: Samsung Logo Suomi: Samsungin logo (Photo credit: Wikipedia)

De retour du réparateur, mon ordinateur portable était devenu muet. Pourtant l’OS indiquait bien la présence d’un périphérique audio et malgré tous les réglages que j’ai pu essayer, l’ordinateur restait muet comme une carpe. Je fini par me résoudre à la conclusion que le problème venait d’un élément non logiciel comme par exemple un haut-parleur non branché. Grâce à de la documentation trouvée sur le net (désassemblage d’un Samsung Q45) j’ai mis la main dans le cambouis pour désosser mon portable.

Je fis alors une découverte surprenante. Mon réparateur avait oublier de rebrancher les connecteur des hauts-parleurs ! Une fois cet oubli réparé, mon portable retrouva toutes ces cordes vocales et fit tonner le son grésillard de ces petits hauts-parleurs internes. Par la suite en voulant jouer avec la webcam intégrée je remarquai que le micro n’enregistrait aucun son. Mon portable était également devenu sourd ! Après quelques réglages infructueux, je repris les tournevis et remis le patient sur le billard… Le connecteur du micro était également débranché, Grrrrrr….. encore un oubli de mon réparateur !

Enfin maintenant mon portable est comme neuf: écran réparé, haut-parleur et micro rebranché, disque dur fonctionnel. A moi les joiesde l’informatique nomade !

Réparation écran noir Samsung Q45

English: Typical computer shop in Montgallet s...
English: Typical computer shop in Montgallet street in Paris. Français : Boutique d’informatique typique de la rue Montgallet à Paris. (Photo credit: Wikipedia)

Mon ordinateur portable était en panne depuis 3 ans et comme je ne m’en servais pas je n’avais pas cherché à le réparer depuis. Étant de passage à Montgallet (Paris 12e) dans ce lieu mythique des passionnés de matériel informatique afin de changer l’alimentation de mon PC fixe qui a rendu l’âme au bout de presque 7 années de service, j’ai remarqué un grand nombre de magasin de réparation d’ordinateur portable. Je me suis dis que ce serait peut-être l’occasion de ressusciter mon ultra portable.

Le symptôme de mon Samsung Q45 était un écran noir qui bloquait le démarrage du système sur 1 beep long suivi de 2 beep court. L’expression “google est ton ami” fut encore une fois vérifiée. Le verdict: problème de carte graphique. Je me suis alors souvenu pourquoi je l’avais mis de côté. Sur les ordinateur portable il n’y a pas de carte graphique à proprement parler. Le contrôleur graphique (puce) est soudé à la carte mère. C’est donc un composant non remplaçable par l’utilisateur. Est-ce que les magasins de Montgallet allaient pourvoir m’aider ?

L’un d’entre eux (Solution mobile) décrivait exactement mon problème et présentait en toute transparence la solution. La réparation étant laborieuse, entre 200 à 300 soudures à refaire, le résultat n’est pas garanti. J’y suis allé et moyennant une centaine d’euro, mon ordinateur sorti des ténèbres. Mon vieux portable (vieux car il date de 2007) a donc repris du service. Restait encore à régler le problème du disque dur non reconnu par le BIOS et les hauts-parleurs qui n’émettent aucun son que j’ai découvert après avoir booter sur un disque USB.

Le disque dur non reconnu ne mettait en cause le disque lui-même car le réparateur avait essayé un disque neuf qui n’était pas non plus reconnu. Ce dernier m’a suggérer d’installer un pilote… hum hum, il ne savait pas qu’il parlait à un informaticien. Pas de reconnaissance du disque par le BIOS je n’ai aucune chance d’installer quoi que ce soit dessus. Le problème semblait être matériel et non logiciel. Le disque lui même n’étant pas en cause, je craignais qu’un autre composant sur la carte mère ne fût HS. Là encore “google est ton ami” : le coupable semblait être la nappe qui relie disque à la carte mère. Elle est très fragile. Constituée d’une sorte de circuit imprimé sur une feuille de plastique. Si on la plie le circuit imprimé casse. Or la mienne était bien pliée… Une dizaine d’euro plus tard grâce à EBay, mon portable reconnu le disque et une nouvelle vie, muette,  commença pour lui.