Handbuch · Kapitel 25

Speicherbedarf und Chunk-Größe

Zum Inhaltsverzeichnis

Der Bedarf wächst mit der Zahl der Chunks, nicht mit einer Blockgröße. Mit der Standard-Chunk-Größe (Mittel 256 KiB, real etwa 300 KiB) hat 1 TB belegte Quelle rund 3,5 bis 4 Mio. Chunks:

WoBedarf (Größenordnung je TB gespeicherter Daten)
Index des Stores (index.lmdb)einige hundert MB auf der Platte; schnell, wenn er auf SSD liegt (--index-dir)
AgentPuffer der Pipeline (begrenzt), dazu eine Karte der freien Bereiche (höchstens 16 Mi Einträge)
mirror (erster Lauf einer Quelle)liest alle Manifeste, etwa 128 MB je TB
export, Restore aus einem ArchivIndex im Speicher (Datei: etwa 170 MB je TB; Strom von stdin: etwa 112 MB je TB)

bkp_maintenance store-info zeigt die geschätzte Indexgröße. Liegt der Store auf NFS/SMB, muss der Index lokal liegen (--index-dir).

25.1 Wie die Chunk-Größe wirkt#

Der Agent schneidet die Quelle mit FastCDC an inhaltsabhängigen Stellen. Die mittlere Größe (--chunk-size, Zweierpotenz, Standard 256K; das Minimum ist ein Viertel, das Maximum das Vierfache) ist eine Abwägung:

kleinere Chunks (z. B. 64K)größere Chunks (z. B. 1M)
Deduplizierungfindet mehr Gleiches, kleine Änderungen kosten wenigeine kleine Änderung macht einen ganzen großen Chunk neu
Indexgrößer (mehr Einträge)kleiner
Restoremehr einzelne Lesezugriffe, auf HDD langsamerweniger, größere Lesezugriffe
  • Die Größe ist je Store (bzw. Generation) fest; --chunk-size wirkt nur beim Anlegen. Eine neue Generation übernimmt ohne Angabe die Größe der vorigen.
  • Alle Sinks eines Laufs müssen gleich chunken; ein neu hinzukommender Store übernimmt die Größe der anderen.

25.2 Messen statt raten#

Mit --chunk-probe yes (Standard) misst der Agent nebenbei an einer Stichprobe (1/32 der Chunks), wie ein Viertel und das Vierfache der aktuellen Größe dedupliziert hätten, und meldet es dem Store, auch über das Netz. Gespeichert wird davon nichts; es kostet etwa einen weiteren Chunker-Durchlauf. store-info zeigt die Schätzung je Größe und, sobald genug Daten da sind (7 Sicherungen über 5 Tage), eine Empfehlung:

bkp_maintenance store-info --store /backup/default.cbs

Ende der Ausgabe (Testdaten, daher noch keine Empfehlung)

chunk size probe: 2 backup(s) over 0.0 day(s), 2 sample(s) of 256K chunks
SIZE     RUNS    EST. WRITTEN   VS. NOW  COMPR.    EST. INDEX
64K         2        17.4 MiB      +86%    100%       0.6 MiB
256K        2         9.4 MiB     (now)    100%       0.1 MiB
1M          2        33.6 MiB     +258%    100%       0.1 MiB
memory:       1.4 GiB; index on an unknown medium, store on an unknown medium
restores:     1, 188.4 MiB/s, 0.15 ms per read
recommended:  not enough data yet (needs 7 backups over 5 days and 256 samples)

EST. WRITTEN schätzt, wie viel bei dieser Größe über die gemessenen Sicherungen geschrieben worden wäre, EST. INDEX die Indexgröße. In die Empfehlung gehen auch Arbeitsspeicher und Speichermedium ein (passt der Index nicht mehr in den Speicher und liegt er auf einer drehenden Platte, spricht das für größere Chunks); restores zeigt die beim Restore gemessene Geschwindigkeit.

25.3 Chunk-Größe umstellen#

bkp_agent ... --type full --chunk-size 1M

beginnt in allen Sinks des Laufs gemeinsam eine neue Generation mit der neuen Größe. Ältere Runs bleiben in ihrer Generation lesbar, bis prune sie entfernt. Bestehende Runs umzuschneiden (rechunk) ist nicht vorgesehen. Der erste Run der neuen Generation kostet Platz und Zeit wie eine vollständige Sicherung.

Tipp: Bei sehr großen, selten geänderten Volumes auf HDD lohnt eher eine größere Chunk-Größe (Index und Restore), bei vielen kleinen Änderungen und ähnlichen Rechnern in einem Store eher die Standardgröße oder kleiner. Im Zweifel die Empfehlung von store-info abwarten.