Это общий вопрос, особенно в современной среде виртуальных сред. К сожалению, ответ не так прост, как можно предположить.
dd - очевидный первый выбор, но dd по сути является копией, и это заставляет вас записывать каждый блок данных (таким образом, инициализируя содержимое файла) ... И эта инициализация занимает столько времени ввода-вывода. (Хотите, чтобы это заняло еще больше времени? Используйте / dev / random вместо / dev / zero ! Тогда вы будете использовать процессор, а также время ввода-вывода!) В конце концов, dd - плохой выбор (хотя по сути по умолчанию используется ВМ "создать" GUI). Например:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
truncate - это другой выбор - и, вероятно, самый быстрый ... Но это потому, что он создает «разреженный файл». По сути, разреженный файл - это раздел диска, который содержит много одинаковых данных, и лежащая в основе файловая система «обманывает», на самом деле не сохраняя все данные, а просто «делая вид», что все это есть. Таким образом, когда вы используете усечение для создания 20 ГБ диска для вашей виртуальной машины, файловая система фактически не выделяет 20 ГБ, но обманывает и говорит, что там есть 20 ГБ нулей, хотя всего одна дорожка на диске может фактически (действительно) использоваться. Например:
truncate -s 10G gentoo_root.img
fallocate является окончательным - и лучший - выбор для использования с выделением диска VM, потому что она по существу «резервы» (или «выделяет» все пространства вы ищете, но это не мешает писать что - либо так,. когда вы используете Fallocate для создания виртуального дискового пространства объемом 20 ГБ, вы действительно получаете файл размером 20 ГБ (а не «разреженный файл»), и вам не нужно будет ничего записывать в него - это означает, что практически все может быть в там - вроде как новый диск!) Например:
fallocate -l 10G gentoo_root.img