web analytics

Het belang van de blocksize bij het dd commando

Print Friendly, PDF & Email

Wanneer je onder Linux een gedownloade ISO van een distro wil wegschrijven naar een USB-stick om deze laatste dan te gebruiken als bootable stick, kan je gebruik maken van GUI applicaties zoals de schijfkopieschrijver voor USB. Hieronder de GUI onder Mint MATE 18.2

Onderhuids wordt er wellicht gebruik gemaakt van het dd-commando maar je hebt in feite geen controle op de interne parameters die het tooltje doorgeeft aan het dd-commando.

Ik heb de tijd gemeten om via dit tooltje een ISO (Linux Mint 18.2 MATE 64bit – 1.7 GB) op een 4GB stick (USB2-poort) te plaatsen.

Het volledige proces deed er op mijn desktop 3:12 minuten over.

Dat moet toch sneller kunnen. Laten we het eens rechtstreeks via de terminal proberen met het dd-commando.

dd-commando

De syntax van het dd-commando om een ISO naar een stick te schrijven is heel simpel:

dd if=<pad van je ISO-bestand> of=<USB apparaat>
  • if staat voor Input File
  • of staat voor output file

Concreet is het voor mij dus:

# dd if=/home/alain/Downloads/ISO/linuxmint-18.2-mate-64bit.iso of=/dev/sdf

(Let wel: het dd-commando moet je altijd als root draaien, ofwel via het sudo commando, ofwel als root-gebruiker)

Dit is het eigenaardige resultaat: bijna 9 minuten!!!!

Wat gebeurt er hier?

blocksize parameter

Wel, het dd-commando heeft een parameter die de grootte van de blocksize (bs) bepaalt.

Wat is een block voor het dd-commando?

Volgens wikipedia is dat:

A block is a unit measuring the number of bytes that are read, written, or converted at one time.

Dus de waarde van het blocksize argument laat aan dd weten hoeveel sectoren er ineens gekopieerd moeten worden voor input, output of beide. Als je die niet expliciet meegeeft maakt het dd-commando gebruik van een standaard blocksize van 512 bytes. Deze waarde was in de vorige eeuw wellicht goed omdat de harde schijven toen een sector grootte van 512 bytes hadden, maar vandaag kan je als minimum waarde zeker 1MB meegeven en wellicht kan die waarde nog verhoogd worden.

Het aangepast commando wordt dan:

dd if=<pad naar je ISO-bestand> of=<USB apparaat>bs=<blocksize in bytes>

Het werk-commando wordt dan (voor een blocksize van 4K):

# dd if=/home/alain/Downloads/ISO/linuxmint-18.2-mate-64bit.iso of=/dev/sdf bs=4K

Ik heb enkele test gerund met diverse waardes voor de blocksize en dat zijn de resultaten:

 bs=512 (default) 08:55 min. 3.2 MB/s
bs=4K 03:44 min. 7.7 MB/s
bs=512K 03:36 min 8.0 MB/s
bs=1M 03:32 min 8.2 MB/s
bs=2M 03:42 min 7.8 MB/s
bs=4M 03:48 min 7.6 MB/s
bs=64M 03:35 min 8.1 MB/s
bs=128M 03:36 min 8.0 MB/s

 

Wat kunnen we daaruit besluiten?

  1. De optimale blocksize voor deze setup is een blocksize van 1M en moet ook meegegeven worden
  2. De makers van het GUI-tooltje hebben de optimale parameter voor de blocksize gehanteerd (althans voor mijn specifieke setup).

Het dd-commando heeft nog tal van andere paramaters zoals de ibs (Input blocksize), obs (output blocksize), iflag, … die je kan combineren om tot een nog beter resultaat te geraken,

396 totaal aantal vertoningen, 6 aantal vertoningen vandaag

5 (100%) 1 vote

Geef een reactie

%d bloggers liken dit: