Je synchronise certains dossiers et effectue des sauvegardes via un grenier chaque nuit sur un partage nfs, c'est-à-dire sur un site différent. Pour cela, j'ai un script qui établit d'abord une connexion openvpn sur ce site, puis monte le partage nfs avant le démarrage de la sauvegarde.
Il arrive rarement que le partage nfs ne soit plus disponible pendant le processus de sauvegarde, ce qui oblige l'attente io à gravir plusieurs jours:
Graphique de charge moyenne en imgur
Dès que le partage redevient disponible, la charge tombe.
Avant cela, je ne peux pas tuer le processus qui provoque la charge. Ça ne partira pas.
C'est très énervant.
Comment puis-je empêcher cela? Puis-je en quelque sorte intégrer un délai d'attente ou quelque chose?
Voici le script qui tourne tous les soirs via cron:
#!/bin/sh
REPOSITORY=/media/offsiteserver_netbackup/system.attic #no backslash at the end of this
NFSMOUNT=/media/offsiteserver_netbackup #no backslash at the end of this
NFSDIR="192.168.178.2:disk2/netbackup"
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
###############start of script#################
#exec >> $LOGFILE 2>&1
#simple function that just prints the time and the info you pass to it
echotime () {
echo "`date +%Y-%m-%d--%H:%M:%S` ----$1---"
}
# simple function to check if openvpn is connected (1 means NOT CONNECTED)
checkvpn () {
if ping 192.168.178.2 -c 1 &> /dev/null; then
echotime "VPN connected"
return 1
else
echotime "VPN not connected"
return 0
fi
}
# simple function to check if nfs is mounted (1 means NOT MOUNTED)
checkmount () {
#http://stackoverflow.com/a/14698865
#http://stackoverflow.com/a/9422947
if mount | grep $NFSMOUNT > /dev/null; then
echotime "NFS mounted"
return 1
else
echotime "NFS not mounted"
return 0
fi
}
echotime "Script Start"
# restart vpn if not connected
if checkvpn; then
echotime "VPN not connected, attepting to connect"
/etc/init.d/openvpn restart
sleep 5
#check again if its connected
if checkvpn; then
echotime "ERROR: VPN still not connected, exiting \n"
exit 1
fi
fi
# mount nfs if not mounted
# if your not using NFS, you can delete this section all together
if checkmount; then
echotime "NFS not mounted, attepting to mount"
mount -v $NFSDIR $NFSMOUNT -o nolock
#check again if its mounted
if checkmount; then
echotime "ERROR: NFS still not mounted, exiting \n"
exit 1
fi
fi
# Backup all of / except a few excluded directories
# if your running into issues, add -v after create for verbose mode
# the below / means backup all of root.
echotime "ATTIC CREATE"
attic create --stats \
$REPOSITORY::host.stscode-`date +%Y-%m-%d--%H:%M:%S` \
/ \
--exclude /sys \
--exclude /mnt \
--exclude /dev \
--exclude /media \
--exclude /lost+found \
--exclude /proc \
--exclude /run
# Use the `prune` subcommand to maintain 7 daily, 4 weekly
# and 6 monthly archives.
echotime "ATTIC PRUNE"
attic prune -v $REPOSITORY --keep-hourly=23 --keep-daily=7 --keep-weekly=2 --keep-monthly=2
#unmount the NFS folder, I do this b/c
# if it stays mounted, sometimes servers freak
# out when rebooting.
# Uncomment the below 2 lines if you need to unmount every time.
echotime "UNMOUNT"
umount -v $NFSMOUNT
# end of script
echotime "End of Script"
Ou peut-être que nfs n'est pas le moyen d'aller ici?
Je suis reconnaissant pour toute suggestion sur la manière dont je peux améliorer cette procédure et la rendre plus stable.