Der Martin: Auswahl der Blockgröße: So einfach ist das nicht

Beitrag lesen

Mahlzeit,

Dann liest und schreibt dd immer 1MB "am Stück", andernfalls nur sehr kleine Blöcke (512 Byte, also ein Sektor). Und viele kleine Blöcke dauern länger als wenige große.

Warum dann nur 1MB und nicht z.B. 10MB oder 100MB das wäre doch dann noch schneller.

So simpel ist das nicht.

Ich versuche mal eine sehr volkstümliche Erklärung.

deine Ausführungen sind zwar korrekt, haben aber nichts mit der tatsächlichen, physikalischen Sektorgröße einer Festplatte zu tun.

Kommen jetzt die Daten in Blöcken, die zu groß sind, dann muss er diese aufteilen, hat also damit Arbeit.

Nur bedingt. Diese Arbeit erledigen nämlich schon die Treiber für die Festplatte und das Dateisystem.

Welche Blockgröße die richtige ist hängt insbesondere von dem Gerät ab, welches zu beschreiben ist

Genau hier liegt dein Trugschluss, weil die Blockgröße für dd nicht direkt mit der Blockgröße des Speichermediums zu tun hat. Es ist, um es mal salopp zu beschreiben, nur die Größe der Kiste, die ich benutze, um Akten von einem Büro ins andere zu bringen: Benutze ich eine kleine Kiste, muss ich oft hin- und hergehen, das kostet Zeit. Benutze ich eine große Kiste, spare ich Weg ein und kann unterm Strich schneller sein. Das hat aber nichts damit zu tun, wie die Akten in die Fächer im Schrank passen.

dd if=bigfile of=outfile bs=512
204800+0 Datensätze ein
204800+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 6,58058 s, 15,9 MB/s

dd if=bigfile of=outfile bs=1024
102400+0 Datensätze ein
102400+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 3,37245 s, 31,1 MB/s

dd if=bigfile of=outfile bs=2048
51200+0 Datensätze ein
51200+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 1,77845 s, 59,0 MB/s

dd if=bigfile of=outfile bs=4096
25600+0 Datensätze ein
25600+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 0,963437 s, 109 MB/s

dd if=bigfile of=outfile bs=8192
12800+0 Datensätze ein
12800+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 0,936332 s, 112 MB/s

dd if=bigfile of=outfile bs=16384
6400+0 Datensätze ein
6400+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 0,928353 s, 113 MB/s

dd if=bigfile of=outfile bs=32768
3200+0 Datensätze ein
3200+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 0,913329 s, 115 MB/s ***

dd if=bigfile of=outfile bs=65536
1600+0 Datensätze ein
1600+0 Datensätze aus
104857600 Bytes (105 MB) kopiert, 0,910148 s, 115 MB/s

rm bigfile outfile

Wenn du die Blockgröße weiter erhöhst, wirst du feststellen, dass die Brutto-Transferrate noch minimal weiter zunimmt; sie wird asymptotisch gegen einen Idealwert laufen. Nach deiner These müsste aber die Transferrate wieder einbrechen, wenn die Blockgröße deutlich über der des Speichermediums liegt.

Dennoch ein Tipp: Bei modernen Platten würde ich mit einer Blockgröße von 8192 Byte testen, dann halbieren, dann verdoppeln.

Die meisten Festplatten neueren Datums haben AFAIK 4kB große Sektoren.

Also sollte der Test realitätsnäher stattfinden. Wenn man also nicht eine Datei (in ein Dateisystem) schreibt sondern Rohdaten direkt auf die Platte, dann können diese Werte ebenfalls stark abweichen. Sogar von denen, die gemessen werden wenn auf die gleiche Platte in ein Dateisystem geschrieben wird.

Logisch, denn der Dateisystem-Overhead spielt auch eine wichtige Rolle.

Beispiel: Eine USB-Festplatte (USB 2.0) mit 1TB war lange Zeit in FAT32 formatiert. Sie erreichte typische Übertragungsraten von rund 30MB/s. Irgendwann habe ich sie neu mit ext3 formatiert, und plötzlich lag die Transferrate derselben Platte bei etwa 36MB/s.

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy
0 47

welches Linux Tool für Festplatten Image nutzen?

Karl Heinz
  • linux
  1. 1
    Der Martin
    1. 0
      Karl Heinz
      1. 1
        Der Martin
        1. 0
          Karl Heinz
          1. 1
            Der Martin
          2. 1

            Auswahl der Blockgröße: So einfach ist das nicht

            Google weiß alles
            1. 1
              Der Martin
              1. 1
                Google weiß alles
    2. 0
      Karl Heinz
      1. 0
        Der Martin
        1. 0
          Karl Heinz
          1. 1
            Matthias Apsel
            1. 1
              Der Martin
          2. 1
            Der Martin
            1. 0
              Karl Heinz
              1. 1
                Der Martin
                1. 0
                  Karl Heinz
                  1. 1
                    Der Martin
                    1. 0
                      Karl Heinz
            2. 0
              Karl Heinz
              1. 1
                Der Martin
                1. 1
                  Christian Kruse
                2. 0
                  Karl Heinz
                  1. 1
                    Der Martin
                    1. 0
                      Karl Heinz
                      1. 1
                        Der Martin
                        1. 0
                          Tabellenkalk
                          1. 1
                            Shell-Erklärbär
                            1. 0
                              Karl Heinz
                        2. 0
                          Karl Heinz
                          1. 1
                            Shell-Erklärbär
                          2. 1
                            Der Martin
                            1. 0
                              Karl Heinz
                              1. 1
                                Der Martin
                                1. 0
                                  Karl Heinz
                                  1. 1
                                    Der Martin
                                    1. 1
                                      Christian Kruse
                                      1. 0
                                        Der Martin
                                    2. 0
                                      Karl Heinz
                              2. 1
                                Christian Kruse
                                1. 0
                                  Karl Heinz
                                  1. 1
                                    Der Martin
            3. 1
              Karl Heinz
              1. 1
                Der Martin
                1. 0
                  Karl Heinz
                  1. 1
                    Der Martin