Dzisiaj spotkałem się z naprawdę dziwnym problemem i jestem całkowicie bezradny.
Niektóre serwery, którymi zarządzam, są monitorowane za pomocą Nagios. Ostatnio widziałem, że sonda użytkowania dysku nie działa z tym błędem:
DISK CRITICAL - / sys / kernel / debug / tracing nie jest dostępny: Odmowa dostępu
Chciałem to zbadać, a moją pierwszą próbą było sprawdzenie uprawnień do tego katalogu i porównanie ich z innym serwerem (który działa dobrze). Oto polecenia, które uruchomiłem na działającym serwerze, a zobaczysz, że jak tylko przejdę cd
do katalogu, jego uprawnienia zostaną zmienione:
# Here we've got 555 for /sys/kernel/debug/tracing
root@vps690079:/home/admin# cd /sys/kernel/debug
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Jul 19 13:13 ../
…
dr-xr-xr-x 3 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x 6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x 2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r-- 1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x 2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x 2 root root 0 Jul 19 13:13 zswap/
# I cd into the folder, and it (./) becomes 700!!
root@vps690079:/sys/kernel/debug# cd tracing/
root@vps690079:/sys/kernel/debug/tracing# ll
total 0
drwx------ 8 root root 0 Jul 19 13:13 ./
drwx------ 30 root root 0 Jul 19 13:13 ../
-r--r--r-- 1 root root 0 Jul 19 13:13 available_events
-r--r--r-- 1 root root 0 Jul 19 13:13 available_filter_functions
-r--r--r-- 1 root root 0 Jul 19 13:13 available_tracers
…
# Next commands are just a dumb test to double-check what I'm seeing
root@vps690079:/sys/kernel/debug/tracing# cd ..
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Sep 27 10:57 ../
…
drwx------ 8 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x 6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x 2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r-- 1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x 2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x 2 root root 0 Jul 19 13:13 zswap/
Czy masz pojęcie, co może być przyczyną takiego zachowania?
Na marginesie: wydaje się, że użycie chmod do przywrócenia uprawnień nie naprawia sondy.
linux
permissions
cd-command
sysfs
zessx
źródło
źródło
ll
poleceniami, które reprezentują.Odpowiedzi:
/ sys
/sys
tosysfs
całkowicie wirtualny widok struktur jądra w pamięci, który odzwierciedla bieżącą konfigurację jądra systemu i sprzętu i nie zajmuje rzeczywistego miejsca na dysku. Nowe pliki i katalogi nie mogą być zapisywane w zwykły sposób.Zastosowanie monitorowania miejsca na dysku nie generuje użytecznych informacji i jest marnowaniem wysiłku. Może zawierać punkty montowania innych wirtualnych systemów plików opartych na pamięci RAM, w tym ...
/ sys / kernel / debug
/sys/kernel/debug
jest standardowym punktem montowania dladebugfs
, który jest opcjonalnym wirtualnym systemem plików dla różnych funkcji debugowania i śledzenia jądra.Ponieważ służy do debugowania funkcji, powinien być niepotrzebny do użytku produkcyjnego (chociaż możesz zdecydować się na użycie niektórych funkcji do ulepszonych statystyk systemu lub podobnych).
Ponieważ korzystanie z funkcji oferowanych przez
debugfs
will w większości przypadków wymaga iroot
tak bycia , a jego głównym celem jest łatwy sposób dla deweloperów jądra w celu dostarczenia informacji debugowania, może to być nieco „szorstkie wokół krawędzi”.Kiedy jądro zostało załadowane, procedura inicjalizacji podsystemu śledzenia jądra zarejestrowana
/sys/kernel/debug/tracing
dla siebie jako punkt dostępu do debugowania, odkłada wszelką dalszą inicjalizację, dopóki nie zostanie faktycznie uzyskana po raz pierwszy (minimalizując zużycie zasobów przez podsystem śledzenia, na wypadek gdyby okazało się, że jest to nie są potrzebne). Gdycd
przejdziesz do katalogu, ta odroczona inicjalizacja została uruchomiona, a podsystem śledzenia przygotował się do użycia. W efekcie oryginał/sys/kernel/debug/tracing
był początkowo mirażem bez substancji i stał się „prawdziwy” tylko wtedy, gdy (i ponieważ) uzyskałeś do niego dostęp za pomocą swojegocd
polecenia.debugfs
w ogóle nie wykorzystuje rzeczywistego miejsca na dysku: wszystkie zawarte w nim informacje znikną po zamknięciu jądra./ sys / fs / cgroup
/sys/fs/cgroup
totmpfs
oparty na pamięci RAM system plików, służący do grupowania różnych działających procesów w grupy kontrolne . W ogóle nie wykorzystuje rzeczywistego miejsca na dysku. Ale jeśli ten system plików z jakiegoś powodu jest prawie pełny, może to być poważniejsze niż po prostu brak miejsca na dysku: może to oznaczać, żea) kończy Ci się wolna pamięć RAM,
b) jakiś proces rootowania zapisuje śmieci do
/sys/fs/cgroup
, lubc) coś powoduje, że powstaje naprawdę absurdalna liczba grup kontrolnych, być może w stylu klasycznej „bomby widelcowej”, ale z
systemd
usługami na bazie lub podobnymi.Dolna linia
Sonda użytkowania dysku powinna była zostać
/sys
wykluczona, ponieważ nic poniżej nie/sys
jest przechowywane na żadnym dysku.Jeśli potrzebujesz monitorować
/sys/fs/cgroup
, powinieneś dostarczyć dedykowaną sondę, która dostarczy bardziej znaczących alertów niż ogólna sonda miejsca na dysku.źródło
/sys
z mojego zakresu monitorowania./proc
i prawdopodobnie/dev
(ponieważ nawet jeśli nie jest w 100% wspierany przez RAM, z jednej strony zawiera pewną liczbę plików i katalogów, które są „dziwne” na różne sposoby, a z drugiej strony, jeśli faktycznie zużywają mnóstwo miejsca na dysku/dev
, twoja konfiguracja jest przerażająco zepsuta i powinieneś zapalić cały bałagan w ogniu)./sys
jestsysfs
, całkowicie oparty na pamięci RAM wirtualny system plików” - jestem prawie pewien, że zawartośćsysfs
jest w 100% zsyntetyzowana ze struktur danych w jądrze i nie mieszka gdzieś w pamięci RAM. W rzeczywistości argumentowałbym, że „wirtualny system plików oparty na pamięci RAM” jest oksymoronem: albo jest oparty na pamięci RAM, tj. Ma magazyn kopii zapasowych (nawet jeśli jest to bardzo nietradycyjny magazyn kopii zapasowych systemu plików), to jest nie jest wirtualny lub jest wirtualny, wtedy nie ma sklepu z podkładami.sysfs
jest dyskiem RAM. Gdzie w ogóle mogłyby istnieć struktury danych w jądrze, jeśli nie w pamięci RAM? Zgadzam się, że słowo „wirtualny” jest tutaj problematyczne, ponieważ możesz być świadomy, że nad wszystkimi sterownikami systemu plików w jądrze Linux jest warstwa VFS (Virtual File System), która używa „wirtualnego” w jeszcze innym sensie, ponieważ jednolita abstrakcja dla wszystkich możliwych systemów plików. Ale trudno jest zwięźle opisać, czymproc
i czymsysfs
różnią się od prawdziwych systemów plików, ponieważ były to tylko podstawowe informacje, aby utrzymać główny punkt.