Проблема с медленным allocate в libguestfs.
Если вы используете guestfs_fallocate64 для создания файла под виртуальную машину, то на некоторых системах вы можете заметить очень низкую производительность дискового IO в момент создания.
Скорее всего дело в том, что Вы используете файловую систему ext3 для хранения образов виртуальных машин. Ну или у Вас ядро не поддерживает системный вызов fallocate.
Поясню почему возникает проблема:
-
libguestfs проверяет наличие возможности использовать системный вызов fallocate.
- Если такой вызов не поддерживается, то мы просто забиваем нолями нужный объём пространства.
- Если поддерживается, то ядро говорит файловой системе - займи нужное пространство. В таком случае операция выполняется очень быстро.
В файловой системе ext2-3 поддержка fallocate не реализована. Можно использовать fallocate в файловых системах ext4, xfs, btrfs.
Надо бы ещё поисследовать то, как влияет размер inode файловой системы на производительность виртуалок.
Если у вас остались вопросы, напишите мне письмо.