ZFS-Äquivalent von lvdisplay snap_percent

ZFS-Äquivalent von lvdisplay snap_percent

Ich habe LVM-Snapshots zum Sichern von MySQL-Datenbanken verwendet.

FLUSH TABLES WITH READ LOCKwird ausgegeben und dann lvcreate --snapshot --size 4Gusw. Da die Datenbank live ist, während der Snapshot aktiv ist, snap_percentbeginnt die (Menge des Snapshot-Speichers, die zum Verfolgen von Deltas mit dem ursprünglichen Zustand des Dateisystems zum Zeitpunkt der Snapshot-Erstellung verwendet wird) zu steigen. Dies snap_percentwird täglich überwacht und erhöht, --sizefalls es 80 % erreicht.

Meine Frage ist, ob es eine entsprechende Statistik oder Eigenschaft gibt inZFSum zu bestimmen, wie viel Speicherplatz von einem Snapshot als Prozentsatz des im Pool verbleibenden Speicherplatzes verbraucht wird? Natürlich muss ich keinen --sizeParameter übergeben, zfs snapshotaber wie kann ich bestimmen, ob der auf diesem Snapshot basierende Klon die Grenzen des Pools erreicht.

Ich hoffe, das ist verständlich, denn nachdem ich es so gelesen habe, klingt es auf jeden Fall wie eine verworrene Frage.

Antwort1

Der ZFS-Snapshot-Speicherplatz spiegelt sich im Verbrauch des Dateisystems wider. Sie können ableiten, wonach Sie suchen, indem Sie die am besten geeigneten Felder unten überwachen.

Am Ende werden Sie den „verfügbaren“ Speicherplatz Ihres Dateisystems beobachten … Sehen Sie, warum „verwendet“+„verfügbar“ kleiner ist als „Größe“?:

root@deore:~# df -h /volumes/vol1/LA_Specialty
Filesystem             size   used  avail capacity  Mounted on
vol1/LA_Specialty      800G   391G   254G    61%    /volumes/vol1/LA_Specialty

Ich habe die Ausgabe zfs get all pool/filesystemunten gefiltert, um die relevanten Eigenschaften anzuzeigen. Unten habe ich ein 800 GB großes Dateisystem (Kontingent), von dem 545 GB verwendet werden. 391 GB sindreferenziert, d. h. dies ist die Größe der tatsächlichen Daten. 154 GB werden von Snapshots verwendet.

root@deore:/volumes# zfs get all vol1/LA_Specialty
NAME               PROPERTY              VALUE                       SOURCE
vol1/LA_Specialty  type                  filesystem                  -
vol1/LA_Specialty  creation              Sat Sep 24 18:44 2011       -
vol1/LA_Specialty  used                  545G                        -
vol1/LA_Specialty  available             255G                        -
vol1/LA_Specialty  referenced            391G                        -
vol1/LA_Specialty  compressratio         2.96x                       -
vol1/LA_Specialty  quota                 800G                        local
vol1/LA_Specialty  reservation           none                        default
vol1/LA_Specialty  recordsize            16K                         local
vol1/LA_Specialty  mountpoint            /volumes/vol1/LA_Specialty  inherited from vol1
vol1/LA_Specialty  usedbysnapshots       154G                        -
vol1/LA_Specialty  usedbydataset         391G                        -
vol1/LA_Specialty  usedbychildren        0                           -
vol1/LA_Specialty  usedbyrefreservation  0                           -

Wenn Sie sich dann die Schnappschüsse ansehen, können Sie die individuelle Größe der Schnappschüsse und die Gesamtdatengröße sehen, auf die sie verweisen.

root@deore:/volumes# zfs list -t snapshot      
NAME                                               USED  AVAIL  REFER  MOUNTPOINT
vol1/LA_Specialty@snap-daily-1-2013-09-07-020003  57.6G      -   389G  -
vol1/LA_Specialty@snap-daily-1-2013-09-08-020003  1.95G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-09-020008  3.42G      -   392G  -
vol1/LA_Specialty@snap-daily-1-2013-09-10-020003  3.05G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-11-020003  2.81G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-12-020004  2.65G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-13-020003  2.70G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-14-020003    25K      -   391G  -
vol1/LA_Specialty@snap-daily-1-latest               25K      -   391G  -

Und eine duAuflistung des Snapshot-Verzeichnisses ...

root@deore:/volumes/vol1/LA_Specialty/.zfs/snapshot# du -skh *
 389G   snap-daily-1-2013-09-07-020003
 391G   snap-daily-1-2013-09-08-020003
 392G   snap-daily-1-2013-09-09-020008
 391G   snap-daily-1-2013-09-10-020003
 391G   snap-daily-1-2013-09-11-020003
 391G   snap-daily-1-2013-09-12-020004
 391G   snap-daily-1-2013-09-13-020003
 391G   snap-daily-1-2013-09-14-020003
 391G   snap-daily-1-latest

Antwort2

ZFS-Snapshots enthalten viele versteckte Daten. Generell empfehle ich

zfs list -ro space

Das Ergebnis ist ungefähr wie folgt:

NAME                                 AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rootpool/export/home                 6.37G  11.7G     2.80G   8.87G              0          0
rootpool/export/[email protected]            -   134M         -       -              -          -
rootpool/export/[email protected]            -   320M         -       -              -          -
rootpool/export/[email protected]            -   251M         -       -              -          -
rootpool/export/[email protected]             -  1.02M         -       -              -          -
rootpool/export/[email protected]             -  1.04M         -       -              -          -
rootpool/export/[email protected]             -   850K         -       -              -          -
rootpool/export/[email protected]             -   747K         -       -              -          -
rootpool/export/[email protected]             -   326K         -       -              -          -
rootpool/export/[email protected]             -   454K         -       -              -          -
rootpool/export/[email protected]             -   319K         -       -              -          -

Dies zeigt Ihnen, dass ich insgesamt 11,7 G für diesen bestimmten Datensatz verwende und dass 2,8 G von Snaps und 8,87 G vom eigentlichen Dateisystem (aktive Daten) verwendet werden. Die verwendete Größe neben jedem Snapshot ist jedoch sehr irreführend.

Wenn Sie alle Zahlen in der Spalte „used“ für den Snapshot addieren, werden Sie feststellen, dass sie nicht annähernd den USEDSNAP-Gesamtwert erreichen. Dies liegt daran, dass der USED-Wert angibt, wie vieleinzigartigSpeicherplatz, den jeder Snapshot einnimmt.

Zum Beispiel:

Wenn ich einen Pool mit dem Namen „newpool“ habe und dieser zwei 1G-Dateien enthält (fileA und fileB):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0

Jetzt schnapp ich mir das:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0
 newpool@snap1              11.0G    0.0G     0.00G   2.0G              0          0

Jetzt lösche ich 1 der 1G-Dateien (Datei A):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

Nun erstelle ich eine neue 1G-Datei (fileC):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

Jetzt schnapp ich es wieder

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

Jetzt lösche ich Datei B (die in beiden Snapshots enthalten ist):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     2.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

Beachten Sie, wie sich die Spalte „USED“ des Snapshots geändert hat.nichtdie Änderung widerspiegeln? Das liegt daran, dass Datei B von beiden Snapshots referenziert wurde und da sie nicht eindeutig ist, wird sie nicht in der USED-Anzahl für einen bestimmten Snapshot angezeigt. Die Spalte USEDSNAP spiegelt wider, dass der Speicherplatz von den Snapshots verwendet wurde, ordnet ihn aber keinem bestimmten zu.

Wenn Sie jetzt Snap1 entfernen würden:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap2                  -    1.0G         -      -              -          -

snap2 zeigt nun an, dass 1,0 G verwendet werden, da diese Daten nun für diesen Snapshot eindeutig sind.

Die Spalte „VERWENDET“ zeigt Ihnen, wie viel Speicherplatz Sie zurückgewinnen können, wenn Sie diesen einzelnen Snapshot löschen. Sie zeigt Ihnen jedoch nicht, wie viel Speicherplatz dieser Snapshot tatsächlich reserviert.

Nachdem ich das alles nun gesagt habe -

Wenn Sie nur einen Snapshot eines bestimmten Datensatzes speichern möchten, dannzfs-Liste -ro LeerzeichenDer Befehl sollte Ihnen geben, wonach Sie suchen.

Wenn Sie mehrere Snapshots gleichzeitig haben, können diese Daten irreführend sein. Gehen Sie nicht davon aus, dass die Spalte USED bei mehreren Snapshots eine Bedeutung hat. Außerdem:duist eine schlechte Wahl für die Snapshot-Verzeichnisse, da Ihnen dadurch nur angezeigt wird, worauf der Snapshot verweist, und nicht, wie viel Speicherplatz der Snapshot tatsächlich verwendet.

Einiges davon wird auf der Manpage von ZFS erläutert, die Zusammenhänge werden dort jedoch nicht besonders gut dargestellt.

Antwort3

Es gibt kein direktes Äquivalent in ZFS. Das nächste Äquivalent ist der freie Speicherplatz im Pool, den Sie von abrufen können zfs list. In ZFS können Ihre Snapshots so lange wachsen, bis der gesamte Pool keinen Platz mehr hat.

verwandte Informationen