lvdisplay snap_percent와 동등한 ZFS

lvdisplay snap_percent와 동등한 ZFS

저는 MySQL 데이터베이스를 백업하기 위해 LVM 스냅샷을 사용해 왔습니다.

FLUSH TABLES WITH READ LOCK스냅샷이 활성화 된 lvcreate --snapshot --size 4G동안 데이터베이스가 활성화되어 있기 때문에 snap_percent(스냅샷을 생성한 당시 파일 시스템의 원래 상태로 델타를 추적하는 데 사용된 스냅샷 스토리지의 양)이 증가하기 시작합니다. 이는 snap_percent매일 모니터링되며 --size80%에 도달하면 증가됩니다.

내 질문은 다음과 같은 통계나 속성이 있는지 여부입니다.ZFS풀에 남아 있는 공간의 백분율로 스냅샷에서 소비되는 공간의 양을 확인하려면 어떻게 해야 합니까? 분명히 --size매개변수 를 전달할 필요는 없지만 zfs 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관련 속성을 표시하기 위해 아래 출력을 필터링했습니다 . 아래에는 545GB가 사용되는 800GB 파일 시스템(할당량)이 있습니다. 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.87은 실제 파일 시스템(활성 데이터)에서 사용된다는 것을 알려줍니다. 그러나 각 스냅샷 옆에 있는 USED 크기는 매우 오해의 소지가 있습니다.

스냅샷의 사용 열에 있는 숫자를 모두 합산하면 USEDSNAP 총계 근처에도 나오지 않는다는 것을 알 수 있습니다. USED ​​가치가 얼마나 되는지 때문입니다.고유한각 스냅샷이 보유하는 공간입니다.

예를 들어:

"newpool"이라는 풀이 있고 여기에 2개의 1G 파일(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 파일(fileA) 중 1개를 삭제합니다.

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

이제 두 스냅샷 모두에 있는 fileB를 삭제합니다.

 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 ​​열에는 개별 스냅샷을 삭제할 경우 회수할 수 있는 공간이 얼마나 되는지 표시되지만 해당 스냅샷이 예약하고 있는 공간이 실제로 얼마나 되는지는 표시되지 않습니다.

이제 내가 그 모든 말을 했으니 -

특정 데이터 세트의 하나의 스냅샷만 보관하려는 경우zfs 목록 -ro 공간명령은 당신이 찾고있는 것을 제공해야합니다.

동시에 여러 개의 스냅샷을 생성하려는 경우 이 데이터는 오해의 소지가 있습니다. 여러 스냅샷을 처리할 때 자연스러운 일을 하지 말고 USED 열이 무엇이든 의미한다고 가정하십시오. 또한,스냅샷이 실제로 사용하는 공간이 아니라 스냅샷이 참조하는 내용만 보여주기 때문에 스냅샷 디렉토리에서는 좋지 않은 선택입니다.

zfs 맨페이지에서는 이 중 일부를 다루지만 이러한 관계를 표시하는 데에는 적합하지 않습니다.

답변3

ZFS에는 직접적으로 동등한 것이 없습니다. 가장 가까운 값은 에서 얻을 수 있는 수영장의 여유 공간입니다 zfs list. ZFS에서는 전체 풀 공간이 부족해질 때까지 스냅샷이 커질 수 있습니다.

관련 정보