Antworten:
Die Zero-Fill-Methode (hier geändert, um mögliche Speicherengpässe zu vermeiden ) benötigte 17 Sekunden, um eine 10-GB-Datei auf einer SSD zu erstellen, und führte dazu, dass die grafische Oberfläche von Ubuntu nicht mehr reagierte.
$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s
real 0m17.642s
user 0m0.008s
sys 0m9.404s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
fallocate erstellt sofort große Dateien, indem der zugewiesene Speicherplatz der Datei direkt geändert wird:
$ time sh -c 'fallocate -l 10G large; sync'
real 0m0.038s
user 0m0.000s
sys 0m0.016s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
Das Abschneiden funktioniert auch sofort und erstellt spärliche Dateien , die erst dann Speicherplatz beanspruchen, wenn die Daten später geschrieben werden:
$ time sh -c 'truncate -s 10G large; sync'
real 0m0.014s
user 0m0.000s
sys 0m0.004s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
0 large
Eine einfache Möglichkeit wäre, mit dem dd
Befehl eine Datei voller Nullen zu schreiben.
dd if=/dev/zero of=outputFile bs=2G count=1
Verwenden Sie G im Größenargument, wenn Sie Computer-Gigabytes (1024 * 1024 * 1024) oder GB Human-Gigabytes (1000 * 1000 * 1000) möchten.
/dev/urandom
in diesem Fall (es ist nicht blockierend, garantiert jedoch nicht die gleiche Zufälligkeit). Das Ziehen von 2 GB aus einem der beiden Formate erschöpft mit ziemlicher Sicherheit die Entropie Ihres Systems vollständig. Führen Sie anschließend eine Weile lang keine kryptografischen Schritte durch.
ftp://ftp.fsf.hu/testfiles/maketestfiles.sh
oder Suche ist die Größe der gewünschten Datei in Bytes - 1.
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
dd ... bs=2G count=1
Liest 2 GB in den Speicher (in einemread(2)
Aufruf). Wenn Sie Speicherdruck haben, ist das wahrscheinlich nicht der richtige Weg. Mehr, kleinere Blöcke können schneller sein, wenn es weniger Paging bedeutet.