맨위로가기

스냅샷 (기억 장치)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

스냅샷은 대용량 데이터 백업 시 데이터 손실 문제를 해결하기 위해 특정 시점의 파일 및 디렉터리 상태를 보존하는 기술이다. 백업 중 데이터 변경으로 인한 원자성 보장 실패를 방지하고, 시스템 다운타임 없이 읽기 전용 복사본을 생성하여 데이터 일관성을 유지한다. 스냅샷은 볼륨 관리자, 파일 시스템, 데이터베이스, 가상화 등 다양한 환경에서 구현되며, 백업 및 복원, 테스트, 개발, 시스템 보호 등 여러 목적으로 활용된다. 스냅샷은 스토리지 레벨과 파일 시스템 레벨에서 구현될 수 있으며, 운영체제의 캐싱 메커니즘으로 인해 스냅샷 생성 시 주의가 필요하다.

더 읽어볼만한 페이지

  • 지속성 - 직렬화
    직렬화는 데이터 전송, 저장 등을 위해 데이터 구조를 바이트로 변환하는 과정이며, 아키텍처 독립성을 유지하고 다양한 형식으로 지원되지만 캡슐화 위반 등의 단점도 존재한다.
  • 지속성 - 마샬링 (컴퓨터 과학)
    마샬링은 컴퓨터 과학에서 프로세스나 스레드 간 데이터 전송을 위해 객체의 상태를 바이트 스트림 형태로 변환하는 과정이며, 원격 프로시저 호출 구현에 필수적이고 직렬화의 한 단계로 간주될 수 있지만, 프로그래밍 언어에 따라 직렬화와 상호 교환적으로 사용되거나 정의와 사용법에 차이가 있다.
  • 백업 - 업무 연속성 계획
    업무 연속성 계획은 예기치 못한 상황 발생 시 조직의 핵심 업무를 지속하고 빠르게 복구하기 위한 사전 계획으로, 회복탄력성을 높이고 사업을 안정적으로 유지하며 이해관계자에게 미치는 영향을 최소화하는 데 목적을 둔다.
  • 백업 - 디스크 복제
    디스크 복제는 하드웨어 또는 소프트웨어 복제기를 사용하여 소스 드라이브 내용을 대상 드라이브로 복사하는 기술로, 시스템 설정 복제, 디지털 포렌식, 백업, 시스템 배포 및 드라이브 업그레이드 등 다양한 용도로 활용되어 시스템 관리 효율성을 높인다.
  • 장애 허용 컴퓨터 시스템 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
  • 장애 허용 컴퓨터 시스템 - 트랜잭션 처리
    트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다.
스냅샷 (기억 장치)
일반 정보
유형기억 장치 기술
설명특정 시점의 데이터 사본
용도데이터 보호, 복구, 테스트 및 개발
작동 방식Copy-on-write, Redirect-on-write, 클론 등의 기술 사용
기술적 측면
일관성충돌 일관성, 트랜잭션 일관성
구현 방법LVM
VSS
스토리지 어레이
파일 시스템
활용 분야
데이터 보호데이터 손실 시 복구 가능
백업백업 작업 간소화
테스트 및 개발실데이터에 영향 없이 테스트 가능
스냅샷 종류
전체 스냅샷전체 데이터 복사
차등 스냅샷변경된 데이터만 저장
증분 스냅샷이전 스냅샷 이후 변경된 데이터만 저장
관련 기술
데이터 중복 제거스토리지 공간 효율성 향상
씬 프로비저닝필요할 때 스토리지 공간 할당

2. 목적

백업 중 데이터 변경으로 인해 발생할 수 있는 불일치 문제를 해결하기 위해 스냅샷이 사용된다. 스냅샷은 특정 시점의 데이터 상태를 보존하여, 나중에 해당 시점으로 복구할 수 있게 해준다.[1]

데이터베이스, 메일 서버 등과 같이 지속적으로 변경되는 데이터의 경우, 백업 시점에 따라 데이터 간의 일관성이 맞지 않을 수 있다. 스냅샷은 이러한 데이터의 일관성을 유지하는 데 사용된다.[1]

또한, 스냅샷은 테스트 및 개발 환경에서 데이터를 복제하는 데에도 활용된다.

3. 구현 방식

백업 중 데이터 손상을 방지하기 위해 고성능 시스템에서는 스냅샷 기반 백업을 수행한다. 스냅샷은 특정 시점의 읽기 전용 복사본을 생성하여 응용 프로그램이 데이터 쓰기를 계속할 수 있도록 한다. 대부분의 스냅샷 기능은 효율적이며, O(1)으로 스냅샷을 만들 수 있다. 즉, 스냅샷 생성에 필요한 시간과 입출력은 데이터 집합의 크기와 관계없이 일정하다.

스냅샷은 다음과 같은 방식으로 구현된다.


  • 리눅스를 비롯한 일부 유닉스 계열 시스템은 논리 볼륨 관리를 이용하여 스냅샷을 지원한다. 이는 카피 온 라이트 기능을 제공하여 변경된 블록을 복사함으로써 이전 버전의 블록 장치 이미지를 보존한다.
  • 플랜 9, ODS-5에 쓰이는 WAFL, Fossil과 같은 일부 파일 시스템은 내부적으로 오래된 버전의 파일을 추적하여 특별한 이름 공간을 통해 스냅샷을 사용하게 한다. UFS2와 같은 다른 파일 시스템은 파일 역사에 접근할 수 있는 운영 체제의 API를 제공한다.
  • 윈도우의 NTFS윈도우 XP, 윈도우 서버 2003 이후 버전부터 섀도 복사본의 볼륨 섀도 복사 서비스(VSS)를 통해 스냅샷 접근을 제공한다.
  • ZFS는 블록 수준에서 읽기-쓰기 스냅샷을 추적하며, 사용자 응용 프로그램을 복제하는 하이브리드 기능을 갖추고 있다.
  • 애플 macOS의 타임 머신은 시스템 수준의 증분 백업 서비스로, 변경된 파일을 주기적으로 지정된 볼륨에 복사한다.


백업 대상 파일이 백업 처리 중에 갱신되면 파일 간의 일관성이 깨질 수 있다. 갱신이 발생하는 데이터베이스 파일이나 메일 서버의 스풀 폴더 등은 이러한 시간 차이에 대처하지 않으면 불일치가 발생하기 쉽다. 따라서 특정 시점의 파일 상태를 유지하고 그 내용을 백업하여 파일 간의 시간적 일관성을 유지하기 위해 스냅샷 메커니즘이 도입된다.

스냅샷은 데이터 보전을 위한 백업 외에도 다른 용도로 활용된다. 스냅샷 데이터를 생성하는 동안 대상 데이터가 갱신되지 않도록 해야 하지만, 갱신 가능한 메커니즘도 존재한다. 이는 스냅샷 데이터 생성 중 파일 갱신 시 실제 데이터를 직접 갱신하지 않고 별도의 영역(저널, 트랜잭션 로그 등)에 기록하는 방식으로 이루어진다.

3. 1. 볼륨 관리자 (Volume Manager)

리눅스를 비롯한 여러 유닉스 계열 시스템은 스냅샷 기능을 갖춘 LVM을 활용한다.[1] 이들은 블록 장치 수준에서 카피 온 라이트(copy-on-write) 방식을 구현하며, 변경되는 블록을 다른 저장 위치에 복사하는 방식으로 동작한다.[1] 이를 통해 원본 데이터가 보존되는 블록 장치의 읽기 전용 또는 읽기-쓰기 스냅샷을 생성할 수 있다.[1] 이러한 읽기-쓰기 스냅샷 기능은 LVM2에서 도입되었다.[1]

3. 2. 파일 시스템 (File System)

ZFS, UFS2, NTFS 등과 같은 일부 파일 시스템은 파일 시스템 수준에서 스냅샷을 관리하는 기능을 제공한다.[3]

NTFS의 경우, 윈도우 XP, 윈도우 서버 2003 이후 버전에서 볼륨 섀도 복사 서비스(VSS)라는 스냅샷 접근을 제공한다.[3] 주로 OS의 다음 기능에서 활용되며, 애플리케이션에서도 사용할 수 있다.

  • 백업 및 복원: 파일 데이터 백업 처리 시 스냅샷을 캡처하여 해당 데이터에서 백업 대상으로 기록한다.[3]
  • 이전 버전: 정기적 또는 필요에 따라 스냅샷을 캡처하여 캡처 시점의 파일 내용을 추출할 수 있는 기능으로, 파일 데이터의 세대 관리에 가까운 기능을 실현한다.[4]
  • 시스템 보호 (시스템 복원 지점, 시스템 복구 옵션 등): 소프트웨어나 장치 드라이버 설치 후 OS 환경이 불안정해진 경우 과거의 양호한 시점으로 복원하는 기능이다. 드라이버 등 OS에 큰 영향을 미치는 처리 직전에 스냅샷을 캡처하도록 되어 있다.[5]


스냅샷 데이터는 내부적인 섀도 복사용 "저장소" 내에 기록된다.[6] 차분 기록이므로 반복적으로 스냅샷을 가져온 경우에도 가져온 횟수에 정비례하여 증가하지 않는다. 또한, 캡처 시 스냅샷 개수의 상한이나 지정된 저장소 크기를 초과하는 경우 오래된 스냅샷 데이터부터 삭제된다.[7]

섀도 복사 관리는 탐색기, vssadmin 명령, WMI의 Win32\_ShadowCopy 등을 사용한다. 스냅샷 데이터 내의 파일에 접근할 때는 폴더의 네트워크 공유 기능(공유 폴더)을 거친다. 이는 로컬 파일에 대해서도 동일하며, 예를 들어 한국 표준시(KST) 2012년 8월 20일 12:05:10에 캡처한 C:\\Windows\\System32 내를 참조할 때는 "\\\\localhost\\C$\\@GMT-2012.08.20-03.05.10\\Windows\\System32"와 같이 소위 드라이브의 "관리 공유"를 통해 지정한다.

애플 macOS의 타임 머신은 시스템 수준의 증분 백업 서비스로, 변경된 파일을 주기적으로 특별히 지정된 볼륨에 복사한다.

3. 3. 데이터베이스 (Database)

SQL 표준은 트랜잭션 격리의 4가지 수준을 요구한다. 최상위 수준인 SERIALIZABLE의 경우 스냅샷은 사용자도 모르게 트랜잭션이 시작할 때 만들어진다. 수많은 유명한 SQL 데이터베이스의 백업 유틸리티는 이 기능을 사용하여 영속적인 표 자료를 만들어낸다.[1]

3. 4. 가상화 (Virtualization)

VMware, QEMU, VirtualPC, Hyper-V[8], VirtualBox[9]와 같은 일부 가상화 프로그램은 가상 머신의 전체 상태를 파일로 저장하여 시스템 스냅샷을 수행할 수 있다. 이를 통해 특정 시점으로 가상 머신을 복원할 수 있다.

4. 주의 사항

스냅샷에는 스토리지 레벨(LVM, ZFS의 볼륨을 사용하는 경우 등)과 파일 시스템 레벨(ZFS, UFS, NTFS 등)의 두 종류가 있다. 전자는 스토리지 레벨에서 스냅샷이 생성되므로, 어떠한 파일 시스템이라도 스냅샷을 생성할 수 있다(LVM처럼 OS 상의 소프트웨어로 실현되는 경우에는 해당 OS가 생성할 수 있는 범위 내에서). 하지만 스냅샷을 올바르게 얻을 수 있는 상황은 제한적이므로 사용상의 주의가 필요하다.

최근 OS는 라이트백 캐시를 가지고 가능한 한 스토리지에 기록하지 않는 제어를 하고 있다. 따라서 스토리지 스냅샷은 원칙적으로 스토리지를 언마운트한 상태에서만 손상되지 않은 이미지를 생성할 수 있다. 스냅샷용 지원 도구가 있는 경우에는 그것을 사용하여 OS의 버퍼를 플러시하고 쓰기 작업을 블록한 후, 스냅샷을 생성하고 쓰기를 재개하는 절차를 거쳐야 손상되지 않은 스냅샷을 찍을 수 있다. 엄밀히 말하면 손상되었지만, 저널 로그 등에 의해 복구되므로 실질적인 피해가 발생하지 않는다.

파일 시스템 스냅샷은 스토리지 효율도 좋고, 캐시 상의 데이터를 포함하여 스냅샷의 대상이 되므로 위와 같은 문제는 발생하지 않는다. 단, 쓰기 중인 파일에 대해서는 쓰여진 부분까지만 유효하다는 점에 주의해야 한다. 또한 스냅샷을 지원하는 파일 시스템이어야 한다.

5. 응용

섀도 페이징과 로그 선행 기록은 많은 데이터베이스에서 트랜잭션을 구현하기 위해 사용되는 스냅샷과 매우 유사한 메커니즘이다.[1] SQL 규격은 트랜잭션 격리 수준 4가지를 요구하는데, 최상위 수준인 직렬화 가능(SERIALIZABLE)의 경우 스냅샷은 사용자도 모르게 트랜잭션이 시작될 때 만들어진다.[1] 수많은 유명한 SQL 데이터베이스의 백업 유틸리티는 이 기능을 사용하여 영속적인 표 자료를 만들어낸다.[1]

소프트웨어 트랜잭셔널 메모리는 메모리에만 유지하고 있는 데이터 구조와 같은 개념을 적용받는다.[1] 사실상, 영구 데이터 구조는 메모리 상의 데이터 스냅샷이라고 할 수 있다.[1]

백업 소프트웨어 중에는 스냅샷 기능을 옵션으로 별도로 제공하는 것도 있다.[1] 예를 들어, Backup Exec에서는 이를 ''Open File Option''이라는 이름으로 제공하고 있다.[1]

참조

[1] 웹사이트 LVM HOWTO http://tldp.org/HOWT[...] tldp.org 2013-09-29
[2] 웹사이트 Optimized Storage Solution for Enterprise Scale Hyper-V Deployments http://download.micr[...] Microsoft 2012-10-25
[3] 뉴스 シャドウ・コピーでファイルを自動バックアップする(サーバ編) https://atmarkit.itm[...] "@IT"
[4] 뉴스 シャドウ・コピーで削除したファイルを復活させる(クライアント編) https://atmarkit.itm[...] "@IT"
[5] 뉴스 上書き/削除したファイルを「以前のバージョン」で復旧させる(Windows 7編) https://atmarkit.itm[...] "@IT"
[6] 문서 Windows XP에서는 "System Volume Information" フォルダ(SYSTEM アカウントのみアクセス可能な隠しフォルダ) http://support.micro[...]
[7] 문서 Microsoft Windows Server 2008 R2 では、64個。 http://technet.micro[...]
[8] 뉴스 仮想PCで学ぶ「体当たり」Windowsシステム管理 第6回 Hyper-Vのスナップショット機能を使う https://atmarkit.itm[...] "@IT"
[9] 뉴스 仮想PCで学ぶ「体当たり」Windowsシステム管理 第10回 Oracle VM VirtualBoxを使う https://atmarkit.itm[...] "@IT"



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com