tuto:virtualisation:virt_scripts

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
tuto:virtualisation:virt_scripts [03/04/2010 12:43]
dani
tuto:virtualisation:virt_scripts [22/06/2010 20:02]
dani
Ligne 1: Ligne 1:
 +FIXME: cette page est obsolète, et n'a été utilisé que pour la création du paquet virt-stack
 +
 Contenue du paquet: Contenue du paquet:
   * script de sauvegarde virt-backup.pl   * script de sauvegarde virt-backup.pl
Ligne 6: Ligne 8:
  
 ====== Script d'hibernation/réveil des VM lors de l'arrête/démarrage de l'hôte ====== ====== Script d'hibernation/réveil des VM lors de l'arrête/démarrage de l'hôte ======
 +
 +Ce script ne devrait plus être nécessaire à partit de libvirt-0.8.0 (qui intègre de façon native une fonction "managed save" qui permet de réveiller une VM depuis un fichier state, simplement en démarrant le domaine)
  
 <code bash> <code bash>
Ligne 164: Ligne 168:
  
 ===== Script de configuration des permissions qui vont bien ===== ===== Script de configuration des permissions qui vont bien =====
 +Hook script pour qemu (/etc/libvirt/hook/qemu)
 +<code bash>
 +#!/bin/bash
 +
 +VM=shift
 +OP=shift
 +SUBOP=shift
 +
 +VOLS=(cat /dev/stdin | xmlstarlet sel -t -m \
 +    "/domain/devices/disk/source" -v @dev -v @file -n; done | grep '/')
 +
 +if [ $OP == "start" ]; then
 +    for VOL in $VOLS;do 
 +        chcon -t virt_image_t $VOL
 +    done
 +fi
 +
 +exit 0
 +</code>
 +
 +Hook script pour le démon (/etc/libvirt/hook/daemon)
 +
 +<code bash>
 +#!/bin/bash
 +
 +OBJ=shift
 +OP=shift
 +
 +if [ $OP == "start" ]; then
 +    for DIR in /var/lib/libvirt/qemu /var/run/libvirt/qemu /var/cache/libvirt/qemu; do
 +        [ -d $DIR ] || mkdir -p $DIR
 +        chown qemu:qemu $DIR
 +    done
 +fi
 +
 +exit 0
 +</code>
  
 Un chcon tout les supports utilisés par une VM: Un chcon tout les supports utilisés par une VM:
Ligne 277: Ligne 318:
    
 ### TODO: ### TODO:
-# - Make it more robust (script crash sometime while trying to restore 
-#        Probably a bug somewhere between libvirt and Sys::Virt) 
-# - Test with images as backend. Should just work, but without the snapshot function 
 # - Add snapshot (LVM) support for image based disk ? (should we detect the mount moint, and block device # - Add snapshot (LVM) support for image based disk ? (should we detect the mount moint, and block device
 #    of the storage or let the user specify it with a --logical ?) #    of the storage or let the user specify it with a --logical ?)
Ligne 354: Ligne 392:
     $opts{compext} = ".xz";     $opts{compext} = ".xz";
     $opts{compcmd} = "xz -c";     $opts{compcmd} = "xz -c";
 +}
 +elsif ($opts{compress} eq 'lzip'){
 +    $opts{compext} = ".lz";
 +    $opts{compcmd} = "lzip -c";
 +}
 +elsif ($opts{compress} eq 'plzip'){
 +    $opts{compext} = ".lz";
 +    $opts{compcmd} = "plzip -c";
 } }
 # Default is gzip # Default is gzip
Ligne 430: Ligne 476:
     # Create a new XML object     # Create a new XML object
     my $xml = new XML::Simple ();     my $xml = new XML::Simple ();
-    my $data = $xml->XMLin( $dom->get_xml_description() );+    my $data = $xml->XMLin( $dom->get_xml_description(), forcearray => ['disk');
    
     # STop here if the lock file is present, another dump might be running     # STop here if the lock file is present, another dump might be running
Ligne 481: Ligne 527:
    
         # If the device is a disk (and not a cdrom) and the source dev exists         # If the device is a disk (and not a cdrom) and the source dev exists
-        if (($disk->{device} eq 'disk') && (-e $source) && (!$disk->{readonly})){+        if (($disk->{device} eq 'disk') && (-e $source)){
    
             print "\nAnalysing disk $source connected on $vm as $target\n\n" if ($opts{debug});             print "\nAnalysing disk $source connected on $vm as $target\n\n" if ($opts{debug});
Ligne 524: Ligne 570:
                 ".img$opts{compext}\n";                         ".img$opts{compext}\n";        
         }         }
-        print "\n"; 
     }     }
    
Ligne 547: Ligne 592:
         my $dest = "$opts{backupdir}/$vm" . '_' . $disk->{target} . ".img$opts{compext}";         my $dest = "$opts{backupdir}/$vm" . '_' . $disk->{target} . ".img$opts{compext}";
    
-        print "\nStarting dump of $source to $dest\n" if ($opts{debug});+        print "\nStarting dump of $source to $dest\n\n" if ($opts{debug});
         my $ddcmd = "$opts{ionice} dd bs=$opts{bs} if=$source 2>/dev/null | $opts{nice} $opts{compcmd} > $dest 2>/dev/null";         my $ddcmd = "$opts{ionice} dd bs=$opts{bs} if=$source 2>/dev/null | $opts{nice} $opts{compcmd} > $dest 2>/dev/null";
         unless( system("$ddcmd") == 0 ){         unless( system("$ddcmd") == 0 ){
Ligne 604: Ligne 649:
     "\t--snapsize=<snapsize>: The amount of space to use for snapshots. Use the same format as -L option of lvcreate. " .     "\t--snapsize=<snapsize>: The amount of space to use for snapshots. Use the same format as -L option of lvcreate. " .
         "eg: --snapsize=15G. Default is 5G\n\n" .         "eg: --snapsize=15G. Default is 5G\n\n" .
-    "\t--compress[=[gzip|bzip2|pbzip2|lzop|xz]]: On the fly compress the disks images during the dump. If you " .+    "\t--compress[=[gzip|bzip2|pbzip2|lzop|xz|lzip|plzip]]: On the fly compress the disks images during the dump. If you " .
         "don't specify a compression algo, gzip will be used.\n\n" .         "don't specify a compression algo, gzip will be used.\n\n" .
     "\t--exclude=hda,hdb: Prevent the disks listed from being dumped. The names are from the VM perspective, as " .     "\t--exclude=hda,hdb: Prevent the disks listed from being dumped. The names are from the VM perspective, as " .
Ligne 722: Ligne 767:
     close LOCK;     close LOCK;
 } }
- +
 # Unlock the VM backup dir # Unlock the VM backup dir
 # Just removes the lock file # Just removes the lock file
 sub unlock_vm{ sub unlock_vm{
-    print "Removing lock file for $vm\n" if $opts{debug};+    print "Removing lock file for $vm\n\n" if $opts{debug};
     unlink <$opts{backupdir}/$vm.lock>;     unlink <$opts{backupdir}/$vm.lock>;
 } }
Ligne 742: Ligne 787:
   * pbzip2   * pbzip2
   * xz   * xz
 +  * lzip
 +  * plzip
  
  • tuto/virtualisation/virt_scripts.txt
  • Dernière modification: 12/07/2012 23:32
  • de dani