Ich möchte einige Daten auf der Festplatte in Linux speichern. Ich möchte, dass diese Daten in einem kontinuierlichen Festplattenblock auf der physischen Festplatte gespeichert werden. Wenn ich diese Daten in eine normale Datei schreibe, ist der Block, den die Datei belegt, möglicherweise nicht auf der physischen Festplatte fortlaufend. Gibt es eine Möglichkeit, diesen Job zu machen?wie eine Datei in einem kontinuierlichen Festplattenblock in Linux speichern
Antwort
Festplattenpartitionen sind kontinuierliche Bereiche einer Festplatte.
So eine Möglichkeit zu tun, was Sie tun möchten, ist Ihre Festplattenpartitionen, um die Größe und eine neue mit gparted (gnome) oder partition (kde) oder ein ähnliches erstellen - eine angemessene Größe für die Datei.
Sie können dann direkt an Ihre neue Partition schreiben (nicht verwendet und ein Dateisystem zu umgehen), indem Sie die Datei mit:
/dev/sdxn
Wo Angabe SDXn = {sda1, sda2, ..., sdb1, ... ...} usw. ist der Buchstabe/die Nummer der Partition.
Alternativ können Sie beiseite legen eine ganze Festplatte durch direkt an sie zu schreiben (unter Umgehung alltogether Partitionstabelle) unter Verwendung der Datei:
/dev/sdx
Wo sdx = {sda, sdb, sdc, ...} usw. ist der Buchstabe der Festplatte.
Warnung: Machen Sie keinen Tippfehler und schreiben Sie an den falschen (der ein Dateisystem hat) oder Sie werden es verfälschen. Am besten machen Sie einen symbolischen Link ln -s/dev/sdxn/home/fred/mydata und schreiben Sie dann immer in die mydata-Datei.
Der Dateisystemcode (innerhalb des Kernels, z. B. in linux-3.1.6/fs/ext4/
für ext4-Dateisysteme innerhalb der linux-3.1.6-Kernel-Quelle) verwaltet die für eine bestimmte Datei verwendeten Plattenblöcke. Sie können die Festplattenblöcke einiger Ihrer Dateien nicht selbst organisieren. Sie können dem Kernel jedoch einige Hinweise geben, indem Sie seltsame Systemaufrufe verwenden.
Wenn Sie das nicht mögen, könnten Sie das Dateisystem alle zusammen vermeiden, indem Sie direkt auf eine unmounted Partition, z. write(2) syscalls zu einem Dateideskriptor, der von open(2) erhalten wird, z. B. /dev/sda2
; Aber wenn Sie nicht wirklich wissen, was Sie tun (und die Formulierung Ihrer Frage gibt mir das Gefühl, dass Sie die genaue Rolle von Dateisystemen nicht verstehen), werde ich das nicht empfehlen.
Kernel-Dateisystem-Code ist ziemlich gut, und Kernel-Dateisystem-Cache ist sehr effizient.
Wenn Sie Ihre Lesevorgänge beschleunigen möchten, sollten Sie in Betracht ziehen, readahead(2) oder oder madvise(2) Systemaufrufe zu verwenden.
Sie könnten auch, wenn Sie Ihr Dateisystem erstellen, es für Ihre speziellen Zwecke tunen. Zum Beispiel, wenn Sie wissen, dass Sie meist recht große Dateien darin haben, können Sie eine größere als Standard-Blockgröße (zB mke2fs -b 8192
) verwenden, etc ...
Aber denken Sie nicht, dass Software-Tricks würden drehzahl- deutlich Ihre Anwendung erhöhen; Wenn Sie viel Festplatten-IO machen, ist der eigentliche Engpass die Hardware (daher ist die Verwendung von SSD anstelle von Festplatten einfacher).
Es stellt sich heraus, dass EXT4 eine maximale Größe von 128MiB hat, daher können Dateien, die größer sind als EXT4, bei EXT4 nicht zusammenhängend sein. Diese Hinweise, die du erwähnst - gibt es irgendwelche "seltsamen" Systemaufrufe, um den Kernel beim Schreiben anzudeuten? Oder vielleicht, um eine zusammenhängende Datei von Nullen zuzuweisen, auf die dann geschrieben werden kann. Ich werde dies auf FAT32 für LiveCD-ISO-Dateien (normalerweise ~ 700MiB) tun (http://unix.stackexchange.com/questions/80072/contiguous-copy-how-do-i-copy-files-contigigious)) und vorzugsweise auch auf einem '* nix'-Dateisystem. –
Sie können das nicht an ein normales Dateisystem fragen.
Wenn Sie aus irgendeinem Grund zusammenhängende Daten auf dem Datenträger speichern möchten, müssen Sie ein (kostenloses) Raw-Gerät verwenden und das Datenlayout darauf verwalten. Dies tun einige Datenbanken. Beachten Sie, dass selbst in diesem Fall keine Garantie besteht, dass die Blöcke zusammenhängend sind. Das Gerät kann von einer Hardware- oder Software-RAID-Schicht bereitgestellt werden oder ein zvol aus einem ZFS-Pool sein.
- 1. suche eine Datei in linux
- 2. von einem Funktionsblock in eine Datei in Linux
- 3. Wie zu speichern Linux Befehlsausgabe in eine Variable in Puppe
- 4. Eine Datei in Java speichern
- 5. Wie cURL Antwort in eine Datei speichern?
- 6. Wie speichern Trace info in eine Datei
- 7. Wie Pandas Kreisdiagramm in eine Datei speichern?
- 8. Finden Sie eine Datei mit einem passenden Muster in Linux
- 9. Muster in kontinuierlichen Sequenzdaten
- 10. wie ausführt Linux eine Datei
- 11. So senden Sie eine Liste der Datei in einem Ordner an eine TXT-Datei in Linux
- 12. Speichern Sie eine Datei in einem neuen Ordner
- 13. Django: Speichern Sie eine hochgeladene Datei in einem FileField
- 14. eine Datei in Linux löschen, die
- 15. eine Datei hochladen und sie in einem temporären Ordner speichern
- 16. Wie kann ich eine Zusammenfassung (lm) in eine Datei speichern?
- 17. Wie java.util.prefs.Preferences in Datei speichern?
- 18. Struct-Datei in Linux-Treiber
- 19. Express-Anfrageobjekt in eine Datei speichern
- 20. Safari Javascript-Konsole in Datei speichern?
- 21. Maillog Datei in Linux
- 22. wie Datei Löcher in Linux arbeiten
- 23. Speichern von Bildern in eine Datei android
- 24. Java: StreamResult in eine Datei speichern
- 25. Speichern "Bildschirm" (Programm) Ausgabe in eine Datei
- 26. Wie kann ich eine Bewertung in einem Song speichern?
- 27. Wie schreibe ich eine Datei mit C in Linux?
- 28. Datei-Erlaubnis in Linux vs. in Windows
- 29. Speichern von Zahlen in eine Datei
- 30. Speichern docker-compose Protokolle in eine Datei
Warum? Was versuchst du zu erreichen? – Hasturkun