Calendrier

Novembre 2009
L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
<< < > >>

Impression

 
Cela signifie que l'ensemble des documents
mis à votre disposition sont libres d'utilisation
à des fins personnelles mais qu'en aucun
cas ils ne peuvent être utilisés à des fins
commerciales.

 


 

 L'insertion d'un extrait dans une publication à caractère scientifique est soumise aux lois du copyright et doit faire l'objet d'une autorisation écrite préalable.
L'utilisation à des fins pédagogiques est permise à la condition expresse de me prevenir, d'une part, et d'informer les étudiants concernés de l'existence de ce site de référence, d'autre part.

 

Locations of visitors to this page

Recommander

Linux

Jeudi 9 avril 2009

Suite à un article dans linux Magazine, j'ai voulu utiliser ZFS.

déjà utilisé sur des serveurs Solaris 10, l'utilisation de ZFS sur des postes linux est une bonne chose.

Voici donc le paramétrage mise en place sur un poste linux avec la Debian Etch.

Je l'utilise avec 4 HDD en Sata.
Des snapshots permettant de faire des sauvegardes sur un autre support ( HDD, Tape , Cdrom ... )

Dans l'exemple ci-dessous, j'ai mis 2 HDD :

zfs_creation_raiz


SAUVEGARDE


# Sauvegarde des systeme de fichier ZFS

Pour Sauvegarder un systeme de fichier ZFS, il faut au préalable créer un snapshot de ce systeme de fichier :
zfs snapshot pool1/fs01@snap01

La creation d'un snapshot est instantanée. elle est réalisée par la commande :
zfs snapshot <nom du pool>/<nom du FS>@<nom du snapshot>

# Creation d'une sauvegarde ZFS
# Une fois le snapshot crée on peut soit le sauvegarder entierement :
zfs send pool01/fs01@snap01 > tmp/snap

# soit sauvegarde uniquement les différences entre 2 snapshots(sauvegarde incrementale) :
zfs send -i pool01/fs01@snap01 pool01/fs01@snap02 > /tmp/incr_snap

# Dans ce cas l'option -i indique qu'il s'agit d'une sauvegarde incrémentale, avec en premier le snapshot le plus ancien puis le plus recent.

# RESTAURATION D'UNE SAUVEGARDE ZFS

#Pour pouvoir effectuer une restauration complete, il ne doit pas y avoir de systeme de fichiers du meme nom dans le pool.

zfs receive pool01/fs01 < /tmp/snap

Dans le cas ou on dispose de sauvegarde incrementales, apres avoir resescendu un snapshot il faut effectuer un rollback de ce snapshot avant d'appliquer les sauvegardes incrementales suivantes :

zfs rollback pool01/fs01@snap01
zfs receive pool01/fs01 < /tmp/incr_snap


Quelque lien utile :
Managing ZFS Storage Pools (Solaris ZFS Administration Guide) - Sun Microsystems
ZFS Tutorial Part 2
man : System Administration Commands - Sun Microsystems
Guide d'administration Zfs
Par 78.ultima
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Samedi 25 avril 2009
Voici un petit programme ecrit en java qui permet en interface graphique de parametrer le bootloader zfs.




Tres simple, il est utilisable sous X, avec gksudu pour le lancer.

voici les differents script a mettre en place
vi /usr/share/applications/zfs-config.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Zfs control panel
Comment=Plugin Control Panel
Exec=gksudo "java -jar /usr/bin/ZfsConfig.jar /etc/default/zfs-daemon"
Terminal=false
Type=Application
Icon=sun-java6
Categories=Settings

:wq

# etre dans le repertoire des fichiers src
sudo cp ./ZfsConfig.jar /usr/bin/


lien vers les sources java
Par 78.ultima
Ecrire un commentaire - Voir les 1 commentaires - Recommander
Mercredi 22 juillet 2009
Bonjour,

voici ci-dessous un script qui me permet de faire mes sauvegardes automatiquement sur mon serveur linux.

le principe est de faire des fichiers tar qui sont zipper. Par la suite une rotation des fichiers .gz est faite tout les 30 jours

En premier vous avez besoin d'un compte de sauvegarde et du logiciel sudo

Dans le compte root :
# creer un compte sauve sur votre machine ex: adduser ...
            aptitude install sudo
            visudo
            # Cmnd alias specification
            Cmnd_Alias      SAUVE = /home/sauve/mesdoc_archives.sh
            # %sudo ALL=NOPASSWD: ALL
            %sauve ALL=(ALL) ALL, NOPASSWD: SAUVE
            :wq


            vi /etc/group
            # ajoute de
            sauve:x:1005:sauve
            :wq

Creation dans le cron de l'utilisateur le lancement du script
            crontab -e sauve
            00 01 * * 1 sudo /home/sauve/mesdoc_archives.sh 2>&1 >> /home/sauve/mesdoc.log
            :wq

dans le compte utilisateur sauve
vi /home/sauve/mesdoc_archives.sh
#!/bin/sh
#set ${debug:-+x}
#  -----------------------------------------------------------------------------
#  Description   : Script de rotation des données de 'Mes Documents'
#  -----------------------------------------------------------------------------
#  Auteur        : 78.ultima.over-blog.com
#  Date creation : 06/04/2008
#  Version       : 0.1
#  -----------------------------------------------------------------------------
#  Modifications :
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#  Date          : 15/09/2008
#  Auteur        : 78.ultima.over-blog.com
#  Objet         : Ajout, test du repertoire a sauvegarder
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#  Date          :
#  Auteur        :
#  Objet         :
#  -----------------------------------------------------------------------------

#  -----------------------------------------------------------------------------
#  Definition de l'environnement
#  -----------------------------------------------------------------------------
PATH_MESDOC=/media/home/Mes_Documents/
PATH_AUTRE=/media/home/Autre/
PATH_SAUVE=/home/sauve
F_DATE=`date +%Y%m%d`                           # Format de la date : AAAAMMJJ
destinataire=''Adresse Email"


echo DEBUT...........................................................................
echo execution du fichier $0 a `date "+%H:%M:%S - %d %m %Y"`
echo .
echo ..
#  -----------------------------------------------------------------------------
#  Sauvegarde du Repertoire 'Mes Documents'
#  -----------------------------------------------------------------------------
if [ -f mesdocOffice_$F_DATE.tar.gz ]
        then
        echo mesdocOffice_$F_DATE.tar.gz existe
        echo .
else
        if [ -d $PATH_MESDOC ]
        then
                echo tar du repertoire $PATH_MESDOC
                echo .
                RETOUR=`tar -cf $PATH_SAUVE/mesdocOffice_$F_DATE.tar $PATH_MESDOC/*`
                tar -cf $PATH_SAUVE/
autre_$F_DATE.tar $PATH_AUTRE/*
                echo $RETOUR compression de mesdocOffice_$F_DATE.tar
                echo compression de
autre_$F_DATE.tar
                echo ..
                /bin/gzip -9 $PATH_SAUVE/*.tar
                echo compression en gzip de mesdocOffice_$F_DATE.tar &
autre_$F_DATE.tar
                echo ...
                echo "sauvegarde effectue, `date` !" | mailx -s "Sauvegarde: mes documents office" $destinataire
        else
                echo  $PATH_MESDOC "n'existe pas !"
        fi
fi

#  -----------------------------------------------------------------------------
#  Purges des archives > a 1 mois
#  -----------------------------------------------------------------------------
find $PATH_SAUVE -mtime +30 -name "*.gz" -print | while read NOMFICHIER
do
   if [ -f $NOMFICHIER ]
      then
        echo supression de $NOMFICHIER
        echo ...
        rm $NOMFICHIER
   fi
done
echo FIN...........................................................................


:wq

chmod a+x /home/sauve/mesdoc_archives.sh
Par 78.ultima
Ecrire un commentaire - Voir les 1 commentaires - Recommander
Jeudi 12 novembre 2009
Voici un nouveau script de sauvegarde.

Cette fois ci, il est exclusivement pour le systeme de fichier ZFS.

En premier vous avez besoin d'un compte de sauvegarde et du logiciel sudo

Dans le compte root :
# creer un compte sauve sur votre machine ex: adduser ...

           aptitude install sudo
            visudo
            # Cmnd alias specification
            Cmnd_Alias      SAUVE_ZFS = /home/sauve/sauve_zfs.sh
            # %sudo ALL=NOPASSWD: ALL
            %sauve ALL=(ALL) ALL, NOPASSWD: SAUVE_ZFS
            :wq

            vi /etc/group
            # ajoute de
            sauve:x:1005:sauve
            :wq

Creation dans le cron de l'utilisateur le lancement du script
            crontab -eu sauve
            00 05 * * * sudo /home/sauve/sauve_zfs.sh 2>&1 >> /home/sauve/sauve_zfs.log
            :wq

            touch /home/sauve/sauve_zfs.log
            chown sauve:tape sauve_zfs.log

Dans le compte utilisateur sauve
vi /home/sauve/sauve_zfs.sh
#!/bin/sh
#set ${debug:-+x}
#  -----------------------------------------------------------------------------
#  Description   : Script de sauvegarde d'un systeme de fichier zfs
#  -----------------------------------------------------------------------------
#  Auteur        : 78.ultima.over-blog.com
#  Date creation : 06/10/2009
#  Version       : 0.1
#  -----------------------------------------------------------------------------
#  Modifications :
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#  Date          :
#  Auteur        :
#  Objet         :
#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#  Date          :
#  Auteur        :
#  Objet         :
#  -----------------------------------------------------------------------------

#  -----------------------------------------------------------------------------
#  Definition de l'environnement
#  -----------------------------------------------------------------------------
PATH_SAUVE=/home/sauve
FILE_ROTATION=rotation.conf

ZFS_POOL=zfs-1T
ZFS_FILE=home
ZFS_SNAPSHOT=backupHome
destinataire="Adresse Email"

test -f $PATH_SAUVE/$FILE_ROTATION && . $PATH_SAUVE/$FILE_ROTATION

echo DEBUT...........................................................................
echo execution du fichier $0 a `date "+%H:%M:%S - %d %m %Y"`
echo .
echo ..
#  -----------------------------------------------------------------------------
#  Test de l'existance du fichier rotation.conf
#  -----------------------------------------------------------------------------
if [ ! -f "$PATH_SAUVE/$FILE_ROTATION" ]
then
        echo ROTATION=0 > $PATH_SAUVE/$FILE_ROTATION
        echo Creation du fichier $PATH_SAUVE/$FILE_ROTATION
        echo ..
fi

#  -----------------------------------------------------------------------------
#  Destruction du snapshot et des fichiers de sauvegardes
#  -----------------------------------------------------------------------------
echo ...


if [ "$ROTATION" != "9" ] ; then
        echo ....
   else
        INCI=0
        echo Destruction du snapshot et des fichiers de sauvegardes
        find $PATH_SAUVE -name "*.zfs.gz" -print | while read NOMFICHIER
        do
                echo $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$INCI
                zfs destroy $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$INCI
                rm $NOMFICHIER
                INCI=$(expr $INCI + 1)
                echo ROTATION=0 > $PATH_SAUVE/$FILE_ROTATION
        done
fi

#  -----------------------------------------------------------------------------
#  Creation du snapshot si n'existe pas
#  -----------------------------------------------------------------------------
echo .....
ROTATION=0
# Test de l'existence de fichier
find $PATH_SAUVE -name "*.zfs.gz" -print | while read NOMFICHIER
do

        if [ -f $NOMFICHIER ]
           then
                echo fichier existent : $NOMFICHIER
                ROTATION=$(expr $ROTATION + 1)
        fi
        echo ROTATION=$ROTATION > $PATH_SAUVE/$FILE_ROTATION
done

. $PATH_SAUVE/$FILE_ROTATION

echo creation du snapshot $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION
zfs snapshot $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION
echo ......

echo creation du fichier zfs de sauvegarde incrementale
echo Taille a sauvegarder : $( zfs list | grep -m 1 $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION \
                              | awk '{ print $4 }' )
if [ "$ROTATION" = "0" ]
then
        zfs send $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION | gzip > $PATH_SAUVE/$ZFS_SNAPSHOT$ROTATION.zfs.gz
        echo zfs send $INCRE $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION
        echo "sauvegarde rotative effectue, `date` !" | mailx -s "Sauvegarde: $ZFS_SNAPSHOT$ROTATION.zfs.gz" $destinataire
else
        ROTAPREC=$(expr $ROTATION - 1)
        zfs send -i $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTAPREC \
                           $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION | \
                           gzip > $PATH_SAUVE/$ZFS_SNAPSHOT$ROTATION.zfs.gz
        echo zfs send -i $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTAPREC \
                           $ZFS_POOL/$ZFS_FILE@$ZFS_SNAPSHOT$ROTATION
fi


echo ROTATION=$ROTATION > $PATH_SAUVE/$FILE_ROTATION
echo .......
echo FIN.............................................................................

:wq

chmod a+x /home/sauve/sauve_zfs.sh

Par 78.ultima
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus