Ich möchte eine große Datei ~ 10G mit Nullen und Zufallswerten erstellen. Ich habe versucht mit:
dd if=/dev/urandom of=10Gfile bs=5G count=10
Es wird eine Datei mit ca. 2 GB erstellt und mit dem Beendigungsstatus '0' beendet. Ich verstehe nicht warum?
Ich habe auch versucht, eine Datei zu erstellen mit:
head -c 10G </dev/urandom >myfile
Es dauert ungefähr 28-30 Minuten, um es zu erstellen. Aber ich möchte, dass es schneller erstellt wird. Hat jemand eine Lösung?
Außerdem möchte ich zum Vergleich mehrere Dateien mit demselben (Pseudo-) Zufallsmuster erstellen. Kennt jemand einen Weg, das zu tun?
dd
aufgrund der Blockgröße. Vielleicht möchten Sie sich diesen Beitrag ansehen: stackoverflow.com/questions/6161823/… er enthält einige gute Antworten zur Berechnung der besten Blockgröße sowie einige Benutzerskripte / -programme und andere Vorschläge, die verwendet werdendd
.Antworten:
Wie wäre es mit der Verwendung von fallocate? Mit diesem Tool können wir Speicherplatz für eine Datei vorbelegen (sofern das Dateisystem diese Funktion unterstützt). Wenn Sie beispielsweise einer Datei mit dem Namen "example" 5 GB Daten zuweisen, haben Sie folgende Möglichkeiten:
Dies ist viel schneller als dd und ordnet den Speicherplatz sehr schnell zu.
quelle
/dev/zero
?truncate
in der Vergangenheit verwendet und festgestellt, dass sie die Datei nicht physisch auf dem Gerät zuordnet und nur eine beliebige große Datei erstellt, bis auf sie zugegriffen wird, unabhängig vom verfügbaren Speicherplatz. Sind Sie sicher, dass dies nicht der Fall istfallocate
? Ich würde es überprüfen, aber ich bin auf einem Handy ...Sie können
dd
eine Datei erstellen, die nur aus Nullen besteht. Beispiel:Dies ist sehr schnell, da nur ein Byte wirklich auf die physische Festplatte geschrieben wird. Einige Dateisysteme unterstützen dies jedoch nicht.
Wenn Sie eine Datei mit pseudozufälligen Inhalten erstellen möchten, führen Sie Folgendes aus:
Ich schlage vor, dass Sie 10M als Puffergröße verwenden (
bs
). Dies liegt daran, dass 10M nicht zu groß ist, Sie aber dennoch eine gute Puffergröße erhalten. Es sollte ziemlich schnell sein, aber es hängt immer von der Geschwindigkeit Ihrer Festplatte und der Verarbeitungsleistung ab.quelle
Mit dd sollte dies eine 10 GB große Datei mit zufälligen Daten erzeugen:
count
ist in Megabyte.Quelle: stackoverflow - Wie erstelle ich eine Datei mit einer bestimmten Größe unter Linux?
quelle
dd if=/dev/urandom of=10Gfile bs=500M count=20
, die mir 10237226010 Bytes in knapp 20 Minuten gab.Beantwortung des ersten Teils Ihrer Frage:
Der Versuch, jeweils einen Puffer von 5 GB zu schreiben, ist keine gute Idee, da Ihr Kernel dies wahrscheinlich nicht unterstützt. Sie erhalten dadurch in keinem Fall einen Leistungsvorteil. 1M auf einmal zu schreiben ist ein gutes Maximum.
quelle
Diese Frage wurde vor 5 Jahren eröffnet. Ich bin nur darüber gestolpert und wollte meine Erkenntnisse hinzufügen.
Wenn Sie einfach verwenden
es wird deutlich schneller arbeiten, wie von Xiaodongjie erklärt. Sie können es jedoch noch schneller machen, indem Sie
eatmydata
like verwendenWas
eatmydata
tut , ist es fsync macht den Disc Schreib schneller deaktiviert.Weitere Informationen finden Sie unter https://flamingspork.com/projects/libeatmydata/ .
quelle
dd
ist von Anfang an schnell genug und heißt aus einem bestimmten Grund libEAT-MY-DATA.