Norbert: Speicherplatz minimieren

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

            1. 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.

          2. 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

  2. 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

    1. 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

      1. 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

        1. 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

  3. 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

    --
    "Love your nation - respect the others."