Linuxové násroje hlavičkový obrázek

Rychlá alokace velkých souborů

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

 


Posted

in

by

Tags: