Dowiedz się, co kręci dysk twardy

10

Jestem właścicielem NAS, prowadzę dystrybucję Linuksa. Jest wyposażony w interfejs administracyjny sieci Web, w którym mogę zarządzać kilkoma usługami, prawami użytkowników, a także kiedy powinien iść spać. Moim problemem jest, z jakiegoś powodu, gdy NAS poszedł spać, dysk twardy włącza się ponownie po kilku minutach. Potem wiruje przez jakiś czas, a potem znów śpi. Trwa to w nieskończoność.

Jak mogę spróbować ustalić przyczynę tego? Jestem bardzo nowy w Linuksie, ale udało mi się uzyskać dostęp do konta root, a teraz mam połączenie SSH.

Andreas
źródło
To jest bardzo stare, ale może nadal mieć odpowiednie wskazówki.
Gilles „SO- przestań być zły”,
Czy masz jakieś wtyczki analityczne / podobne z interfejsem WWW / interfejsu użytkownika do serwera NAS? jakie są szczegóły skrzynki NAS? Zastanawiam się, czy można tam użyć niektórych narzędzi do podsłuchiwania systemu, aby sprawdzić aktywność dysku. Systemtap jest dostępny tylko dla późniejszych wersji jądra Linux.
Nikhil Mulley,
NAS to sieć Lacie d2 2. Nie ma opcji wtyczek, ale myślę, że mogę do niego załadować wszystko. Działa z serwerem sieci Green Unicorn. Jądro to 2.6.31.14-svn6790.
Andreas,

Odpowiedzi:

6

Inotify-tools to prosty sposób na zrobienie tego. Na ich stronie znajduje się kilka przykładów, które byłyby w stanie zrobić to, co chcesz (zobacz przykład inotifywatch dla naprawdę podstawowego).

Patrick
źródło
Obecnie patrzę na to. Najpierw muszę skompilować źródło procesora ARMv5TE. To może okazać się dość trudne :)
Andreas
6

iotopMoże spróbować uruchomić ? W przeszłości uważałem to za przydatne.

Faheem Mitha
źródło
2

Kolejna wskazówka: skorzystaj z Systemtap, na stronie systemtap znajduje się mnóstwo skryptów sondujących, które są wystarczająco przydatne, aby znaleźć winowajcę.

W innym przypadku całkowicie

Jeśli chcesz dowiedzieć się, który proces spowodował spin dysku, możesz zebrać informacje, ustawiając flagę /proc/sys/vm/block_dump. Po ustawieniu tej flagi Linux zgłasza wszystkie operacje odczytu i zapisu na dysku, które mają miejsce, a także wszystkie blokady blokowania plików. Dzięki temu możliwe jest debugowanie, dlaczego dysk musi się obracać, i jeszcze bardziej wydłużyć żywotność baterii. Dane wyjściowe block_dump są zapisywane na wyjściu jądra i można je pobrać za pomocą „dmesg” lub sprawdzić w narzędziu kern syslog, gdzie znajduje się miejsce docelowe komunikatów debugowania. Ogólnie powinno być /var/log/debug. Kiedy korzystasz z block_dump, a twój poziom rejestrowania jądra obejmuje również komunikaty debugowania jądra, prawdopodobnie chcesz wyłączyć klogd, w przeciwnym razie dane wyjściowe block_dump zostaną zarejestrowane, powodując aktywność dysku, której normalnie nie ma.

Nikhil Mulley
źródło
2

Musisz poinformować jądro, aby poinformowało cię o wszystkich odczytach / zapisach na dyskach, a następnie spójrz na te informacje.

Więc:

# sync
# echo 1 > /proc/sys/vm/block_dump
# dmesg -c | grep '/dev/sda'

syncopróżnia wszystkie oczekujące zapisy na dyskach, dzięki czemu zobaczysz tylko nowe odczyty lub zapisy.
dmesg -cpokazuje ci komunikaty jądra i usuwa je (w przeciwnym razie zobaczysz też stare, za każdym razem, gdy uruchamiasz dmesg). grepfiltruje wyjście dmesg pod kątem aktywności dla interesującego cię dysku. Zamień / dev / sda na swoje rzeczywiste urządzenie.

Zwykle używam czegoś takiego do spowolnienia dysku, a następnie sprawdzam, kiedy ponownie się uruchamia:

# sync
# hdparm -y /dev/sda
# while true; do hdparm -C /dev/sda ; sleep 600 ; done

Te whilekontrole pętli status aktywnego / Idle dyskowego co 10 minut. Kiedy zobaczysz, jak się zwiększa, uruchom dmesglinię powyżej, aby zobaczyć whodunnit.

Greg Bell
źródło