Сегодня я столкнулся с действительно странной проблемой и совершенно беспомощен.
Некоторые из серверов, которыми я управляю, отслеживаются с помощью Nagios. Недавно я увидел сбой зонда использования диска с этой ошибкой:
КРИТИЧЕСКИЙ ДИСК - / sys / kernel / debug / tracing недоступен: в доступе отказано
Я хотел исследовать, и моей первой попыткой было проверить права доступа к этому каталогу и сравнить их с другим сервером (который работает хорошо). Вот команды, которые я выполнил на рабочем сервере, и вы увидите, что как только я cd
вхожу в каталог, его разрешения меняются:
# 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/
У вас есть идеи, что может вызвать такое поведение?
Дополнительное замечание: использование chmod для переустановки разрешений, похоже, не исправляет проблему.
linux
permissions
cd-command
sysfs
zessx
источник
источник
ll
команды, которые они обозначают.Ответы:
/ SYS
/sys
являетсяsysfs
полностью виртуальным представлением структур ядра в памяти, которое отражает текущее ядро системы и конфигурацию оборудования и не занимает реального места на диске. Новые файлы и каталоги не могут быть записаны в него обычным способом.Применение к нему мониторинга дискового пространства не дает полезной информации и является пустой тратой усилий. Он может иметь точки монтирования для других виртуальных файловых систем на основе ОЗУ, в том числе ...
/ SYS / ядро / отладки
/sys/kernel/debug
является стандартной точкой монтирования дляdebugfs
, которая является дополнительной виртуальной файловой системой для различных функций отладки и трассировки ядра.Поскольку он предназначен для отладки функций, предполагается, что он не нужен для производственного использования (хотя вы можете использовать некоторые функции для расширенной статистики системы или аналогичные).
Поскольку использование функций, предлагаемых
debugfs
в большинстве случаев, вroot
любом случае потребует , и его основная цель заключается в том, чтобы разработчики ядра могли легко предоставлять отладочную информацию, она может быть немного «грубой по краям».Когда ядро было загружено, подпрограмма инициализации подсистемы трассировки ядра, зарегистрированная
/sys/kernel/debug/tracing
для себя как точка доступа debugfs, откладывает любую дальнейшую инициализацию до фактического доступа к ней в первый раз (сводя к минимуму использование ресурсов подсистемы трассировки в случае, если выясняется, что она не требуется). Когда выcd
попали в каталог, эта отложенная инициализация была запущена, и подсистема трассировки подготовилась к использованию. По сути, оригинал/sys/kernel/debug/tracing
изначально был миражом без содержания, и он стал «реальным» только тогда, когда (и потому что) вы получили к нему доступ с помощью своейcd
команды.debugfs
вообще не использует никакого реального дискового пространства: вся информация, содержащаяся в нем, исчезнет при выключении ядра./ SYS / фс / контрольная группа
/sys/fs/cgroup
этоtmpfs
файловая система на основе ОЗУ, используемая для группировки различных запущенных процессов в контрольные группы . Он вообще не использует реальное дисковое пространство. Но если эта файловая система по какой-то причине почти заполнена, это может быть более серьезным, чем просто нехватка места на диске: это может означать, чтоа) у вас заканчивается свободное ОЗУ,
б) какой-то коренной процесс пишет мусор
/sys/fs/cgroup
, илиc) что-то вызывает создание действительно абсурдного числа контрольных групп, возможно, в стиле классической «бомбы-вилки», но с
systemd
услугами на основе или аналогичными.Нижняя граница
Проверка использования диска должна была быть
/sys
исключена, потому что/sys
на каком-либо диске ничего не хранится.Если вам необходим мониторинг
/sys/fs/cgroup
, вы должны предоставить для него специальный зонд, который будет предоставлять более значимые предупреждения, чем общий зонд дискового пространства.источник
/sys
из моего диапазона мониторинга./proc
и, вероятно,/dev
(потому что, даже если он не поддерживает 100% оперативной памяти, с одной стороны, он содержит несколько файлов и каталогов, которые являются «странными» по-разному, а с другой, если вы на самом деле потребляя тонну дискового пространства/dev
, ваша установка ужасно сломана, и вы должны зажечь весь беспорядок)./sys
Этоsysfs
, полностью RAM на основе виртуальной файловой системы» - я уверен , что содержаниеsysfs
являются 100% синтезируется из находящихся в ядре структур данных и делать не живут в памяти где - то. Фактически, я бы сказал, что «виртуальная файловая система на основе ОЗУ» является оксюмороном: либо она основана на ОЗУ, то есть имеет резервное хранилище (даже если это очень нетрадиционное резервное хранилище для файловой системы), то не виртуальный или виртуальный, то у него нет резервного хранилища.sysfs
что это RAM-диск. Где будут жить структуры данных в ядре, если не в ОЗУ? Я согласен с тем, что слово «виртуальный» здесь проблематично, поскольку вы, возможно, знаете, что поверх всех драйверов файловой системы в ядре Linux находится уровень VFS (Virtual File System), который использует «виртуальный» в еще одном смысле, как единая абстракция для всех возможных файловых систем. Но сложно кратко описать, какproc
и чемsysfs
они отличаются от реальных файловых систем, так как это была просто справочная информация, чтобы сделать основной вопрос.