Сообщество - Лига Сисадминов

Лига Сисадминов

2 297 постов 18 813 подписчиков

Популярные теги в сообществе:

42

Куда могло исчезнуть дисковое пространство? (2/5)

Разрежённые файлы (файлы с "дыркой")

Другая проблема может появиться, например, во время создания бэкапа:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

Тут возникает вопрос. А как из каталога размером 12 мегабайт получился архив на 426 мегабайт, который занял всё место?
Давайте глянем, какой самый большой файл располагается в каталоге /var/lib/docker:

Интересно, откуда у нас образовался 100 гиговый файл на разделе размером в 5 гигабайт?

Копнём дальше:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

Наиболее вероятно, дальнейшее гугление симптомов приведёт вас на страничку wiki, посвящённую разрежённым файлам. И да, здесь мы имеем дело именно с ними (Unix - Профессиональное программирование, стр 157, или М.Керриск - Linux API исчерпывающее руководство, стр. 118).

Да, в описываемом случае Docker использовал в качестве драйвера хранилища Devicemapper, который на данный момент устарел (рекомендуется использовать или overlay2 или fuse-overlayfs для rootless режима). Однако в целом использование разрежённых файлов довольно распространённое решение для хранения файловых систем в файлах, поэтому для devicemapper оно не уникально, и может встречаться достаточно часто.

Заключение

  • Большинство современных файловых систем поддерживают разрежённые файлы. Полный список доступен на вики.

  • Разрежённые файлы - это файлы которые не используют блоки до тех пор, пока туда не будут записаны данные.

  • Разрежённые файлы легко могут быть найдены с помощью однострочника:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

где:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

указывает что нужно искать на машине все объекты с типом файл

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

Эта часть распечатает «разреженность» файла и его полное имя.

На этом этапе вывод будет выглядеть примерно так:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

Если первое число меньше 1.0, то файл считается «разреженным».

Дальше мы фильтруем вывод с помощью awk:

Куда могло исчезнуть дисковое пространство? (2/5) IT, Linux, Гайд, Системное администрирование, Операционная система, Длиннопост

и получаем список разрежённых файлов.

  • Файлы можно конвертировать в разрежённые и обратно

  • Некоторым утилитам (tar, rsync) нужно передать дополнительные аргументы (например "--sparse" для tar) для работы с разрежёнными файлами

Показать полностью 6
9

Ищу помощи в скачивании прошивки для устройства Fortigate

Здравствуйте.

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

Ну или ищу подсказки на ресурс, где можно найти эти прошивки в свободном доступе. Я не нашел.

Заранее спасибо.

39

Куда могло исчезнуть дисковое пространство? (1/5)

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

Тестовая инфраструктура, на которой будем воспроизводить проблемы состоит из виртуалки с Ubuntu 20.04, с установленным стеком LAMP и корневым разделом на 5гигов (потому что больше не понадобится).

Начало каждого инцидента одинаково — мониторинг показывает, что наш веб-сервер не отвечает или внезапно увеличился уровень ошибок.

После оповещения от мониторинга ваша задача первым делом подключиться к серверу по SSH и запустить несколько утилит, для проверки общего состояния сервера: uptime, free, ss, ps и т.д.

Удалённые файлы

Давайте взглянем на первый сценарий. Стандартная проверка для таких случаев:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

Чтобы уменьшить количество выводимых данных (например чтобы убрать из вывода tmpfs или squashfs), применим опцию "-x" к df:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

В любом случае здесь очевидно, что дисковое пространство полностью исчерпано. Давайте найдём виновного:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

У du тоже есть полезная опция "-x", здесь она выполняет задачу исключения из вывода точек монтирования других файловых систем.

Общее пространство, занимаемое корневым разделом, составляет 4,2Gb. То есть у нас должно быть примерно 700Mb свободного места (15% от общего объема). Давайте перепроверим:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

Всё так же. Значения в выводах df и du не совпадают:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

Выглядит довольно запутанно. Объем свободного дискового пространства, сообщаемый df, меньше суммы размеров всех файлов. Чем же тогда занято всё место?
Оно занято удалёнными файлами.

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

В выводе команды lsof выше мы можем видеть, что логи сервера Apache хоть и были удалены, но всё еще заняты процессом (М.Керриск - Linux API исчерпывающее руководство, стр. 379). Особенно часто это происходит из-за неправильно настроенного logrotate. Иногда logrotate удаляет журнал, не сообщая процессу, что ему необходимо закрыть файловый дескриптор. Мы можем получить доступ к данным через /proc/$PID/fd/$DESCRIPTOR_NUMBER:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост
Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост
Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

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

Есть пара возможных вариантов решения:

  1. Вы можете перезапустить сервис, и дескриптор будет освобождён.

  2. Или усечь длину файла до нуля, с помощью truncate:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

Проверяем:

Куда могло исчезнуть дисковое пространство? (1/5) IT, Linux, Системное администрирование, Сисадмин, Длиннопост

Отлично. Проблема решена.

Заключение

  • Процесс (в нашем случае Apache) вызвал системный вызов open, и получил дескриптор файла для работы с ним. Поскольку это файл журнала, он не был закрыт сразу.

  • Тем временем какой-то другой процесс (или тот же самый) пытался удалить файл (вызвал системный вызов unlink).

  • Это уменьшило счетчик ссылок в индексном дескрипторе до нуля, и файл исчез из дерева файлов.

  • Однако ядро не смогло освободить блоки, поскольку всё еще существовал открытый дескриптор, ссылающийся на индексный дескриптор.

  • Как итог у нас есть два возможных решения такой проблемы — обрезать файл или закрыть дескриптор.

P.S. Извиняюсь за картинки. Так и не понял, как здесь можно вставлять stdout без потери форматирования. Если кто-то в комментах подскажет - будет супер.

Показать полностью 11
930

Ох уж эти it собеседования: ситуация №5

-Добрый день. Я хочу у вас работать.

-Вы не умеете работать курами на производстве. Вы нам не подходите.

-Что-что простите?

Ох уж эти it собеседования: ситуация №5 IT, Собеседование, Вакансии, Поиск работы, Эффективный менеджер, IT юмор, Зашакалено
845

Ох уж эти it собеседования: ситуация №4 Мутные конторы из подвала

Однажды, мой знакомый сказал, что его друзья ищут системного администратора себе в контору. До этого момента, у меня ещё не было вакансий "по-знакомству", надо было навёрстывать упущенное.

Во время первого созвона всё шло отлично до слов "когда приедете к нам в офис, вам надо будет спустится в подвал." Весьма многообещающе.

Итак, в назначенный час икс, я пришёл по адресу и... не нашёл конторы. Но мой приключенческий интерес было не остановить, загуглив название и адрес я понял, что контора там всё таки есть, с торца здания пластиковая дверь с небольшой табличкой.

Открыв дверцу и ступив в чертоги неизведанного я понял что происходящее воистину прекрасно - заваленный деревяшками, строительным мусором и пустыми мешками из под штукатурки спуск в... it контору. Видно было, что люди работали над антуражем.

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

"Ну, мне явно сюда..." подытожил я.

Сообщив о своём прибытии, меня направили напрямую к директору, который сидел в единственном чистом кабинете 2.5х2.5 метра, обстановка намекала на приобретение клаустрофобии. Две стены были увешаны сертификатами и благодарственными письмами, что создавало впечатление, что кого-то подпустили к цветному принтеру и он себе случайно распечатал не один, а целых 40 одинаковых грамот, а потом что бы не выбрасывать, использовал их вместо обоев.

Мне быстро протянули анкету, дали ручку и кивнули, очевидно это значило "заполняй".

Как же давно у меня не было собеседований с анкетами...

"На какую вакансию вы претендуете?" - как будто комплекс самозванца сошёл на бумагу, я даже задумался, а собственно на что я претендую?

"ФИО" - на этой строке можно было выдохнуть ибо от неё веяло адекватностью, к сожалению это была последняя адекватная строка в анкете.

"Укажите ваши паспортные данные" - что-что простите? Здесь я остановился и начал просматривать анкету дальше.

"номер военного билета", "номер вашей машину, марка, номер водительских прав, год машины, цвет, состояние машины" - зачем расспрашивать меня про машину если я сисадмин? но всё по порядку.

"в случае вашей болезни, кто согласен выйти вместо вас на работу" - вопросы становились всё безумнее и безумнее.

"Укажите ФИО и телефон вашего прошлого директора, сколько человек работало под вашим руководством, какую вы зарплату получали, сколько зарабатывала ваша организация за год?" - здесь я уже не выдержал и задал директору вопрос "а мне обязательно отвечать на то, что в принципе не относится к работе?"

Директор мрачно посмотрел и произнёс "Дьявол скрывается в мелочах". Собственно после этого ответа можно было уже уходить, ибо чего-то более эпичного тут можно было и не ожидать.

"Если тебя что-то не устраивает - уходи"

Собственно я встал и ушёл. Пару раз пересказав эту историю друзьям я задумался, а почему я собственно не прогуглил информацию об этой фирме раньше?

Импровизированное расследование показало что в этой фирме только 2 человека работает официально - директор и бухгалтер. Все остальные - на птичьих правах (со всем моим уважением к птицам). Так же было несколько негативных отзывов о текучке и постоянном кидание работников на деньги. Ну и как вишенка на торт - более 50 исковых заявлений в суд, то в качестве истца, то в качестве ответчика.

А ведь действительно, Дьявол скрывается в мелочах. Если такие мелочи не проверять, то можно очень крупно влипнуть в неприятности.

Показать полностью
Отличная работа, все прочитано!