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) для работы с разрежёнными файлами

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

2.3K постов18.8K подписчиков

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.