Kopieren der Sequenz von Dateien, die physisch aufeinanderfolgend auf der Festplatte abgelegt werden sollen

497
Abraham

Ich habe eine Bildsequenz, die so schnell wie möglich gelesen werden muss, solange es sich wirklich um ein Video handelt, das auf Frames aufgeteilt ist. Wenn also die Bildsequenz nicht fortlaufend auf die Festplatte geschrieben wird, ist die Leistung schlecht, da der Plattenarm den Kopf kontinuierlich nach jeder Datei sucht. Ich muss wissen, wie man Dateien beim Kopieren physisch in der richtigen Reihenfolge auf die Festplatte schreibt. Es werden OSX-, Linux- und Windows-Verfahren benötigt. Vielen Dank.

1
Benötigt Ihre Software einzelne Dateien oder kann sie mit einer einzigen Archivdatei (z. B. tar oder unkomprimierte ZIP-Datei) umgehen? grawity vor 5 Jahren 0
Es muss jede Datei an einen neueren Speicherort kopieren, so wie sie ursprünglich war. Ich muss Dateien auf Laufwerk bestellen, nein, um sie zu komprimieren. Abraham vor 5 Jahren 0
Verwenden Sie eine SSD / Flash-Speicherkarte, um das Problem zu umgehen. Außerdem machen AFAIK Linux-Dateisysteme einen guten Versuch, ** eine einzige Datei ** zusammenhängend zu halten, damit Sie alle Ihre Bilder in eine Archivdatei einfügen und dann das Archiv mit dem Dienstprogramm [Archivemount] (https: //www.linux) mounten können. com / news / mount-archives-fuse-and-archivemount). xenoid vor 5 Jahren 0
Keine Wahl Ich kann weder meine Hardware noch mein Dateisystem ändern. Sie benötigen nur das richtige Werkzeug, um Dateipositionen auf der Festplatte neu zu ordnen. Abraham vor 5 Jahren 0
Linux: Verwenden Sie zusätzliche Festplatten mit einer einzigen Partition. Schreiben Sie die Daten direkt in die Partition. Ich bin mir nicht sicher, was Sie mit "Bilddatei-Reihenfolge" meinen. Wenn Sie bereits vorhandene Dateien an anderer Stelle meinen, verwenden Sie "tar" und schreiben die Ausgabe direkt in die Partition. Wenn Sie fertig sind und nicht mehr an die Leistung gebunden sind, lesen Sie die geschriebene Ausgabe und platzieren Sie sie in einem geeigneten Dateisystem. All dies wird schrecklich scheitern, wenn Sie versuchen, mehr Daten als die Größe der Partition zu schreiben. Sie benötigen auch zwei Schritte. dirkt vor 5 Jahren 0
@dirkt Ich meinte mehrere Bilddateien wie Tiff, DPX, TGA-Dateien. Sie sind alle Teil eines Films und werden zu einer Sequenz, daher sollten sie auf einer Festplatte nacheinander platziert werden, sodass es keine Suchzeiten gibt, die zu Verzögerungen führen und die Leistung beeinträchtigen. Abraham vor 5 Jahren 1
Ist das Problem "Ich habe beim Schreiben von Daten nicht genug Leistung, so verliere ich einige Frames" oder ist das Problem "Ich habe viele Dateien und sie werden nicht schnell genug geladen, daher stottert das Video". Es gibt einige Low-Level-FS-Tools unter Linux, also können Sie * alles in zusammenhängenden Blöcken anordnen, aber höchstwahrscheinlich wird Ihr Problem durch das Vorladen besser gelöst. dirkt vor 5 Jahren 0

2 Antworten auf die Frage

2
K7AAY

Das Dienstprogramm Contig von Sysinternals ist speziell dafür ausgelegt, dies für jeweils eine Datei in Windows-Systemen mit Festplattenspeicher zu tun. Für MacOS oder Linux wurde kein gleichwertiges Contig gefunden.

Wenn Sie jedoch eine SSD verwenden, beachten Sie bitte, dass die Daten in den Zellen der SSD gespeichert werden, wo auch immer sich ihre Firmware dafür entscheidet, dass der Vorteil, dass die Datei zusammenhängend gemäß NTFS geschrieben wird, möglicherweise negiert wird.

Das Contig-Dienstprogramm von sysinternals ist nicht für diesen Zweck gedacht. Es werden nur einzelne Dateien defragmentiert. Es sortiert eine Folge von Dateien nicht sequentiell auf der Festplatte. Ich glaube übrigens, ich habe klar gesagt, dass es keine SSD ist. Wie ich geschrieben habe, ist eine Festplatte (kein Solid State Drive), und ich sagte, dass der Arm den Kopf kontinuierlich bewegt. SSD hat weder Arme noch Köpfe. Und bitte versuchen Sie nicht, meinen Beitrag zu bearbeiten, solange er die ursprüngliche Bedeutung verloren hat und ich zurückrollen musste. Abraham vor 5 Jahren 0
0
Xen2050

Ich glaube nicht, dass Sie das wirklich beantworten können, insbesondere für Linux, Windows und Mac gleichzeitig. Weil:

  • Jedes unterschiedliche Dateisystem kann Dateien an einer anderen Stelle auf der Festplatte ablegen. Versuchen Sie, ein ext3 / 4-Dateisystem zu erstellen, und schauen Sie sich an, wo eine leicht identifizierbare Datei (die beispielsweise alle Dateien enthält a) endet - sie wird wahrscheinlich in "Streifen" über das Gerät geschrieben.
  • Jede andere Festplatte kann eine unbekannte Anzahl von Platten und Köpfen haben und eine unbekannte Art, wie sie zu Sektoren zugeordnet werden
  • Das Betriebssystem oder das Festplattenlaufwerk selbst könnten Sektoren auf eine andere Position auf der Festplatte "neu zuordnen"

Im Allgemeinen klingt das so, als wollten Sie nur eine Dateifragmentierung vermeiden, und Sie können dies tun, indem das Dateisystem beim Schreiben der Dateien leer (oder fast leer) ist.


Wenn Sie nur eine bestimmte Datei in beliebiger Reihenfolge nacheinander schreiben möchten (das Betriebssystem entscheidet jedoch letztendlich, wo die Dateien auf der Festplatte abgelegt werden sollen), können Sie eine Schleife (z. B. unter Linux) verwenden.

while read filename cp filename destination sync done 

Oder ddüberspringen Sie den Puffercache und führen Sie auch einige Synchronisierungen durch:

dd if=filename of=destination/filename oflags=direct,sync 
Nun, da es kommerzielle Lösungen gibt, die dies ermöglichen, können Sie Data Mover von Brisght Technologies überprüfen. Ich denke, dass Systeme Speicherplatz auf der Festplatte reservieren, um alle Informationen zu schreiben. Ich frage nicht nach einer Lösung für alle Betriebssysteme, sondern für jedes eine. Ich weiß, dass es von Dateisystemen und Betriebssystemen abhängt. Es klingelt, dass rsync so etwas machen könnte, aber ich bin mir nicht sicher. Abraham vor 5 Jahren 0
Data Mover hört sich nicht so an, als würde er Volumes direkt anhängen und seine eigenen Sektorschreibvorgänge ausführen. Es muss also ausgewählt werden, welche Dateien zuerst geschrieben werden und das Betriebssystem regelmäßig schreiben muss. Einige der Funktionen unterstützen Folgendes: * "erkennt Sequenzen und ermöglicht das Verwalten dateibasierter Sequenzen, als ob sie eine einzelne Datei wären. Auf diese Weise verhindert DataMover proaktiv das fragmentierte, randomisierte und verschachtelte Dateilayout am Anfang" * und versucht nur, eine Datei zu schreiben auf einmal * "Passen Sie die Anzahl der Copy-Threads und Copy-Puffer nach Ihren Wünschen an. Die Sequenzverwaltung stellt sicher, dass alle Dateien optimal ausgerichtet sind." * Xen2050 vor 5 Jahren 0
Ich denke, du hast es nicht verstanden. Diese Software ist darauf ausgelegt, Dateifolgefragmentierung (und natürlich Dateifragmentierung) zu vermeiden. Abraham vor 5 Jahren 0
Aber das Betriebssystem schreibt Dateien, ein Programm kann dem Betriebssystem nicht genau sagen, wo die Dateien geschrieben werden sollen, welche Datei als nächstes geschrieben werden soll. Bright Technologies schreibt vielleicht ein wenig kreatives Schreiben in ihrem Marketing ;-) Xen2050 vor 5 Jahren 0
Überprüfen Sie die direkten E / A-Konzepte. Sie werden überrascht sein: "Direkte E / A ist eine Funktion des Dateisystems, bei der Datei Lese- und Schreibvorgänge direkt von den Anwendungen auf das Speichergerät übertragen werden, wobei die Lese- und Schreibcaches des Betriebssystems umgangen werden. Direkte E / A wird nur von Anwendungen verwendet (wie Datenbanken), die ihre eigenen Caches verwalten. " Abraham vor 5 Jahren 0
Ich bin mir der direkten E / A bewusst, "dd" kann dies mit "oflag = direct" tun. Wenn dies die Antwort ist, nach der Sie suchen, könnte ich sie bearbeiten? Es verwendet jedoch immer noch das Betriebssystem selbst, um Dateien dort einzubinden und zu schreiben, wo das Betriebssystem dies wünscht, es überspringt nur die üblichen Datenträgerpuffercaches. Eine Meinung ist die folgende: "Dies macht I / O langsamer und lässt Linux nicht verschiedene Optimierungen durchführen es tut normalerweise "* Xen2050 vor 5 Jahren 0
Diese Schleife löst meine Frage nicht. Sie haben keine Kontrolle über den Ort, an dem Sie auf die Festplatte schreiben, auch wenn Sie die Dateifragmentierung nicht vermeiden. Abraham vor 5 Jahren 0
AFAIK auch nicht Data Mover von Brightsoft Technologies ... es verwendet immer noch das Betriebssystem zum Schreiben von Dateien. Und selbst wenn ein Programm Dateien in genau den gewünschten Sektoren geschrieben hat, stoßen Sie immer noch auf das physikalische Layoutproblem der Festplatte - eine Datei könnte leicht zwei verschiedene Platten überbrücken, was die erwähnte Bewegung des Plattenarms / -kopfs verursacht. Wenn Sie wirklich * wirklich * gewollt haben, kann `dd 'auf bestimmte Plattensektoren schreiben, aber Sie werden sicherlich das Dateisystem beschädigen, ohne das FAT / Inode-Äquivalent des Dateisystems zu aktualisieren, und würde auch nicht für gemountete Dateisysteme funktionieren Xen2050 vor 5 Jahren 0