Мое предположение описанное выше подтвердились экспериментом и информацией из man страницы.
Эксперимент выполнил без использования виртуальной машины. Думаю так же будет работать и в виртуальной машине, желующие могут проверить.
Создал файл data_1.img с образом виртуального диска:
qemu-img create -f qcow2 -o preallocation=off data_1.img 2T
После создания файл data_1.img имел размер 224KiB. Размер файл проверял командой:
du -h data_1.img
Далее загрузил модуль ядра nbd (Network Block Device)
sudo modprobe nbd
Соединил блочное устройство /dev/nbd0 с файлом образа виртуального диска data_1.img:
sudo qemu-nbd -c /dev/nbd0 data_1.img
Отформатировал блочное устройство /dev/nbd0:
sudo mkfs.ext4 /dev/nbd0
После форматирования размер файла data_1.img увеличился до 1,2GiB. Это вполне нормально, так как при форматировании изменяются блоки, где расположен журнал и изменяются некоторые другие служебные блоки.
Потом я смонтировал устройство /dev/nbd0 в каталог /mnt:
sudo mount /dev/nbd0 /mnt/
После монтирования размер файла data_1.img начал постепенно увеличиваться.
Я запустил утилиту iotop:
sudo iotop
и увидел активность процесса ядра с именем [ext4lazyinit].
Периодический запуск iostat для устройства /dev/nbd0
sudo iostat /dev/nbd0
показал, что увеличивается значение "kB_wrtn", т.е. на блочное устройство идет запись.
И в man 8 mke2fs нашел этому подтверждение. В описании опции lazy_itable_init сказано, что ядро в фоновом режиме завершает инициализацию файловой системы.
lazy_itable_init[= <0 to disable, 1 to enable>]
If enabled and the uninit_bg feature is enabled, the inode table will not be fully initialized by mke2fs. This speeds up filesystem initialization noticeably, but it requires the kernel to finish initializing the filesystem in the background when the filesystem is first mounted. If the option value is omitted, it defaults to 1 to enable lazy inode table zeroing.
Пользователь добавил сообщение 30 Сентября 2021, 00:37:09:
- не придумал сам и не нашёл какого то понятного способа как проверить и подтвердить\опровергнуть, что происходит именно это и именно так. возможно можете что то посоветовать в куда посмотреть?
После монтирования можно использовать iotop для отслеживания процессов с дисковой активностью.
- почему так сильно не разрастаются другие диски, например этой же самой гостевой, но с ОС (на этом конкретном гипервизоре много виртуалок в т.ч. и с разными линуксами, да и конкретно этот эксперимент я проделал уже наверное десяток раз)?
Увеличение файла виртуального диска зависит от размера виртуального диска.
- этот же эксперимент был повторен "на соседнем компьютере", только в качестве гипервизора выступила lubuntu 20.04 и 2Tb диск не стал разрастаться ни после монтирования его в ОС, ни после создания на нём тестового файлика.
Это я не могу объяснить. Если только была ошибка при создании файла виртуального диска и размер получился не 2 Tb, а меньше.