Program do kontroli i/o podczas kopiowania

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Program do kontroli i/o podczas kopiowania

Post autor: markossx »

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.
snah
Beginner
Posty: 103
Rejestracja: 19 lutego 2008, 09:09

Post autor: snah »

Próbowałeś obiżyć priorytet operacji za pomocą nice?
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Nie próbowałem, wybadam to.
Dzięki.
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

Co do automatycznego limitowania IO danego procesu - nie wiem, ale dlaczego nie robic takich backupow o 5 rano, gdy spisz?
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

To jest serwer, który chodzi 24h/365d.
Zmniejszenie priorytetu nie wiele pomaga niestety :-|
adnix
Beginner
Posty: 113
Rejestracja: 17 stycznia 2008, 09:41

Post autor: adnix »

A nie mógłby tego robić metodą przyrostową?
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

Oczywiscie, ze przyrostowa - rsync'iem. Bedzie duzo szybciej. Ja do backupu wszystkiego poza 'home' uzywam nastepujacego skryptu:

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!
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

genisoimage -o /media/data/root-image-2007-01-05.iso -R -A "Root Image 2007-01-05" /mnt
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

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:

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
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 :->
fenix23
Posty: 62
Rejestracja: 09 października 2008, 17:47

Post autor: fenix23 »

A nice nie pomogło?
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

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.
ODPOWIEDZ