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
0
-
Recommander
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
1
-
Recommander
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
1
-
Recommander
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
0
-
Recommander