Berechnen Sie die minimale Größe der ext3-Partition für eine bestimmte Datenmenge

2

Diese folgenden ext3-Partitionen enthalten identische Daten. Je größer die Partition, desto mehr Speicherplatz wird für dieselben Dateien benötigt:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/loop11            3965777    561064   3199964  15% [...]
/dev/loop19             573029    543843     29186  95% [...]

Filesystem            Size  Used Avail Use% Mounted on
/dev/loop11           3.8G  548M  3.1G  15% [...]
/dev/loop19           560M  532M   29M  95% [...]

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/loop11          1024000    1656 1022344    1% [...]
/dev/loop19          1024000    1656 1022344    1% [...]

Ich beginne mit einer Partition mit fester Größe, die möglicherweise viel Platz verschwendet, und möchte eine Partition erstellen, die diese Daten aufnehmen kann, aber (fast) nur eine minimale Größe hat. Wie kann ich die minimale Partitionsgröße, die zum Speichern einer bestimmten Datenmenge erforderlich ist, zuverlässig berechnen? Die Datenmenge ändert sich mit der Zeit, und ich muss diese Berechnungen automatisieren.

Daniel Beck
quelle
Ich würde mich freuen, wenn die Person, die abstimmt, einen Kommentar hinterlassen würde, der dies erklärt.
Daniel Beck

Antworten:

4

Hier ist eine Prozedur, die Sie ausprobieren könnten:

  • Erstellen Sie ein Image, das etwas größer ist als erforderlich.
  • Erstellen Sie das Dateisystem direkt im Image. Möglicherweise möchten Sie die Dateisystemparameter festlegen, wie in billc.cn vorgeschlagen.
  • Mounten Sie das Image per Loop und kopieren Sie Ihre Dateien. Aushängen.
  • Verkleinern Sie das Bild mit auf die minimale Größe resize2fs -M. Wenn Sie es vorziehen, verwenden Sie Gparted als grafisches Frontend.

Grundsätzlich resize2fskönnen Sie die von Ihnen gewünschte Berechnung dynamisch ausführen, wobei der von den Dateien tatsächlich belegte Speicherplatz berücksichtigt wird.

Wenn Sie nur die Mindestgröße berechnen möchten, anstatt die Größe tatsächlich zu ändern, verwenden Sie resize2fs -Pstattdessen.

Da Ihre Daten nur wenige hundert Megabyte groß sind, können Sie das Zwischendatenträger-Image im RAM (tmpfs) erstellen, um Zeit in jedem Dateisystem mit freiem Speicherplatz (z. B. / tmp) zu sparen. Ändern Sie die Größe und ddspeichern Sie es dann auf Ihrer Festplatte.

Wenn sich Ihre Daten nach dem Schreiben nicht ändern, sollten Sie stattdessen SquashFS oder ein ähnliches Dateisystem verwenden, das kompakter als ext3 ist. Andernfalls sollten Sie ext2 berücksichtigen, um den Aufwand für Journalling zu vermeiden.

Mechanische Schnecke
quelle
Dadurch bleibt die Image-Datei nach dem Verkleinern der Partition gleich groß. Und obwohl es ohnehin größer als die Partition ist, müssen die Daten nach dieser Partition von diesem Prozess unberührt bleiben. Ich erwähnte, dass die Datenmenge variiert. Es sind in fast allen Fällen mehrere GB. Ich verwende bereits komprimierte Dateisysteme, aber in diesem Fall muss es ext2 sein.
Daniel Beck
@ Daniel Beck: ext2 oder ext3?
Mechanische Schnecke
@ Daniel Beck: Auf meinem System (resize2fs 1.41.12) verkleinert es das Bild. Was meinen Sie mit "Daten nach dieser Partition"?
Mechanische Schnecke
Sorry, ext3, genau wie ich es in der ursprünglichen Frage geschrieben habe. Das Image enthält außerdem mehrere Partitionen, einschließlich des Boot-Sektors. Das ist wahrscheinlich der Grund, warum die Größe für mich nicht geändert wird (und ich eigentlich keine Größenänderung möchte). Ich gebe zu, es ist ein besonderes Problem mit ungeraden Einschränkungen.
Daniel Beck
Warum müssen Sie mehrere Partitionen in Ihr temporäres Image einfügen?
Mechanische Schnecke
2

Sie können die -bOption mkfs(oder mke2fs) verwenden, um die Blockgröße explizit -Tfestzulegen, oder Sie können die Option verwenden, um den Dateityp anzugeben. Überprüfen Sie die Handbuchseite für Details.

Sie müssen möglicherweise auch sicherstellen, dass die Anzahl der Inodes und die Journalgröße angemessen sind.

billc.cn
quelle
Ich benutze bereits -b. Ich reserviere keine Sektoren für root. Ich muss mich allerdings um die Größe des Journals kümmern, ich bin mir im Moment nicht sicher.
Daniel Beck