Jak znaleźć proces, który regularnie zapisuje na dysk?

41

Jak znaleźć proces, który nieustannie zapisuje na dysk?

Podoba mi się, że moja stacja robocza jest prawie cicha i właśnie buduję nowy system (P8B75-M + Core i5 3450s - 's', ponieważ ma niższy maksymalny TDP) z cichymi wentylatorami itp. I zainstalowałem Debian Wheezy 64-bit na tym.

I coś mi działa na nerwy: słyszę jakiś wzór, jakby dysk twardy coś pisał lub szukał czegoś ( tyka ... tyka ... tyka ... trrrrrr spłucz i powtarzaj co sekundę).

W przeszłości miałem podobny problem w przeszłości (wiele, wiele lat temu) i okazało się, że był to jakiś dziennik CUPS lub coś takiego i po prostu przekierowałem to (nieistotne) logowanie na (prawdziwy) dysk RAM.

Ale tutaj nie jestem pewien.

Próbowałem następujące:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

ale nic się tam nie zmienia.

Dziwną rzeczą jest to, że słyszę ten wzór, gdy wyświetla się monit o podanie hasła deszyfrującego LVM.

Czy może to być coś w jądrze / systemie, który właśnie zainstalowałem, czy mam wadliwy dysk twardy?

hdparm -tT /dev/sda zgłoś prawidłową prędkość HD (130 GB / s bez pamięci podręcznej, sata 6 GB), a ja już zainstalowałem i skompilowałem z dużych źródeł (Emacs) bez problemu, więc nie sądzę, że system jest zły.

(HD to Seagate Barracude 500 GB)

Cedric Martin
źródło
Czy jesteś pewien, że hałas powoduje dysk twardy, a nie coś innego? (Sprawdź wentylatory, w tym wentylator zasilacza. Miałem dziwne odgłosy kliknięcia, gdy bardzo cienki kabel był zbyt blisko wentylatora, a czasami bardzo delikatnie dotykał ostrzy i odbijał się o kilka „kliknięć” ...)
Mat.
@Mat: Wyjmę dysk twardy z obudowy (złącza powinny być wystarczająco długie), aby się upewnić, i przekażę raport; )
Cedric Martin
2
Upewnij się, że systemy plików dysku są zamontowane w czasie relatywnym lub noatime. Odczyty plików mogą powodować, że zapisy do i-węzłów rejestrują czas dostępu.
camh

Odpowiedzi:

43

Czy próbowałeś sprawdzić, jakie programy iotoppokazują? Dokładnie powie ci, jaki proces aktualnie zapisuje na dysk.

przykładowe dane wyjściowe:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
mnmnc
źródło
1
dzięki za tę wskazówkę. Nie wiedziałem o iotop . Na Debianie zrobiłem iotop wyszukiwania apt-cache, aby dowiedzieć się, że muszę apt-get iotop . Bardzo fajne polecenie!
Cedric Martin
3
Używam, iotop -o -b -d 10co każde 10 sekund drukuje listę procesów, które odczytują / zapisują na dysk oraz ilość wykorzystanego pasma IO.
ndemou
15

Możesz włączyć debugowanie echo 1 > /proc/sys/vm/block_dumpwe / wy za pośrednictwem, a następnie oglądać komunikaty debugowania w / var / log / syslog . Ma to tę zaletę, że uzyskuje pewnego rodzaju plik dziennika z wcześniejszymi działaniami, podczas gdy iotoppokazuje tylko bieżącą aktywność.

scai
źródło
4
Szaleństwem jest pozostawienie włączonego sysloging, gdy aktywny jest block_dump. Rejestrowanie powoduje aktywność dysku, co powoduje rejestrowanie, które powoduje aktywność dysku itp. Lepiej zatrzymaj syslog przed włączeniem tego (i użyj dmesg do odczytania wiadomości)
dan3
Masz całkowitą rację, chociaż efekt nie jest tak dramatyczny, jak to opisujesz. Jeśli chcesz tylko rzucić okiem na aktywność dysku, nie musisz zatrzymywać demona syslog.
scai
Wypróbowałem to około 2 lata temu i mój komputer się zatrzymał. Pewnego dnia, kiedy nie będę miał nic ważnego do uruchomienia, spróbuję jeszcze raz :)
dan3,
Próbowałem, ale tak naprawdę nic się nie stało. Zwłaszcza z powodu buforowania systemu plików. Zapis do syslog nie powoduje natychmiastowego zapisu na dysk.
scai
1
Zakładam, że istnieje ogólne ograniczenie stawki dla komunikatów w dzienniku, które również obsługuje tę sprawę (?)
Volker Siegel
5

Zakładając, że hałas dysku wynika z procesu powodującego zapis, a nie z jakiegoś problemu z rozproszeniem dysku , możesz użyć podsystemu kontroli (zainstalować auditdpakiet ). Obserwuj syncrozmowy i ich przyjaciół:

auditctl -S sync -S fsync -S fdatasync -a exit,always

Oglądaj dzienniki /var/log/audit/audit.log. Uważaj, aby tego nie zrobić, jeśli same dzienniki kontroli są opróżnione! Sprawdź /etc/auditd.conf, czy flushopcja jest ustawiona na none.

Jeśli pliki są często opróżniane, prawdopodobnym winowajcą są dzienniki systemowe. Na przykład, jeśli rejestrujesz nieudane próby połączenia przychodzącego i ktoś sonduje twój komputer, wygeneruje to wiele wpisów; może to powodować, że dysk emituje odgłosy przypominające karabiny maszynowe. Za pomocą sysklogd podstawowego demona dziennika sprawdź /etc/syslog.conf: jeśli nazwa pliku dziennika nie jest poprzedzona znakiem -, to dziennik jest opróżniany na dysk po każdym zapisie.

Gilles „SO- przestań być zły”
źródło
@StephenKitt Huh. Nie. Pytający wspomniał o Debianie, więc zmieniłem go na link do pakietu Debian.
Gilles „SO- przestań być zły”
3

Być może Twoje dyski automatycznie się obracają, wiele dysków klasy konsumenckiej robi to obecnie. Niestety nawet w przypadku lekko obciążonego systemu powoduje to, że dyski stale się obracają, a następnie ponownie się obracają, szczególnie jeśli używasz hddtemp lub podobnego urządzenia do monitorowania temperatury dysku (większość dysków głupio nie pozwala zapytać o wartość temperatury SMART bez rozpędzania napędu - kretyński!).

Jest to nie tylko irytujące, ale może szybciej zużywać dyski, ponieważ wiele dysków ma ograniczoną liczbę cykli parkowania. np. patrz https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 w celu uzyskania opisu problemu.

Wyłączam spindown bezczynności na wszystkich moich dyskach za pomocą następującego fragmentu kodu powłoki. możesz umieścić go w skrypcie /etc/rc.boot lub w pliku /etc/rc.local lub podobnym.

dla dysku w / dev / sd? ; zrobić
  / sbin / hdparm -q -S 0 „$ dysk”
gotowy
cas
źródło
2
że nie można zapytać odczytów SMART bez rozpędzenia dysku, pozostawia mnie bez słowa: - / Teraz kwestia „spinningowania” może stać się dość skomplikowana. Jeśli chodzi o wyłączenie wirowania: czy samo w sobie nie spowoduje szybszego zużycia HD? Mam na myśli: nigdy nie „odpoczywa”, dopóki system jest włączony?
Cedric Martin,
IIRC umożliwia sprawdzenie niektórych wartości SMART bez powodowania wirowania dysku, ale temperatura nie jest jedną z nich na żadnym z testowanych dysków (w tym modelach WD, Seagate, Samsung, Hitachi). Co jest oczywiście szalone, ponieważ obawa o temperaturę jest jednym z powodów bezczynności na dysku. re: zużycie: AIUI 1. stała prędkość jest mniej odporna na zużycie niż zmiana prędkości. 2. dyski muszą zaparkować głowice w bezpiecznym miejscu, a dysk jest oceniany tylko tak wiele razy (IIRC do kilkuset tysięcy - łatwo przekroczyć, jeśli dysk pracuje na biegu jałowym i wiruje co kilka sekund)
cas
To długa debata na temat tego, czy lepiej pozostawić uruchomione dyski, czy też je zakręcić. Osobiście uważam, że najlepiej jest pozostawić je uruchomione - wyłączam komputer w nocy i kiedy wychodzę, ale poza tym nigdy nie obracam dysków. Niektórzy ludzie wolą je podkręcać, powiedzmy, w nocy, jeśli zostawiają komputer włączony lub jeśli komputer jest bezczynny przez długi czas, a w takich przypadkach zaletą jest spuszczanie ich na kilka godzin w porównaniu z pozostawieniem ich uruchomionych . To, co nigdy nie jest dobre, to fakt, że dysk twardy wielokrotnie obraca się w górę i w górę w krótkim czasie.
Micheal Johnson,
Zwróć też uwagę, że obracanie dysku po kilku godzinach bezczynności jest trochę głupie, ponieważ jeśli był bezczynny przez kilka godzin, prawdopodobnie zostanie użyty ponownie w ciągu godziny. W takim przypadku lepiej byłoby natychmiast wyłączyć dysk, jeśli jest bezczynny (na przykład w ciągu 10 minut), ale możliwe jest również, że dysk będzie bezczynny przez kilka minut, gdy ktoś będzie korzystał z komputera i prawdopodobnie będzie potrzebował niedługo znów jedziemy.
Micheal Johnson
Myślałem, że to naprawi mój problem, ponieważ słyszę, że dysk wydaje okresowe klikanie (3-4 razy / sekundę), jakby pisał, nawet gdy nie jest zamontowany! Ale nadal słyszę hałas po uruchomieniu tego polecenia. Co niepokojące, to dysk, którego używam do tworzenia kopii zapasowej mojego wewnętrznego dysku SSD ...
Michael
1

Właśnie odkryłem, że smart powoduje, że zewnętrzny dysk USB ciągle się obraca na moim Raspberry Pi. Chociaż SMART jest ogólnie dobrą rzeczą, postanowiłem go ponownie wyłączyć i od tego czasu wydaje się, że niepożądana aktywność dysku została zatrzymana

jro
źródło
Możesz skonfigurować inteligentnego demona, aby nie skanował dysków USB, większość dobrych dystrybucji Linuksa robi to domyślnie.
lzap
1

Możesz się trochę na to zwalić. Powinien to zawęzić dla większości.

find / -mount -newer /proc -print

Daj pliki zmodyfikowane od momentu uruchomienia na fizycznym urządzeniu systemu plików /. Znajomość plików prawdopodobnie pomoże zidentyfikować pisarza.

użytkownik190618
źródło
1

W razie potrzeby zawężenia go do dokładnego dysku, użyj:

uruchom lsblki wyszukaj numer urządzenia. W poniższym przypadku tak jest9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

uruchom lsof | grep '9,126'z :zamiennikiem w ,porównaniu z powyższym numerem dysku. W moim przypadku wygląda to następująco:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

z PID 389162zabicia tego procesu za pomocą:

kill -9 389162
Jacques MALAPRADE
źródło
-1

Problem polega na tym, że system musi domyślnie opróżniać dane z buforów dysku na dysk co 5 sekund. Tak więc, jeśli dysk się obraca, nie będzie innej opcji niż ponowne uruchomienie, gdy zajdzie potrzeba koloru. Tak więc problemu nie da się uniknąć inaczej niż poprzez wyłączenie wyłączeń obrotów lub funkcji zarządzania energią dysku hdparm -B 255 /dev/hdax. Jest to prawdopodobnie lepsza opcja, ponieważ ponowne uruchamianie tak często może być bardziej szkodliwe niż zwykłe pozostawanie przez cały czas.

Paul Reynolds
źródło
1
Spłuka dane tylko wtedy, gdy będą jakieś dane do opróżnienia. Jeśli dysk naprawdę nie jest używany, nie będzie żadnych buforowanych danych do opróżnienia.
Micheal Johnson