스냅샷 개요

이 페이지에서는 스냅샷에 대한 정의, 스냅샷의 작동 방식, 일반적인 사용 사례, 스냅샷을 만들고 사용할 때의 권장사항에 대해 설명합니다. 스냅샷을 만들고 관리하는 방법 및 스냅샷에서 Filestore 데이터를 복원하는 방법은 스냅샷으로 데이터 상태 보존을 참조하세요.

스냅샷이란?

Filestore 스냅샷은 스냅샷이 만들어진 시점의 파일 공유 데이터가 보존된 상태입니다. 인스턴스는 스냅샷이 만들어진 후 수정된 파일의 상태를 유지합니다. 스냅샷의 보존 상태로 파일을 복원하려면 현재 파일을 관련 스냅샷 디렉터리의 파일로 덮어쓰면 됩니다.

스냅샷은 Filestore 인스턴스 내에 저장되며 인스턴스의 하위 리소스입니다. 인스턴스의 데이터가 수정되기 전에는 데이터를 복제하거나 용량을 소비하지 않습니다. 인스턴스의 모든 스냅샷은 공통 데이터를 공유합니다. 즉, 인스턴스는 스냅샷 간의 차이점만 보존합니다.

스냅샷 생성

파일 공유의 모든 디렉터리에는 숨겨진 .snapshot 디렉터리가 있습니다. 각 .snapshot 디렉터리에는 만든 상위 디렉터리의 스냅샷이 포함됩니다. 예를 들면 다음과 같습니다.

foo/
│   bar.txt
│
└───.snapshot
    │
    ├───snap1/
    │        bar.txt
    │
    ├───snap2/
    │        bar.txt
    │
    └───snap3/
             bar.txt

스냅샷 생성 시 상위 디렉터리 내에 있는 모든 파일과 하위 디렉터리의 읽기 전용 뷰가 스냅샷에 포함됩니다. atime, ownership, 읽기/쓰기 권한과 같은 모든 파일 속성은 유지됩니다.

스냅샷 생성은 일반적으로 데이터 복사와 관련이 없고 인스턴스 성능에 영향을 미치지 않으므로 스냅샷을 만드는 데 2분 이상 걸리지 않습니다.

한 번에 인스턴스당 최대 240개의 스냅샷을 포함할 수 있습니다. 파일 공유 이름과 스냅샷 이름을 합친 길이는 최대 78자(영문 기준)입니다.

스냅샷 일관성

Filestore 스냅샷은 NFSv3 일관성 시맨틱스를 갖습니다. 스냅샷이 시작되기 전 Filestore 인스턴스에서 안정적인 스토리지에 기록된 것으로 확인되었거나 후속 COMMIT 확인이 이뤄진 모든 쓰기 데이터가 스냅샷에 포함됩니다. 자세한 내용은 NFSv3 RFC-1813 섹션 3.3.7을 참조하세요.

최상의 스냅샷 일관성을 위한 파일 공유 준비

스냅샷 품질은 애플리케이션이 대량의 쓰기 작업이 수행되는 워크로드 기간 중에 생성되는 스냅샷으로부터 복구할 수 있는 기능에 따라 달라집니다. 대부분의 경우 애플리케이션이 파일 공유에 데이터 쓰기를 수행하는 동안에도 일관성이 뛰어난 스냅샷을 만들 수 있습니다. 하지만 애플리케이션에 엄격한 일관성이 요구될 때는 다음 중 하나를 수행하는 것이 좋습니다.

  • 동기화 마운트 옵션을 사용하거나 O_DIRECT|O_SYNC로 파일을 엽니다. 두 가지 방법 중 하나를 사용하면 일관성이 향상되지만 반드시 보장되지는 않습니다.
  • 파일 공유에 데이터를 쓰는 애플리케이션 또는 운영체제 프로세스를 일시중지하고 스냅샷을 시작하기 전 파일 공유에 변경사항을 반영하도록 만듭니다. 자세한 내용은 fsync(2)를 참조하세요.
  • 애플리케이션에 여러 공유 간 일관성이 필요하면 모든 파일 공유에 쓰기를 수행 중인 모든 인스턴스에서 모든 애플리케이션을 일시중지하고 애플리케이션을 재개하기 전 모든 파일 공유에 대한 스냅샷을 만듭니다.
  • 애플리케이션 수준 일관성이 필요하면 애플리케이션을 중지하고 스냅샷을 만들기 전에 파일 공유를 마운트 해제합니다.

.snapshot 디렉터리의 NFS 시맨틱스

.snapshot 디렉터리는 상위 디렉터리에 대해 생성된 스냅샷을 포함하는 숨겨진 특별 디렉터리입니다. 모든 NFS 및 bash 명령어는 이러한 디렉터리에서 작동하지만 다음과 같은 예외가 있습니다.

  • .snapshot라는 이름은 스냅샷에 예약되어 있으므로 해당 이름으로 파일 또는 디렉터리를 만들 수 없습니다.
  • .snapshot 디렉터리는 READDIR 또는 READDIRPLUS 명령어의 출력에서 표시되지 않으며 ls -a bash 명령어에도 표시되지 않습니다.
  • .snapshot 디렉터리로 변경하려면 .snapshot 문자열을 명시적으로 입력해야 합니다. 예: cd somedir/.snapshot/
  • 셸 명령어의 자동 완성에는 .snapshot이 옵션으로 표시되지 않습니다.

스냅샷에서 캡처된 파일 삭제

스냅샷에 파일을 캡처할 때 이를 삭제해도 인스턴스의 디스크 여유 공간이 늘어나지 않습니다.

스냅샷 상태로 되돌리기

스냅샷 상태로 인스턴스 되돌리기는 대규모 SSD 및 엔터프라이즈 인스턴스에서만 미리보기 기능으로 제공됩니다.

인스턴스를 스냅샷에 캡처된 상태로 되돌리면 대상 스냅샷 생성 이후 기록된 모든 새 데이터가 삭제되고 이를 복구할 수 없습니다. 대상 스냅샷 이후에 생성된 스냅샷도 되돌리기 프로세스로 삭제됩니다.

기능 제한사항

  • 스냅샷 되돌리기 기능은 라이브 파일 시스템과 체인의 최신 스냅샷 모두에 파괴적인 작업입니다. 따라서 우발적인 데이터 손실 위험이 높아집니다. 백업에서 복원하는 경우는 이 경우와 상당히 대조적입니다. 사용 후에도 백업이 현재 상태로 유지되어 최상의 백업을 찾기 위해 여러 백업에서 복원을 시도할 수 있습니다. 되돌리기 기능은 신중하게 사용하세요.

  • 대상 스냅샷을 만든 후 작성된 모든 데이터는 되돌리기 프로세스 시작 시 삭제되며 복구할 수 없습니다. 대상 스냅샷보다 최신인 스냅샷도 모두 삭제됩니다. 예를 들어 snapshot1, snapshot2, snapshot3는 순차적으로 생성됩니다. 인스턴스를 snapshot2에서 캡처한 상태로 되돌리는 것은 snapshot3와 snapshot3 이후의 모든 변경사항이 되돌리기 프로세스에서 삭제된다는 의미입니다.

    이렇게 삭제된 데이터를 정리하는 데 최대 3일이 걸릴 수 있습니다. 이 기간 동안 인스턴스 용량 및 성능에 영향이 있을 수 있습니다.

  • 인스턴스를 스냅샷 상태로 되돌리면 NFS 파일 시스템 ID(fsid)가 업데이트됩니다. 따라서 기존 마운트를 사용하여 클라이언트에 액세스하려고 시도하면 부실 파일 처리 오류가 반환됩니다. 되돌리기 작업 전에 모든 클라이언트를 인스턴스에서 마운트 해제하고 완료 후 다시 마운트하는 것이 좋습니다.

  • 되돌리기 작업은 관련된 파일 수에 따라 완료하는 데 몇 시간이 걸릴 수 있습니다. 다른 되돌리기 작업을 시작하기 전에 기존 되돌리기 작업이 완료될 때까지 기다려야 합니다.

  • 되돌리기 작업이 완료되는 동안 인스턴스 또는 스냅샷에 대한 다른 작업은 실행할 수 없습니다. 다른 모든 작업은 작업 구성에 따라 거부되거나 큐에 추가됩니다.

  • 현재 단일 공유가 있는 인스턴스만 스냅샷 상태로 되돌릴 수 있습니다. 스냅샷 되돌리기 기능은 GKE용 Filestore 다중 공유와 결합할 수 없습니다.

다음 단계