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