Was ist das Konsolenäquivalent des folgenden Python-Codes:
target = file("disk", "w") # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()
Vielleicht eine DD-Beschwörung? Die Idee ist, eine Datei mit einer scheinbaren Größe von 2 GB zu erstellen, die z. B. für die Virtualisierung verwendet werden kann.
kvm disk -cd whatever.iso #Only allocate space as necessary
files
dd
sparse-files
badp
quelle
quelle
dd
ist das einzige traditionelle Tool, das denseek
Systemaufruf aufdeckt (siehe dd vs cat - ist dd heutzutage immer noch relevant? Es gibt jedoch andere Möglichkeiten, diese Katze auf typischen aktuellen Unices zu häuten.Antworten:
Im Allgemeinen verwenden Sie einfach
dd
; Wenn Sie jedoch die Verwendung der KVM-Virtualisierung erwähnen, sollten Sie Folgendes in Betracht ziehenqemu-img
:Es macht das gleiche wie der
dd
Befehl in der Antwort von Chris Down, effektiv.Unabhängig davon, welchen Befehl Sie für die Verwendung in der Virtualisierung verwenden, empfehle ich dringend,
fallocate
Blöcke vorab zuzuweisen, um eine Fragmentierung zu verhindern und die Leistung zu steigern.Es ist jedoch nicht auf allen Plattformen und Dateisystemen verfügbar. Dies schreibt keine Nullen, sondern weist der Datei nur Blöcke zu, anstatt dies bei Bedarf später jedes Mal zu tun, wenn die Datei erweitert werden muss.
quelle
qemu-img
unddd
beide führen einen Systemaufruf aus, um die Dateigröße festzulegen (ftruncate), führen aber viel mehr aus, um sich selbst und die Bibliotheken, mit denen sie verknüpft sind, zu laden. Und in dieser Hinsichtdd
wird es viel effektiver sein alsqemu-img
(was viel größer ist und mit viel mehr Bibliotheken verbunden ist). GNUtruncate
wird noch effektiver.dd
hat auch den Vorteil, allgegenwärtig zu sein. Guter Punkt überfallocate
obwohl.qemu-img
nur eine offensichtliche Alternative für die Verwendung der KVM-Virtualisierung ist.Sie können eine Sparse-Datei wie folgt erstellen
dd
:quelle
2G
ist eine GNU-Erweiterung zudd
. Sie können verwenden,bs=1024 seek=2097152
wenn Sie GNU nicht habendd
.G
ist eine Erweiterung und wird von OpenBSDs Version von dd nicht unterstützt ... aberM
undK
werden unterstützt, also ist es vielleichtseek=2048M
ein bisschen besser lesbar, abhängig von den Plattformen, auf die Sie abzielenSiehe auch den GNU-
truncate
Befehl:quelle