Сервер Linux из пространства

Можно или использовать Munin. Это программное обеспечение maby не столь мощный как Nagios и и т.д. но это ОЧЕНЬ гибко, и Вы можете легкое соответствие это быть частью узла для сбора любой информации, в которой Вы нуждаетесь.

31
задан 6 March 2012 в 03:45
6 ответов

Это распространенный вопрос на собеседовании и ситуация, которая возникает в различных производственных средах.

Записи каталога файла были удалены, но процесс регистрации все еще продолжается. Операционная система не будет освобождать пространство до тех пор, пока все дескрипторы файлов не будут закрыты (например, процесс не будет убит) и все записи каталога не будут удалены. Чтобы найти процесс записи в файл, вам нужно будет использовать команду lsof .

Другая часть вопроса иногда может заключаться в том, «как очистить файл, в который выполняется запись, не убивая». процесс?" В идеале вы должны «обнулить» или «усечь» файл журнала с помощью чего-то вроде :> / var / log / logfile вместо удаления файла.

56
ответ дан 28 November 2019 в 19:56

Есть еще одна ссылка на файл (либо жесткая ссылка, либо дескриптор открытого файла). При удалении файла удаляется только запись в каталоге; данные файла и индексный дескриптор хранятся до тех пор, пока последняя ссылка на него не будет удалена.

Это довольно распространенная практика, когда служба создает временный файл и немедленно удаляет его, оставляя файл открытым. Это создает файл на диске, но гарантирует, что файл будет удален, если процесс завершится ненормально, а также предохраняет другие процессы от случайного доступа к файлу. MySQL делает это, например, для всех своих временных таблиц на диске. Вредоносные программы часто используют аналогичную тактику, чтобы скрыть свои файлы.

В Linux вы можете легко получить доступ к этим удаленным файлам как / proc / / fd / .

14
ответ дан 28 November 2019 в 19:56

Я не системный администратор, но, судя по тому, что я собрал на Unix.SE, система Linux фактически не удаляет файл (отметьте пространство как свободное / многоразовое) после него не связывается, пока все указывающие на них файловые дескрипторы не будут закрыты. Итак, чтобы ответить на первую часть, место еще не освободилось, потому что процесс все еще его читает. Чтобы ответить на второй вопрос, вы можете увидеть, какой процесс использует файл с lsof .

8
ответ дан 28 November 2019 в 19:56

Один альтернативный ответ, помимо очевидного ответа жесткой ссылки / открытого файла: этот файл представляет собой (очень) разреженный файл, такой как / var / log / lastlog на RHEL, который не был на самом деле не занимает так много места. Удаление его мало повлияло, поэтому вам нужно посмотреть следующий по величине файл.

2
ответ дан 28 November 2019 в 19:56

Если процесс, записывающий файл, является корневым, он будет записывать в зарезервированное суперпользователем файловое пространство. В файловой системе есть это пространство для поддержания работоспособности системы в случае заполнения диска пользовательской задачей. Это пространство (imho по умолчанию 5%) невидимо для многих инструментов.

lsof может показать вам, какой процесс заблокировал файл, следовательно, пишет в него.

1
ответ дан 28 November 2019 в 19:56

Помимо того, что файл открывается процессом, второй случай - это когда у вас есть файловая система, которая поддерживает снимки, такие как btrfs или ZFS .

Например, вы делаете снимок с существующим огромным файлом журнала. Если вы удалите файл сейчас, вы удалите только дельту. И дельта удаляется только тогда, когда файл не используется.

См. Также:

Третий случай - это когда у вас есть файловая система, которая поддерживает дедупликацию на уровне блоков, и большая часть файла идентична другому файлу. Я не ожидаю, что это произойдет с журналом, если у вас нет контейнера или виртуальной машины, которая отправляет журналы в контейнер системного журнала или виртуальную машину, которые используют одну и ту же FS, так что содержимое журнала идентично.

1
ответ дан 28 November 2019 в 19:56

Теги

Похожие вопросы