Speicherplatz minimieren
Norbert
- programmiertechnik
Hallo,
in 256 Ordnern befinden sich insgesammt 58.162 Dateien. Jede Datei ist 32 Byte gross, jedoch der belegte Speicherplatz auf dem Datentraeger betraegt pro Datei 4.096 Byte und somit 227MB statt 1.77MB. Zur Info: Die Plattengroesse ist 26GB mit 23% Auslastung.
Wie kann man diesen Aufwand verkleinern ...
Gruss und Dank
Norbert
Hallo,
in 256 Ordnern befinden sich insgesammt 58.162 Dateien. Jede Datei ist 32 Byte gross, jedoch der belegte Speicherplatz auf dem Datentraeger betraegt pro Datei 4.096 Byte und somit 227MB statt 1.77MB. Zur Info: Die Plattengroesse ist 26GB mit 23% Auslastung.
Schwierig zu sagen. Wenn man wüsste, um welches Betriebssystem es geht, und welches Dateisystem verwendet wird, könnte man mehr sagen.
Gruß
Stareagle
Hallo Stareagle,
Wenn man wüsste, um welches Betriebssystem es geht,
und welches Dateisystem verwendet wird, könnte man mehr sagen.
sorry,
haste natuerlich recht!
OS: XP prov SP2
FS: NTFS
Gruss und Dank
Norbert
Hmm,
haste natuerlich recht!
OS: XP prov SP2
FS: NTFS
eine Möglichkeit wäre, die Daten auf eine kleine Partion (512 Megabyte oder weniger) zu packen. Dann verwendet NTFS eine Clustergröße von 512 Bytes. Dadurch würde sich der Platzbedarf auf 28,4 Megabyte reduzieren.
(zu den technischen Details zu NTFS s. hier: http://de.wikipedia.org/wiki/NTFS
Wenns ein Linux wäre hätte man event. noch ein paar mehr Möglichkeiten, was Dateisysteme angeht.
Ansonsten: Wenns ein von dir geschriebenes Programm ist, solltest du überlegen, ob die Datei aus den Dateien anders als in Dateien speichern kannst (Datenbank z.B. sqlite). Oder ob man die Daten in einer großen Datei zusammenfassen kann.
Gruß
Stareagle
Hi Stareagle,
Wenns ein von dir geschriebenes Programm ist
jenau,
aber ich habe es nur auf Performace getrimmt.
Die Dateinamen sind alle 32 Byte lang, der Inhalt ist auch 32 Byte lang und stellt den Dateinamen des eigentlichen Suchergebnisses dar.
D.h. man muss nicht suchen sondern erzeugt einen MD5 Hash, was der erste Dateiname ist und der gefundene Dateiinhalt ist der Dateiname des Zieles, fertig. Damit schlaegt man jede Datenbank um Laengen.
Na-ja, bis eben auf den Plattenplatz, aber irgendwas ist ja immer.
Mal eine andere Frage:
Kann man nachtraeglich eine 512-er Partition irgendwo abzwacken?
Plattenplatz waere ja reichlich vorhanden, nur eben keine freien Partitionen.
Nur wie wirkt sich eine weitere Partition auf die Performace aus?
Rein theoretisch ist jede neue Partition ein zusaetzliches Hindernis ...
Gruss und Dank
Norbert
Hallo nochmals,
Mal eine andere Frage:
Kann man nachtraeglich eine 512-er Partition irgendwo abzwacken?
Plattenplatz waere ja reichlich vorhanden, nur eben keine freien Partitionen.
Ja, das geht. Leider nicht mit Windows Bordmitteln. Vom Namen her sind mir Acronis Disk Director und Symantecs Partion Magic bekannt. Außerdem gibt es noch xfdisk.
Welches Programm wie gut ist, kann ich leider nicht sagen, da ich Linux User bin, und Windows nur noch selten nutze.
Nur wie wirkt sich eine weitere Partition auf die Performace aus?
Rein theoretisch ist jede neue Partition ein zusaetzliches Hindernis ...
Ich denke nicht, dass ein weitere Partitionen Einfluss auf der Performence haben. Du greifst ja nur auf eine anderen Laufwerksbuchstaben zu...
Hier zeigt sich mal wieder eine Schwäche von Windows... Unter einem Unix könntem an einfach eine neue Partition anlegen und an die Stelle des alten Verzeichnisses mounten. Ein Programm würde es gar nicht mitbekommen...
Ansonsten: Ich denke ein kleine eingebettete Datenbank wie z.B. sqlite kaum Einfluss auf die Performence hat. Im Zweifen müsste man das ausprobieren.
Gruß
Stareagle
Hallo,
Hier zeigt sich mal wieder eine Schwäche von Windows... Unter einem Unix könntem an einfach eine neue Partition anlegen und an die Stelle des alten Verzeichnisses mounten. Ein Programm würde es gar nicht mitbekommen...
Welche Schwäche? Unter einem halbwegs modernen Windows (spätestens ab 2000)
kannst Du einfach eine neue Partition anlegen, formatieren und in das alte
Verzeichnis mounten. Ein Programm würde es gar nicht mitbekommen ... [1]
Freundliche Grüße
Vinzenz
[1] Sicher hat Windows Schwächen - und die Laufwerksbuchstaben gehören dazu.
Das von Dir angeführte Feature ist jedoch kein Alleinstellungsmerkmal
unixoider Betriebssysteme.
Hi Norbert
Na-ja, bis eben auf den Plattenplatz, aber irgendwas ist ja immer.
Ich würde die kleinen Dateien in ein Archiv a la *.zip umleiten. Dann hast du nicht das Problem mit der Clustergröße.
Uwe
Hallo,
Eure Hinweise haben mich zu folgenden Moeglichkeiten gefuehrt:
Mit der Datentraegerverwaltung unter XP kann man z.B. eine Partition in mehrere Partitionen aufspalten, die dann alle frisch formatiert sind. Also vorab schoen backuppen, oder wie man das sonst nennt. Alternativ kann man auch eine vorhandene Partition neu formatieren und dabei die Clustergroesse auf 512 Byte festlegen, da diese unter XP frei waehlbar ist.
Welche Loesung sich wie auf die Performace auswirkt, wird man untersuchen muessen.
PS:
Apropos Linux-User, ein BS welches man mit einem klitzekleinen Loop von einem Gastaccount total gegen die Wand fahren kann, hat keine Berechtigung das Kinderzimmer zu verlassen. Leider ist mir kein aktuelles BS bekannt, welches dagegen gefeit ist.
Doch wahre Masochisten haben einen Linux-Desktop und betreiben die Server unter Win-Irgendwas ... ;-)
Gruss und Dank
Norbert
Norbert
Soviele Minidateien sind doch völliger Overkill. Warum versuchst du es nicht mit einem sogenannten "Single File System" wie ich dir vorgeschlagen habe? Das kannst du unter Windows sogar noch in eine Memory Mapped File laden und damit den Zugriff erheblich beschleunigen. Zwei Fliegen mit einer Klappe: wesentlicher geringerer Platzverbrauch bei nahezu gleicher Geschwindigkeit. Ich weiß natürlich nicht, wie bewandert du in der Programmierung bist...
Ciao
Uwe
Portland, Oregon
Hallo Uwe,
Soviele Minidateien sind doch völliger Overkill.
Warum versuchst du es nicht mit einem sogenannten "Single File System" wie ich dir vorgeschlagen habe?
hmm,
erstens, weil das AidAim Single File System 95,-$ kostet,
zweitens, weil ich einen hohen Performaceverlust befuerchte,
drittens, weil eine Loesung mit MySQL langsamer als der "Overkill" war,
viertens, weil es keine plattformunabhaengige Loesung waere.
Ich weiß natürlich nicht, wie bewandert du in der Programmierung bist...
na-ja,
ich bin kein Freak, habe also noch andere Hobbys mit einer hoeheren Prioritaet.
Aber meine Familie muss nicht hungern ... ;-)
Auwieles Norbert
Westerwald
Hi Norbert
unter Delphi hätte ich dir ein paar kostenlose Freeware Komponenten nennen können, bei denen der Performance Verlust gleich null ist. Ich verwende diese Komponenten selber in meinen Programmen. Plattformunabhängigkeit kannst du leider vergessen - läuft nur unter Windows.
Gruß
Uwe
Portland, Oregon
Moin!
in 256 Ordnern befinden sich insgesammt 58.162 Dateien. Jede Datei ist 32 Byte gross, jedoch der belegte Speicherplatz auf dem Datentraeger betraegt pro Datei 4.096 Byte und somit 227MB statt 1.77MB. Zur Info: Die Plattengroesse ist 26GB mit 23% Auslastung.
Wie kann man diesen Aufwand verkleinern ...
Spendiere deinen Daten etwa 2 MB RAM und fasse dieses RAM zur dauerhaften Speicherung in EINER Datei zusammen.
- Sven Rautenberg