Program do kontroli i/o podczas kopiowania
Program do kontroli i/o podczas kopiowania
Jak w temacie.
Robię codziennie rano mały (około 25GB) backup na dysk zewnętrzny, wszystko chodzi ładnie, tylko jest mały problem: podczas kopiowania z serwera na dysk usb serwer przez prawie 20 minut sprawia wrażenie jakby miał drgawki właśnie przez to kopiowanie. I mam w związku z tym pytanie czy jest jakiś program, który pozwoli mi ograniczyć wykorzystanie mocy sprzętu? Taki myk jak w downloaderach, że można sobie ograniczyć prędkość ściągania.
Potem jeszcze porównuje sumy kontrolne oryginałów z kopiami, a że pliki są sporawe też jeździ po dysku jak po dzikiej świni ale na to pewnie lekarstwa nie ma; czy może jakoś inaczej weryfikować?
Pozdrawiam.
Robię codziennie rano mały (około 25GB) backup na dysk zewnętrzny, wszystko chodzi ładnie, tylko jest mały problem: podczas kopiowania z serwera na dysk usb serwer przez prawie 20 minut sprawia wrażenie jakby miał drgawki właśnie przez to kopiowanie. I mam w związku z tym pytanie czy jest jakiś program, który pozwoli mi ograniczyć wykorzystanie mocy sprzętu? Taki myk jak w downloaderach, że można sobie ograniczyć prędkość ściągania.
Potem jeszcze porównuje sumy kontrolne oryginałów z kopiami, a że pliki są sporawe też jeździ po dysku jak po dzikiej świni ale na to pewnie lekarstwa nie ma; czy może jakoś inaczej weryfikować?
Pozdrawiam.
Oczywiscie, ze przyrostowa - rsync'iem. Bedzie duzo szybciej. Ja do backupu wszystkiego poza 'home' uzywam nastepujacego skryptu:
W skrocie: mam dysk /dev/hdc2 podlaczony do tasmy IDE ale niezamontowany. Ten skrypt go montuje i backupuje wszystko oprocz 'home' , jednoczesnie zmieniajac /etc/fstab i /boot/grub/menu.lst po to, zeby ten dysk byl zwarty i gotowy ( jak bede chcial z niego zabootowac to tylko zmieniam kolejnosc dyskow w BIOSie i jest )
Od czasu do czasu robie tez z tego .iso DVD w ten sposob:
Kod: Zaznacz cały
#!/bin/sh
if [ `whoami` != root ]
then
echo You have to be root to run this script!
exit 1
fi
DEVICE=hdc2
echo Mounting $DEVICE...
mount /dev/$DEVICE /mnt
RET=$?
if [ $RET != 0 ]
then
echo Error mounting $DEVICE !
exit 2
fi
echo `date` > /root/.SYNCHRONIZED
for folder in bin boot etc emul initrd lib root sbin usr var
do
echo Syncing $folder ...
rsync -av --delete /$folder /mnt
done
echo Correcting menu.lst and fstab...
cat /mnt/boot/grub/menu.lst | sed "s/\(.*\)sdb1\(.*\)/\1${DEVICE}\2/" > menu.tmp
cat /mnt/etc/fstab | sed "s/\(.*\)sdb1\(.*\)/\1${DEVICE}\2/" > fstab.tmp
mv menu.tmp /mnt/boot/grub/menu.lst
mv fstab.tmp /mnt/etc/fstab
echo Unmounting...
umount /dev/$DEVICE
echo Done!
Od czasu do czasu robie tez z tego .iso DVD w ten sposob:
Kod: Zaznacz cały
genisoimage -o /media/data/root-image-2007-01-05.iso -R -A "Root Image 2007-01-05" /mnt
Nie chcę tu robić klasycznego backupu (przyrostowy, różnicowy...) bo są to pliki baz danych firebird.
Zmieniają się cały czas wszystkie więc to nie ma ma większego sensu, a 2 - nie chcę turlać dzień w dzień 25GB przez sieć dlatego zdecydowałem, że będę to wrzucał na USB i również popełniłem skrypt następujący:
Tylko zauważyłem niestety, że jest potężne obciążenie podczas tych zadań.
W sumie nie jest to sprawa krytyczna jednak pomyślałem, że może można jakoś kontrolować strumieniem podczas kopiowania, ale jak widać ciężka sprawa...
Sprawdzanie sum kontrolnych też zamula bo pliki są po kilka GB więc mu trochę schodzi zanim policzy...
I tak to właśnie wygląda.
Dzięki Panowie za zainteresowanie tematem :->
Zmieniają się cały czas wszystkie więc to nie ma ma większego sensu, a 2 - nie chcę turlać dzień w dzień 25GB przez sieć dlatego zdecydowałem, że będę to wrzucał na USB i również popełniłem skrypt następujący:
Kod: Zaznacz cały
#!/bin/bash
# Skrypt kopii bazy danych na dysk zewnetrzny v 2.0
#
log="/home/backup.log"
### FUNCTION backup
function backup {
usbd="/dev/$dn"
date >> $log
mount -o rw $usbd /mnt
sleep 1
mount -o rw $usbd /mnt
sleep 1
mount -o rw $usbd /mnt
sleep 2
#fdisk -l /dev/sda >> $log
cat /mnt/hd.info >> $log
echo 'czyszczenie katalogu na dysku USB' >> $log
rm -vrf /mnt/`date +%a` >> $log
echo '.................' >> $log
echo "Tworzenie katalogu `date +%a`" >> $log
mkdir /mnt/`date +%a`
echo '.................' >> $log
echo 'listing katalogu /server/kopie-pcb' >> $log
ls -l /server/kopie-pcb >> $log
echo 'Liczba plikow' `ls /server/kopie-pcb/ | wc -l` >> $log
echo 'listing plikow do skopiowania' >> $log
find /server/kopie-pcb/ -mtime -1 >> $log
echo "START `date +%T`" >> $log
find /server/kopie-pcb/ -mtime -1 -exec cp -vp {} /mnt/`date +%a` \; >> $log
#find /server/kopie-pcb/ -mtime -1 -exec ls -l {} \; >> $log
echo "KONIEC `date +%T`" >> $log
echo 'listing skopiowanych plikow na dysku USB' >> $log
df -h >> $log
df -i >> $log
ls -l /mnt/`date +%a` >> $log
#
find /server/kopie-pcb/ -mtime 0 -exec md5sum {} \; > /home/server-chcks
find /mnt/`date +%a` -name '*' -exec md5sum {} \; > /home/usbdisc-chcks
awk '{ print $1 }' /home/server-chcks > /home/oryg
awk '{ print $1 }' /home/usbdisc-chcks > /home/kopia
echo 'listing md5sum ' >> $log
diff -y -s /home/oryg /home/kopia >> $log
rm -fv /home/server-chcks /home/usbdisc-chcks /home/oryg /home/kopia
#
date >> $log
umount /mnt
sleep 3
umount /mnt
mail -s "backup_db.OK at `date +%F`" [email]info@info.info[/email] < $log
rm -f $log
}
### END FUNCTION backup
### FUNCTION check sda
function check_sda {
echo 'checking sda...' >> $log
if [ -b /dev/sda4 ]; then {
declare dn=sda4
echo 'function_call sda' >> $log
backup
}
else {
echo 'Something wrong :( (Maybe usb device connected incorrect...)' >> $log
echo 'sda not ok...' >> $log
mail -s "Backup_DB_ALERT at `date +%F`" [email]info@info.info[/email] < $log
exit
}
fi
}
### END FUNCTION check sda
echo 'checking sdb...' >> $log
### check sdb
if [ -b /dev/sdb4 ]; then {
declare dn=sdb4
echo 'function_call sdb' >> $log
backup
}
else {
echo 'sdb not ok...' >> $log
check_sda
}
fi
W sumie nie jest to sprawa krytyczna jednak pomyślałem, że może można jakoś kontrolować strumieniem podczas kopiowania, ale jak widać ciężka sprawa...
Sprawdzanie sum kontrolnych też zamula bo pliki są po kilka GB więc mu trochę schodzi zanim policzy...
I tak to właśnie wygląda.
Dzięki Panowie za zainteresowanie tematem :->
nice ewentualnie pomoze w kernelu skompilowanem z opcja 'CONFIG_PREEMPT' , Debianowe kernele o ile wiem maja tylko 'CONFIG_PREEMPT_VOLUNTARY'
[ Dodano: 2008-11-14, 18:45 ]
Ad. marcossx: nie musisz backupowac 'przez siec' , wystarczy dysk SATA podlaczony do systemu, ale nie zamontowany... Tak zreszta bedzie szybciej niz przez USB.
[ Dodano: 2008-11-14, 18:45 ]
Ad. marcossx: nie musisz backupowac 'przez siec' , wystarczy dysk SATA podlaczony do systemu, ale nie zamontowany... Tak zreszta bedzie szybciej niz przez USB.