Co tak rzeźbi po dysku?
Napisał: Patryk Krawaczyński
05/09/2012 w Administracja, Debug Brak komentarzy. (artykuł nr 367, ilość słów: 892)
U
tylizację wybranego dysku w systemie Linux możemy obserwować za pomocą narzędzia iostat. Niestety dostarcza ono tylko ogólnych informacji na temat zapisów i odczytów z dysku z dokładnością, co do partycji. Gorzej jeśli interesuje nas konkretny użytkownik lub daemon, który powoduje konkretną aktywność. Warto wtedy skorzystać z inotify-tools
Inotify-tools jest biblioteką C oraz zestawem narzędzi dla Linuksa dających prosty interfejs dla podsystemu inotify. Dzięki temu zestaw oferowanych programów może zostać użyty do monitorowana wybranych zdarzeń zachodzących w systemie plików. Na przykład na partycji /dev/sda7 przez użytkownika user
zostanie odpalone specjalnie polecenie generujące obciążenie dysku:
dd if=/dev/zero of=/home/user/output.img bs=8k count=256k
W drugiej konsoli administrator zauważa wysoką utylizację dysku spowodowaną zapisem:
[root@darkstar ~]# iostat 2 /dev/sda Linux 2.6.32-279.1.1.el6.i686 (darkstar) 03.09.2012 _i686_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 30,53 0,51 24,43 33,59 0,00 10,94 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 183,50 0,00 179820,00 0 359640
Sprawdza dokładnie, na której partycji jest największa aktywność:
[root@darkstar ~]# iostat 2 -p /dev/sda Linux 2.6.32-279.1.1.el6.i686 (darkstar) 03.09.2012 _i686_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0,00 0,76 23,16 64,38 0,00 11,70 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 178,00 0,00 180240,00 0 360480 sda1 0,00 0,00 0,00 0 0 sda2 0,00 0,00 0,00 0 0 sda3 0,00 0,00 0,00 0 0 sda4 0,00 0,00 0,00 0 0 sda5 2,00 0,00 16,00 0 32 sda6 0,00 0,00 0,00 0 0 sda7 176,00 0,00 180224,00 0 360448 sda8 0,00 0,00 0,00 0 0
I dzięki narzędziu inotifywatch z pakietu inotify-tools
ustawia rekursywny nasłuch na katalog /home
, który odpowiada partycji /dev/sda7
:
[root@darkstar ~]# inotifywait -m -r --format '%:e %f' /home Setting up watches. Beware: since -r was given, this may take a while! MODIFY output.img ... MODIFY output.img
Teraz wystarczy znaleźć namierzony plik:
[root@darkstar ~]# find /home -name output.img /home/user/output.img
Jeśli w systemie występuje więcej niż jedno źródło obciążenia – możemy skorzystać z inotifywatch
, które w określonym przedziale czasu (60 sekund) przestawi statystyki dla wybranych metod (w poniższym przykładzie: access, modify):
[root@darkstar ~]# inotifywatch -v -e access -e modify -t 60 -r /home Establishing watches... Setting up watch(es) on /home OK, /home is now being watched. Total of 23 watches. Finished establishing watches, now collecting statistics. Will listen for events for 60 seconds. total modify filename 436832 436832 /home/user1/ 225527 225527 /home/user2/
Więcej informacji: man inotifywatch, man inotifywait