>_ IzzyLab

Практическое задание

Файл с реально выделенными блоками

средне

Создай файл /root/prealloc.img размером ровно 50 MiB, под который реально выделены блоки на диске (не разреженный/sparse). Проверка сравнит видимый размер файла и место, которое он занимает на диске, — они должны совпадать.

Что потренируешь:
  • предвыделение места
  • fallocate
  • sparse vs непрерывный
  • apparent size
  • блоки на диске

Разбор темы

У файла две меры размера: видимый (apparent — сколько байт он логически содержит, показывают ls и stat -c %s) и занятое на диске (сколько блоков под него реально выделено, показывает du). У разреженного файла второе сильно меньше первого: незаписанные диапазоны остаются «дырами» без блоков. Здесь нужен обратный случай — блоки под весь объём должны быть выделены заранее, тогда оба размера совпадут. Для этого есть предвыделение (fallocate), которое резервирует место одним системным вызовом, ничего в него не записывая; наивная заливка нулями через dd тоже займёт место, но медленнее и лишней работой.

Что проверяется

  1. видимый размер ровно 50 MiB
  2. блоки реально выделены (не sparse)

Как это выглядит