Určitě jste se již nejednou setkali s případem, kdy jste potřebovali vytvořit nějakou sadu testovacích souborů, které jsou poté použity pro testování rychlosti přenosu. Pokud se jedná o menší soubory, lze tohoto dosáhnout například pomocí příkazu dd.
Příkaz dd je velmi rozšířený a dobře známý pro manipulaci s daty. Základní syntaxe příkazu dd je vidět níže.
$ dd id=/dev/zero of=file.img count=5 bs=10M
Tento příkaz vytvoření v aktuálním adresáři soubor o velikosti 5 x 10MB, tento soubor bude plný nul (jako zdroj je použit /dev/zero). Rychlost tohoto příkazu je omezena vlastní rychlostí úložiště. V případě běžných rotačních disků se rychlost zápisu pohybuje okolo 100MB/s.
V případě, kdy je nutné vytvořit soubory o velikosti v řádech 100 MB a více, je nevhodné používat příkaz dd, neboť vlastní vytvoření souboru by trvalo řádově minuty a více. Pro tyto případy je vhodné použít příkazu fallocate.
Příkaz fallocate je specialitou linuxu (jedná se o syscall), který neprovádí vlastní alokaci místa na disku, ale pouze upraví tabulku souborů, která je pro každý filesystem spravována. Ukázkový příkaz je opět zobrazen níže.
$ fallocate -l 10M file.img
Vlastní porovnání rychlosti alokace je zobrazeno níže, z těchto výpisů lze vidět, že fallocate je řádově rychlejší a nezávislý na velikosti alokovaného souboru
$ time fallocate -l 100M file.img real 0m0.023s user 0m0.000s sys 0m0.000s $ time dd if=/dev/zero of=file.img count=50 bs=2M 50+0 záznamů přečteno 50+0 záznamů zapsáno 104 857 600 bajtů (105 MB) zkopírováno, 0,56809 s, 185 MB/s real 0m0.588s user 0m0.000s sys 0m0.136