To częste pytanie - szczególnie w dzisiejszym środowisku środowisk wirtualnych. Niestety odpowiedź nie jest tak prosta, jak można by przypuszczać.
dd jest oczywistym pierwszym wyborem, ale dd jest zasadniczo kopią, która zmusza cię do zapisania każdego bloku danych (w ten sposób inicjując zawartość pliku) ... I ta inicjalizacja zajmuje tyle czasu we / wy. (Chcesz, aby trwało to jeszcze dłużej? Użyj / dev / random zamiast / dev / zero ! Wtedy użyjesz procesora, a także czasu I / O!) Ostatecznie jednak dd jest złym wyborem (choć zasadniczo domyślnie używane przez GUI maszyn wirtualnych „utwórz”). Na przykład:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
obcięcie to kolejny wybór - i prawdopodobnie jest najszybszy ... Ale to dlatego, że tworzy „rzadki plik”. Zasadniczo rzadki plik to sekcja dysku, która ma wiele takich samych danych, a podstawowy system plików „oszukuje”, nie przechowując wszystkich danych, a jedynie „udając”, że wszystko tam jest. Tak więc, gdy używasz skracania, aby utworzyć dysk o pojemności 20 GB dla maszyny wirtualnej, system plików tak naprawdę nie przydziela 20 GB, ale oszukuje i mówi, że jest tam 20 GB zer, mimo że na dysku jest tylko jedna ścieżka może faktycznie (naprawdę) być w użyciu. Na przykład:
truncate -s 10G gentoo_root.img
fallocate jest ostatecznym - i najlepszym - wyborem do użycia z alokacją dysku VM, ponieważ zasadniczo „rezerwuje” (lub „przydziela” całą przestrzeń, której szukasz, ale nie zawraca sobie głowy pisaniem czegokolwiek. kiedy używasz fallocate do utworzenia 20 GB miejsca na dysku wirtualnym, tak naprawdę dostajesz 20 GB pliku (nie jest to „rzadki plik” i nie będziesz się martwić, aby coś do niego zapisać - co oznacza, że praktycznie wszystko może być w tam - trochę jak nowy dysk!) Np .:
fallocate -l 10G gentoo_root.img