ZFS lvdisplay snap_percent に相当するもの

ZFS lvdisplay snap_percent に相当するもの

私は MySQL データベースのバックアップに LVM スナップショットを使用しています。

FLUSH TABLES WITH READ LOCKが発行され、その後、lvcreate --snapshot --size 4Gなどとなります。スナップショットがアクティブな間はデータベースがライブであるため、snap_percent(スナップショットが取得された時点のファイルシステムの元の状態との差分を追跡するために使用されるスナップショット ストレージの量) が増加し始めます。これはsnap_percent毎日監視され、--size80% に達すると増加します。

私の質問は、同等の統計や特性がZFSスナップショットによって消費されているスペースの量を、プールの残りスペースの割合として判断するにはどうすればよいでしょうか。明らかに、パラメーターを渡す必要はありません--sizezfs snapshot、そのスナップショットに基づくクローンがプールの制限に近づいているかどうかをどのように判断すればよいでしょうか。

うまく意味が通じているといいのですが、今読んでみると確かに複雑な質問のように思えます。

答え1

ZFS スナップショット スペースは、ファイルシステムの消費量に反映されます。以下の最も適切なフィールドを監視することで、要求している内容を把握できます。

最後に、ファイルシステムの「avail」スペースを確認します...「used」+「avail」が「size」よりも小さいことがわかりますか?:

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

関連するプロパティを表示するために、以下の出力をフィルタリングしましたzfs get all pool/filesystem。以下では、800GBのファイルシステム(クォータ)があり、そのうち545GBが使用されています。391GBは参照つまり、これが実際のデータのサイズです。154GB はスナップショットによって使用されます。

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                           -

次にスナップショットを見てみると、スナップショットの個々のサイズと、それらが参照するデータの合計サイズを確認することができます。

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  -

duスナップショット ディレクトリのリスト...

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

答え2

ZFSスナップショットには多くの隠しデータが含まれています。一般的には、

zfs list -ro space

次のような出力が表示されます:

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

これにより、この特定のデータセットで合計 11.7G が使用されており、そのうち 2.8G がスナップによって使用され、8.87G が実際のファイルシステム (アクティブ データ) によって使用されていることがわかります。ただし、各スナップショットの横にある USED サイズは非常に誤解を招きやすいものです。

スナップショットの使用済み列の数字をすべて合計すると、USEDSNAPの合計にはまったく近づかないことがわかります。これは、USED値がスナップショットの使用済み量であるためです。個性的各スナップショットが保持するスペース。

例えば:

「newpool」という名前のプールがあり、そこに 1G のファイルが 2 つ (fileA と fileB) ある場合:

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

今私はそれをスナップします:

 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

ここで、1G のファイルのうち 1 つ (fileA) を削除します。

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

ここで、新しい 1G ファイル (fileC) を作成します。

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

今またスナップする

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

ここで、ファイルB(両方のスナップショットにある)を削除します。

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

スナップショットUSED列がどのようになっているかに注目してくださいない変更が反映されるでしょうか? これは、fileB が両方のスナップショットによって参照されており、一意ではないため、特定のスナップショットの USED カウントに表示されないためです。USEDSNAP 列は、スペースがスナップショットによって使用されたことを反映しますが、特定のスナップショットに関連付けられるわけではありません。

ここで snap1 を削除すると:

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

snap2 では、データがそのスナップショットに固有になったため、1.0G が使用されていることが示されます。

USED​​ 列には、個々のスナップショットを削除した場合にどれだけのスペースを再利用できるかが表示されますが、そのスナップショットが実際にどれだけのスペースを予約しているかは表示されません。

ここまでお話ししましたが、

特定のデータセットのスナップショットを1つだけ保存する予定の場合は、zfsリスト -roスペースコマンドを実行すると、探しているものが見つかるはずです。

複数のスナップショットを同時に取得する場合、このデータは誤解を招く可能性があります。複数のスナップショットを扱う場合、USED列が何らかの意味を持つと想定して、自然に行動しないでください。また、デュスナップショット ディレクトリでは、これは適切な選択ではありません。スナップショットによって参照されている内容のみが表示され、スナップショットが実際に使用している領域は表示されないためです。

zfs のマニュアルページにはこのうちのいくつかが説明されていますが、それらの関係を示すのはあまり上手ではありません。

答え3

ZFS には直接同等のものはありません。最も近いものはプール内の空き領域で、 から取得できますzfs list。ZFS では、スナップショットはプール全体の領域がなくなるまで大きくなります。

関連情報