Springe zum Hauptinhalt

Warum man die Performance von /dev/urandom kaum erhöhen kann

Ich baue mo­men­tan ein klei­nes NAS zum Ser­ver um. Mein Ziel ist, ein strom­spa­ren­der klei­nen Ser­ver für un­se­rer Bü­ro­ge­mein­schaft. Na­tür­lich müs­sen die Da­ten dar­auf ver­schlüs­selt wer­den. Die Plat­te vor­her mit Zu­falls­da­ten zu be­schrei­ben er­weist sich als lang­wie­rig.

Dum­mer­wei­se ha­be ich mir ein NAS emp­feh­len las­sen, dass nicht von Haus aus ver­schlüs­seln kann. Ha­be ich nicht auf­ge­pass­t. Da­zu und zu an­de­ren Un­zu­läng­lich­kei­ten des NAS ein an­der­mal mehr. Ich hat­te auch kurz die Ide­e, mir ein an­de­res zu kau­fen, statt viel zeit hin­ein zu ste­cken. Aber wer weiß, ob ich da nicht vom Re­gen in die Trau­fe kä­me.

Das NAS ist ge­roo­tet, De­bi­an ist in­stal­lier­t. Nun baue ich nach die­ser An­lei­tung das ver­schlüs­sel­te RAI­D. Die An­lei­tung ist kurz und gut, und die nö­ti­gen Be­feh­le sind in zir­ka ei­ner hal­b­en Stun­de ein­ge­ge­ben.

Aber: Ein Schritt ist, die Platte mit Zufallsdaten zu beschreiben. Und das dauert ...
... und dauert ...
... und dauert ...
... und ich werde ungeduldig. Das muss man doch beschleunigen können?!

Zu­sam­men­ge­fass­t: Schnel­ler geht nur mit schnel­lem Rech­ner.

Das Kom­man­do

dd if=/dev/urandom of=/dev/md127 bs=10M

lie­fert auf dem NAS 1,8 MB/s, bei 2 TB macht das gu­te 300 Stun­den al­so über 12 Ta­ge. Urgs.

Al­so Plat­te aus­ge­baut, und per USB an den Desktop an­ge­schlos­sen. Hier die Er­geb­nis­se ver­schie­de­ner Ver­su­che (al­le Mes­sun­gen am Desktop):

of=/­de­v/m­d.. (al­so über RAI­D­-­Schicht)

3,8 MB/s

135 Stun­den

5 1/2 Ta­ge

of=/­de­v/m­d.. + Run­le­vel 0

4,0 MB/s

135 Stun­den

5 1/2 Ta­ge

of=/­de­v/m­d.. + ti­mer_en­tro­pyd

3,7 MB/s

135 Stun­den

5 1/2 Ta­ge

of=/­de­v/s­d.. (al­so oh­ne RAIS­-­Schicht)

3,8 MB/s

135 Stun­den

5 1/2 Ta­ge

if=/­de­v/­ze­ro

ca. 66 MB/s

8 Stun­den

1/3 Tag


Meine Erkenntnisse daraus:
  • uran­­dom ist der be­­gren­­zen­­de Fak­tor, nicht der US­B­-­­An­­schluss.

  • Die Block­­grö­­ße ist fast ega­l: Auch grö­­ße­­re und klei­­ne­­re In­­­put­­-­­Blocks (ibs=...) än­­dern nichts Nen­­nens­wer­tes.

  • Mehr Ent­ro­pie bringt kei­­nen Spee­d: Ich da­ch­te, dass uran­­dom schnel­­ler wird, wenn das Sys­tem mehr Ent­ro­pie hat. Da­­zu ha­­be ich ti­­mer_en­tro­­pyd ein­­ge­­setz­t, um die Ent­ro­pie zu be­­kom­­men. Hat nichts ge­­bracht, ja eher ge­scha­­det: Die Per­­for­­man­ce ist leicht ge­­sun­ken.

  • Nach­­den­ken hilft: uran­­dom lie­­fert Psu­e­­do­­zu­falls­­zah­len, rech­­net al­­so und braucht da­­zu CPU­­-­­­Pow­er. Mehr Ent­ro­pie macht die Zu­falls­­zah­len zwar "zu­­fäl­­li­­ger", aber de­ren Er­­zeu­­gen nicht schnel­­ler.

Ich ha­be nun al­so ein paar Stun­den Zeit, zu ent­schei­den, ob es das Ri­si­ko ei­ner Kryp­to­-­At­ta­cke ge­gen mei­ne Plat­te wert ist, sie vor­her 5 1/2 Ta­ge mit Zu­falls­zah­len zu be­schrei­ben.

Portrait von Hartmut Goebel

Hartmut Goebel

Diplom-Informatiker, CISSP, CSSLP, ISO 27001 Lead Implementer

Haben Sie noch Fragen?
Anruf oder Mail genügt:
  +49 871 6606-318
  +49 175 29 78 072
  h.goebel@goebel-consult.de