KR20170132338A - 파일 시스템에 대한 체크포인트 - Google Patents
파일 시스템에 대한 체크포인트 Download PDFInfo
- Publication number
- KR20170132338A KR20170132338A KR1020177033663A KR20177033663A KR20170132338A KR 20170132338 A KR20170132338 A KR 20170132338A KR 1020177033663 A KR1020177033663 A KR 1020177033663A KR 20177033663 A KR20177033663 A KR 20177033663A KR 20170132338 A KR20170132338 A KR 20170132338A
- Authority
- KR
- South Korea
- Prior art keywords
- checkpoint
- update
- location
- plan
- computing device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G06F17/30345—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
-
- G06F17/30283—
-
- G06F17/30321—
-
- G06F17/30327—
-
- G06F17/30589—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
본 명세서에 기술된 청구사항의 측면들은 파일 시스템에 대한 체크포인트에 관련된다. 측면들에서, 파일 시스템에 대한 업데이트들은 체크포인트 버킷들로 조직화된다. 체크포인트가 요구될 때, 후속 업데이트들이 다른 체크포인트 버킷으로 연결된다. 현재 체크포인트 버킷에서의 업데이트들에 대해서 글로벌 테이블이 업데이트된 후에, 글로벌 테이블의 논리적 카피가 생성된다. 이러한 논리적 카피는 체크포인트 데이터의 일부로서 저장된다. 복구를 돕기 위해서, 체크포인트 매니저는 최종 체크포인트 데이터를 스토리지에 기록하기 전에 현재 체크포인트 버킷의 모든 업데이트들이 스토리지에 기록될 때까지 기다릴 수 있다. 이러한 최종 체크포인트 데이터는 글로벌 테이블의 논리적 카피를 지칭할 수 있고, 체크포인트 데이터가 올바른 것인지를 입증하도록 확인 코드를 포함할 수 있다.
Description
스토리지 디바이스에 데이터를 기록하는 중간에 정전 또는 시스템 고장이 발생할 수 있다. 이러한 상황이 발생하면, 데이터는 손실되거나 비일관적일 수 있다. 예를 들어, 만약 계좌 소유자가 ATM으로부터 돈을 인출하는 중간에 시스템이 고장난다면 트랜잭션은 은행 또는 계좌 소유자에게 부당한 호의를 베풀게 될 수 있다. 다른 예시로서, 만약 시스템이 디스크 액세스를 포함하는 매우 긴 계산 중에 고장난다면, 그 계산을 다시 하는데에 상당한 시간이 걸릴 수 있다.
본 명세서에서 청구된 청구사항은 임의의 단점들을 해결하거나 전술된 바와 같은 환경에서만 동작하는 실시예들로 제한되지 않는다. 오히려, 이러한 배경기술은 단지 본 명세서에 기술된 일부 실시예들이 실시될 수 있는 하나의 예시적인 기술 영역을 설명하도록 제공된 것이다.
간략하게, 본 명세서에 기술된 청구사항의 측면들은 파일 시스템에 대한 체크포인트와 관련된다. 측면들에서, 파일 시스템에 대한 업데이트가 체크포인트 버킷들(checkpoint buckets)로 편성된다. 체크포인트가 요구되면, 후속 업데이트가 다른 체크포인트 버킷에 연결된다. 현재 체크포인트 버킷 내의 업데이트에 대해서 다음 글로벌 테이블(global table)이 업데이트된 후에, 글로벌 테이블의 논리적 카피가 생성된다. 이러한 논리적 카피는 체크포인트 데이터의 일부로서 저장된다. 복구를 돕기 위해서, 체크포인트 매니저는 최종 체크포인트 데이터를 스토리지에 기록하기에 앞서 현재 체크포인트 버킷의 모든 업데이트가 스토리지에 기록될 때까지 기다릴 수 있다. 이러한 최종 체크포인트 데이터는 글로벌 테이블의 논리적 카피를 참조할 수 있고, 체크포인트 데이터가 정확하다는 것을 확인하기 위한 확인 코드(validation code)를 포함할 수 있다.
이 요약부는 아래의 상세한 설명에서 추가로 기술되는 개념들의 선택을 간략한 형태로 소개하고자 제공되었다. 본 요약부는 특허청구범위의 중요 특징 또는 기본 특징을 식별하고자 하는 것은 아니며, 청구범위의 범주를 제한하는데에 사용되는 것 또한 아니다.
"본 명세서에 기술된 청구사항"이라는 구절은 명확하게 언급되지 않는 한 상세한 설명에 기술된 사항들을 지칭한다. "측면"이라는 용어는 "적어도 하나의 측면"으로 해석되어야 한다. 상세한 설명에 기술된 청구사항의 측면들을 식별하는 것은 청구사항의 중요한 특징 또는 기본 특징을 식별하기 위한 것은 아니다.
전술된 측면들과 본 명세서에 기술된 청구사항의 다른 측면들이 첨부된 도면에 제한적이 아닌 예시적인 방식으로 도시되었으며, 도면에서 동일한 참조 번호는 유사한 요소를 지칭한다.
도 1은 본 명세서에 기술된 청구사항의 측면들이 결합될 수 있는 예시적인 범용 컴퓨팅 환경을 나타내는 블록도;
도 2는 본 명세서에 기술된 청구사항의 측면들이 동작할 수 있는 시스템의 구성요소들의 예시적인 배치를 나타내는 블록도;
도 3은 본 명세서에 기술된 청구사항의 측면들을 도시한 블록도;
도 4는 본 명세서에 기술된 청구사항의 측면들에 따른 파일 시스템에 대한 업데이트를 일반적으로 나타내는 도면;
도 5는 본 명세서에 기술된 청구사항의 측면들에 따른 예시적인 체크포인트 버킷들을 도시한 블록도;
도 6 내지 8은 본 명세서에 기술된 청구사항의 측면들에 따라 발생할 수 있는 예시적인 작업들을 일반적으로 나타내는 흐름도.
도 2는 본 명세서에 기술된 청구사항의 측면들이 동작할 수 있는 시스템의 구성요소들의 예시적인 배치를 나타내는 블록도;
도 3은 본 명세서에 기술된 청구사항의 측면들을 도시한 블록도;
도 4는 본 명세서에 기술된 청구사항의 측면들에 따른 파일 시스템에 대한 업데이트를 일반적으로 나타내는 도면;
도 5는 본 명세서에 기술된 청구사항의 측면들에 따른 예시적인 체크포인트 버킷들을 도시한 블록도;
도 6 내지 8은 본 명세서에 기술된 청구사항의 측면들에 따라 발생할 수 있는 예시적인 작업들을 일반적으로 나타내는 흐름도.
정의
본 명세서에서 사용되는 "포함하는"이라는 용어 및 그에서 변형 단어들은 "-를 포함하지만 그것으로 제한되는 것은 아닌"이라는 의미의 제한을 두지 않는 용어로서 해석되어야 한다. "또는"이라는 용어는 명확하게 언급되지 않는 한 "및/또는"의 의미로 해석되어야 한다. "-에 기초하여"라는 용어는 "적어도 일부분 기초하여"로 읽혀져야 한다. "일 실시예" 및 "실시예"라는 용어들은 "적어도 하나의 실시예"로서 읽혀져야 한다. "다른 실시예"라는 용어는 "적어도 하나의 다른 실시예"로 읽혀져야 한다. 명시적이거나 암시적인 그외의 정의들이 아래에 포함될 수 있다.
예시적인 동작 환경
도 1은 본 명세서에 기술된 청구사항의 측면들이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예시를 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 일례일 뿐이며, 본 명세서에 기술된 청구사항의 측면들의 이용 또는 기능의 범주와 관련된 어떠한 제한을 두기 위한 것도 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100) 내에 도시된 구성요소들 중 임의의 하나 또는 구성요소들의 조합과 관련하여 어떠한 종속성 또는 필요성을 가지는 것으로도 해석되어서는 안된다.
본 명세서에 기술된 청구사항의 측면들은 다수의 다른 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성과 운용가능하다. 본 명세서에 기술된 청구사항의 측면들과 함께 사용하기 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 또는 구성의 예시는, 개인 컴퓨터, 서버 컴퓨터, 휴대용 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로컨트롤러 기반의 시스템, 셋톱 박스, 프로그램가능한 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, PDA, 게임 디바이스, 프린터, 셋톱과 미디어 센터를 포함하는 어플라이언스(appliance), 또는 그 외의 어플라이언스, 차량 장착 또는 부착된 컴퓨팅 디바이스, 그 외의 모바일 디바이스, 전술된 임의의 시스템들 또는 디바이스들을 포함하는 분산 컴퓨팅 환경 등을 포함한다.
본 명세서에 기술된 청구사항의 측면들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추출 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 명세서에 기술된 청구사항의 측면들은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 스토리지 디바이스를 포함하는 로컬 및 원격 컴퓨터 스토리지 매체 모두에 위치될 수 있다.
도 1을 참조하면, 본 명세서에 기술된 청구사항의 측면들을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태로 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터는 명령을 실행할 수 있는 임의의 전자 디바이스를 포함할 수 있다. 컴퓨터(110)의 구성요소들은 프로세싱 유닛(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 다양한 시스템 구성요소들을 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)를 포함할 수 있다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇몇 유형의 버스 구조들, 주변 버스 및 다양한 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스 중 임의의 것일 수 있다. 예를 들어, 이러한 아키텍처는 산업 표준 아키텍처(ISA; Industry Standard Architecture) 버스, 마이크로 채널 아키텍처(MCA; Micro Channel Architecture) 버스, 개선된 ISA(EISA) 버스, 비디오 전자기기 표준 협의(VESA; Video Electronics Standards Association) 로컬 버스, 메자닌 버스(Mezzanine bus)로도 알려져 있는 주변 컴포넌트 상호접속(PCI; Peripheral Component Interconnect) 버스, 주변 컴포넌트 상호접속 확장(PCI-X) 버스, 발전된 그래픽 포트(AGP; Advanced Graphics Port) 및 PCI 익스프레스(PCIe)를 포함하지만 이것으로 제한되지는 않는다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독가능한 매체를 포함한다. 컴퓨터 판독가능한 매체는 컴퓨터(110)에 의해 액세스될 수 있고 휘발성 매체와 비휘발성 매체 및 제거가능한 매체와 제거 불가능한 매체 모두를 포함하는 임의의 입수가능한 매체일 수 있다. 예를 들면, 컴퓨터 판독가능한 매체는 컴퓨터 스토리지 매체 및 통신 매체를 포함할 수 있지만, 이것으로 제한되지는 않는다.
컴퓨터 스토리지 매체는 컴퓨터 판독가능한 명령들, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성 매체, 제거가능 및 제거 불가능 매체 모두를 포함한다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광디스크 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 원하는 정보를 저장하는데에 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
통신 매체는 전형적으로 컴퓨터 판독가능한 명령들, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘과 같은 수정된 데이터 신호의 다른 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. "수정된 데이터 신호(modulated data signal)"라는 용어는 자신의 하나 이상의 형질 세트(characteristics set)를 구비하거나, 또는 신호 내의 정보를 인코딩하는 방식으로 변경된 신호를 의미한다. 예를 들면, 통신 매체는 유선 네트워크 또는 직통(direct-wire) 통신과 같은 유선 매체 및 음향, RF, 적외선 및 그외의 무선 매체와 같은 무선 매체를 포함하지만, 이것으로 제한되는 것은 아니다. 전술된 것들의 임의의 조합들 또한 컴퓨터 판독가능한 매체의 범주 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 스토리지 매체를 포함한다. 예컨대 시작(start-up) 동안 컴퓨터(110) 내의 소자들 간의 정보 전송을 돕는 베이직 루틴들을 포함하는 베이직 입력/출력 시스템(133)(BIOS)이 전형적으로 ROM(131) 내에 저장된다. RAM(132)은 전형적으로 데이터 및/또는 즉시 액세스될 수 있고/있거나 현재 프로세싱 유닛(120)에 의해 동작되고 있는 프로그램 모듈들을 포함한다. 예를 들면, 도 1은 운영 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)를 포함하지만, 이것으로 제한되는 것은 아니다.
컴퓨터(110)는 또한 다른 제거가능/제거 불가능, 휘발성/비휘발성 컴퓨터 스토리지 매체를 포함할 수도 있다. 예시적으로, 도 1은 제거 불가능한 비휘발성 자기 매체로/로부터 기록 또는 판독하는 하드 디스크 드라이브(141), 제거가능한 비휘발성 자기 디스크(152)로/로부터 기록 또는 판독하는 자기 디스크 드라이브(151) 및 CD-ROM 또는 다른 광학적 매체와 같은 제거가능한 비휘발성 광디스크(156)로/로부터 기록 또는 판독하는 광디스크 드라이브(155)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 다른 제거가능/제거 불가능, 휘발성/비휘발성 컴퓨터 스토리지 매체는, 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크, 다른 광디스크, 디지털 비디오 테이프, 솔리드 스테이트(solid state) RAM, 솔리드 스테이트 ROM 등을 포함한다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140)와 같은 제거 불가능한 메모리 인터페이스를 통해서 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광디스크 드라이브(155)는 전형적으로 인터페이스(150)와 같은 제거가능한 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
도 1에 도시되고 전술된 드라이브들 및 그와 연관된 컴퓨터 스토리지 매체들은, 컴퓨터 판독가능한 명령어들, 데이터 구조들, 프로그램 모듈들 및 컴퓨터(110)에 대한 다른 데이터의 스토리지를 제공한다. 도 1에서, 예를 들면, 하드 디스크 드라이브(141)는 운영 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되었다. 이들 구성요소들은 운영 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다른 것일 수도 있음을 인식해야 한다. 본 명세서에서, 운영 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)는 최소한, 운영 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)와는 다른 복제물들이라는 것을 나타내고자 상이한 참조번호가 주어졌다.
사용자는 키보드(162) 및 흔히 마우스, 트랙볼, 또는 터치 패드로 지칭되는 포인팅 디바이스(161)와 같은 입력 디바이스를 통해 커맨드(command) 또는 정보를 컴퓨터(110)에 입력할 수 있다. (도시되지 않은) 다른 입력 디바이스는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 터치 스크린, 입력 태블릿(writing tablet) 등을 포함할 수 있다. 이들 입력 디바이스들과 다른 입력 디바이스들은 종종 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB와 같은 버스 구조 및 다른 인터페이스를 통해서 접속될 수도 있다.
모니터(191) 또는 다른 유형의 디스플레이 디바이스 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해서 시스템 버스(121)에 접속된다. 모니터뿐 아니라, 컴퓨터는 출력 주변 인터페이스(195)를 통해 접속될 수 있는 프린터(196) 및 스피커(197)와 같은 다른 주변 출력 디바이스도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)과 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 일반적인 네트워크 노드일 수 있으며, 전형적으로 컴퓨터(110)와 관련하여 전술된 대다수의 요소들 또는 모든 요소들을 포함하지만, 도 1에는 오직 메모리 스토리지 디바이스(181)만이 도시되었다. 도 1에 도시된 논리적 접속들은 로컬 영역 네트워크(LAN)(171) 및 광역 네트워크(WAN)(173)를 포함하지만, 다른 네트워크들도 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 전사적(enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷에서 매우 흔하다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해서 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 모뎀(172) 또는 인터넷과 같은 WAN(173) 상에서의 통신을 확립하는 다른 수단을 포함할 수 있다. 내부 또는 외부 모뎀일 수 있는 모뎀(172)은, 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해서 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈들, 또는 그 일부는 원격 메모리 스토리지 디바이스에 저장될 수 있다. 예를 들면, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 디바이스(181) 상에 존재하는 것으로 도시하였지만, 이것으로 제한되는 것은 아니다. 도시된 네트워크 접속이 예시적인 것이며, 컴퓨터들 사이의 통신 링크를 확립하는 다른 수단이 사용될 수 있음을 이해할 것이다.
체크포인팅
(
Checkpointing
)
전술된 바와 같이, 정전 및 시스템 고장이 스토리지 디바이스에 데이터를 기록하는 동안 발생할 수 있다. 이는 스토리지 디바이스 상에 저장된 데이터를 비일관적인 상태로 남겨둘 수 있다. 이러한 문제와 다른 문제들을 해결하기 위해, 체크포인트가 스토리지 디바이스에 기록될 수 있다.
도 2는 본 명세서에 기술된 청구사항의 측면들이 동작할 수 있는 시스템의 구성요소들의 예시적인 배치를 나타낸 블록도이다. 도 2에 도시된 구성요소들은 예시적인 것으로, 필요하거나 포함될 수 있는 모든 구성요소들을 포함하는 것으로 해석되어서는 안된다. 다른 실시예들에서, 도 2와 관련하여 기술된 구성요소들 및/또는 기능들이 본 명세서에 기술된 청구사항의 측면들의 범주 또는 사상으로부터 벗어나지 않고 (도시되거나 도시되지 않은) 다른 구성요소에 포함될 수 있거나 또는 하위 구성요소 내에 배치될 수 있다. 일부 실시예들에서, 도 2와 관련하여 기술된 구성요소들 및/또는 기능들이 복수의 디바이스에 걸쳐 분산될 수도 있다.
도 2를 참조하면, 시스템(205)은 하나 이상의 애플리케이션(210), API(215), 파일 시스템 구성요소(220), 스토어(250), 통신 메커니즘(255) 및 (도시되지 않은) 다른 구성요소들을 포함할 수 있다. 시스템(205)은 하나 이상의 컴퓨팅 디바이스를 포함할 수 있다. 이러한 디바이스들은, 예를 들면, 개인 컴퓨터, 서버 컴퓨터, 휴대용 또는 랩탑 컴퓨터, 멀티프로세서 시스템, 마이크로컨트롤러 기반의 시스템, 셋톱 박스, 프로그램가능한 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 셀룰러 폰, PDA, 게임 디바이스, 프린터, 셋톱 및 미디어 센터를 포함하는 어플라이언스, 또는 그 외의 어플라이언스, 차량 장착 또는 부착된 컴퓨팅 디바이스, 그 외의 모바일 디바이스, 전술된 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함할 수 있다.
시스템(205)이 단일 디바이스를 포함하는 경우, 시스템(205)으로서 작업하도록 구성될 수 있는 예시적인 디바이스는 도 1의 컴퓨터(110)를 포함한다. 시스템(205)이 복수의 디바이스를 포함하는 경우, 복수의 디바이스의 각각은 유사하게 또는 서로 다르게 구성된 도 1의 컴퓨터(110)를 포함할 수 있다.
파일 시스템 구성요소(220)는 복구 매니저(225), 체크포인트 매니저(230), I/O 매니저(235), 기록 플랜 매니저(write plan manager)(237) 및 도시되지 않은 다른 구성요소들을 포함할 수 있다. 본 명세서에서 사용되는 "구성요소"라는 용어는 디바이스 전체 또는 일부, 하나 이상의 소프트웨어 모듈의 컬렉션 또는 그 일부, 하나 이상의 소프트웨어 모듈 또는 그 일부와 하나 이상의 디바이스 또는 그 일부의 소정의 조합 등을 포함하는 것으로 읽혀져야 한다.
통신 메커니즘(255)은 시스템(205)이 다른 엔티티들과 통신할 수 있게 한다. 예를 들어, 통신 메커니즘(255)은 시스템(205)이 원격 호스트 상에서 애플리케이션들과 통신하게 할 수 있다. 통신 메커니즘(255)은 네트워크 인터페이스 또는 어댑터(170), 모뎀(172), 또는 도 1과 관련하여 기술된 바와 같은 통신을 확립하기 위한 임의의 다른 메커니즘일 수 있다.
스토어(store)(250)는 데이터에 대한 액세스를 제공할 수 있는 임의의 스토리지 매체이다. 스토어는 휘발성 메모리(예컨대, 캐시) 및 비휘발성 메모리(예컨대, 지속성 스토리지(persistent storage))를 포함할 수 있다. "데이터"라는 용어는 하나 이상의 컴퓨터 스토리지 소자에 의해 표현될 수 있는 임의의 것을 포함하도록 넓은 범위로 해석되어야 한다. 논리적으로, 데이터는 휘발성 또는 비휘발성 메모리에서 일련의 1과 0으로 표현될 수 있다. 비이진식(non-binary) 스토리지 매체를 구비하는 컴퓨터들에서, 데이터는 스토리지 매체의 능력에 따라 표현될 수 있다. 데이터는 숫자, 문자 등과 같은 단순한 데이터 타입, 계층적 데이터 타입, 링크된 데이터 타입, 또는 그 외의 연관성 데이터 타입, 복수의 다른 데이터 구조들 또는 단순한 데이터 타입을 포함하는 데이터 구조 등을 포함하는 서로 다른 타입의 데이터 구조들로 조직화될 수 있다. 데이터의 일부 예는 정보, 프로그램 코드, 프로그램 상태, 프로그램 데이터, 그 외의 데이터 등을 포함한다.
스토어(250)는 하드 디스크 스토리지, 다른 비휘발성 스토리지, RAM과 같은 휘발성 메모리, 다른 휘발성 스토리지, 이들의 소정의 조합 등을 포함할 수 있으며, 복수의 디바이스에 걸쳐 분산될 수도 있다. 스토어(250)는 외부 스토어이거나 내부 스토어일 수 있고, 또는 시스템(205)에 대해 내부에 있는 구성요소와 외부에 있는 구성요소를 모두 포함한다.
스토어(250)는 스토리지 컨트롤러(240)를 통해 액세스될 수 있다. 본 명세서에서 사용되는 "액세스"라는 용어는 데이터 판독, 데이터 기록, 데이터 삭제, 데이터 업데이트, 이 중 둘 이상을 포함하는 조합 등을 포함할 수 있다. 스토리지 컨트롤러(240)는 스토어(250)에 액세스하라는 요청을 수신할 수 있고 이러한 요청을 적절하게 충족시킬 수 있다. 스토리지 컨트롤러(240)는 데이터가 수신된 순서대로 스토어(250)에 기록되는 것을 보장하지 않도록 구성될 수도 있다. 또한, 스토리지 컨트롤러(240)는 자신이 스토어(250)의 비휘발성 메모리에 데이터를 실제로 기록하기 이전에, 요청된 데이터를 기록하였다고 나타낼 수도 있다.
하나 이상의 애플리케이션(210)은 데이터의 생성, 데이터 삭제 또는 데이터 업데이트와 관련될 수 있는 임의의 프로세스를 포함한다. 이러한 프로세스들은 사용자 모드 또는 커널 모드(kernel mode)에서 실행할 수 있다. 본 명세서에서 사용되는 "프로세스"라는 용어 및 이로부터 변형된 형태의 용어들은 하나 이상의 통상적인 프로세스, 스레드(thread), 컴포넌트, 라이브러리, 태스크를 수행하는 객체 등을 포함할 수 있다. 프로세스는 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에서 구현될 수 있다. 하지만 실시예에서, 프로세스는 작업을 수행할 수 있거나 수행하는데에 사용되는 임의의 메커니즘을 지칭한다. 프로세스는 복수의 디바이스 또는 단일 디바이스에 걸쳐 분산될 수 있다. 하나 이상의 애플리케이션(210)은 API(215)를 통해서 I/O 매니저(235)로 (예컨대, 기능/방법 호출에 의한) 파일 시스템 요청을 할 수 있다.
I/O 매니저(235)는 어떤 I/O 요청 또는 요청들을 스토리지 컨트롤러(240)(또는 일부 다른 중간 구성요소)에게 발행해야 할지를 결정할 수 있다. I/O 매니저(235)는 또한 데이터를 파일 시스템 요청 진행, 완료, 또는 실패와 연관된 동작들로서 하나 이상의 애플리케이션(210)에 반환할 수 있다. 파일 시스템 요청이 트랜잭션을 포함하는 경우, I/O 매니저(235)는 (도시되지 않은) 트랜잭션 매니저가 적절하게 트랜잭션을 관리할 수 있도록 트랜잭션 매니저에게 알려줄 수 있다. 일부 실시예들에서, 트랜잭션 매니저의 기능은 I/O 매니저(235)에 포함될 수도 있다.
파일 시스템 구성요소(220)는 파일 시스템 객체들 또는 파일 시스템 객체들과 관련된 메타데이터를 스토어(250)에 기록할 때, Copy-on-Write, Write-in-Place 및 이들의 조합을 사용할 수 있다. "파일"이라는 용어는 디렉토리, 하위객체(children)를 갖지 않는 파일 시스템 객체(예컨대, 때때로 파일로서 생각되는 것), 다른 파일 시스템 객체 등을 포함할 수 있다.
Copy-on-Write 시에, 파일의 데이터가 수정되기 전에, 수정될 데이터의 카피(copy)가 다른 위치로 복사된다. Write-in-Place 시에, 파일의 데이터가 다른 위치에 오리지널 데이터를 복사하지 않은 채 그 자리에서 수정될 수 있다. Copy-on-Write 및 Write-in-Place의 혼합은 파일과 관련된 메타데이터에 대해 Copy-on-Write를 수행하는 것과 동시에 파일 내에 포함된 데이터에 대해 Write-in-Place를 수행하는 것을 포함할 수 있다.
파일 시스템의 객체들은 트랜잭션의 맥락으로 업데이트될 수 있다. 트랜잭션은 예컨대 원자성(atomic), 일관성(consistent), 고립성(isolated) 및 내구성(durable)을 포함하는 다양한 속성들에 의해 기술될 수 있는 동작들의 그룹이다. 본 명세서에서 사용되는 "트랜잭션(transaction)"이라는 용어는 적어도 일관성의 속성에 의해서 정의될 수 있으며, 전술된 다른 속성들 중 하나 이상에 의해서 정의될 수도 있다.
일관성 속성은 하나 이상의 파일에 대해서 데이터의 허용 상태(allowed state)를 지칭한다. (트랜잭션 중에는 비허용 상태를 거치더라도) 트랜잭션이 시작하기 전과 트랜잭션이 완료된 후에, 파일 시스템의 파일들은 허용 상태에 있게 된다. 예를 들어, 은행 송금은 하나의 계좌로부터의 인출 및 다른 계좌로의 입금을 포함하는 두 동작의 세트로서 실행될 수 있다. 이 예시에서의 일관성은 은행과 계좌 소유자의 통합된 계좌 잔고가 상수를 갖는 것으로서 정의될 수 있다(예컨대, T=A+B, 이때 T는 상수, A=은행 잔고, B=계좌 소유자 잔고). 이 예시에서의 일관성을 구현하기 위해서, 인출 및 입금 동작들은 동일한 금액에 대해 수행되어야 하고 각 계좌 상에서 두 동작 모두가 완료되거나 또는 두 동작 모두가 완료되지 않아야 한다.
체크포인트는 파일 시스템의 일관성 상태(consistent state)를 나타내도록 기록될 수 있다. 체크포인트는 체크포인트 및/또는 체크포인트와 연관된 데이터가 디스크에 올바르게 기록되었는지 여부를 판정하는데에 사용될 수 있는 하나 이상의 확인 코드(validation code)(예컨대, 하나 이상의 체크섬, 해시, 또는 다른 데이터)를 포함할 수 있다. 복구를 할 때, 마지막으로 기록된 체크포인트의 위치를 찾을 수 있다. 그 다음 체크포인트의 확인 코드(들)는 체크포인트 및/또는 체크포인트와 연관된 데이터가 디스크에 올바르게 기록되었는지 여부를 판정하는데에 사용될 수 있다. 만약 그렇지 않다면, 유효한 체크포인트가 발견될 때까지 이전의 체크포인트의 위치를 찾아서 유효성을 검사할 수 있다. 가장 최근의 유효 체크포인트가 발견되면, 파일 시스템의 마지막 일관성 상태가 알려진다. 이 포인트 이후에 발생한 파일 시스템 동작들은 폐기될 수 있거나 또는 원한다면 추가적인 복구 작업들이 수행될 수 있다.
일 실시예에서, 파일 시스템 상의 객체는 Dn으로 표기될 수 있으며, 이때 n은 시스템에 대한 객체를 식별한다. 파일 시스템 상의 객체들은 직렬화가능하거나(serializable)(예컨대, 스토어(250) 상의 데이터로서 표현될 수 있음) 역직렬화가능하다(deserializable). 객체 테이블은 각 객체 식별자를 스토어(250) 상의 그의 위치에 연관시킨다.
처음으로 Dn이 수정 트랜잭션에서 업데이트되면, Dn은 n을 이용하여 객체 테이블 내의 자신의 위치를 찾음으로써 발견된다. 예를 들면, 스토어(250) 상의 Dn의 스토리지 위치는 L1로 지칭된다.
그 다음 L1의 콘텐츠가 스토어(250)로부터 판독되고, 객체는 역직렬화될 수 있으며(예컨대, 직렬화된 포맷으로부터 객체의 구조로 변환됨), 수정될 객체의 일부분들이 메인 시스템 메모리로 복사된다. 업데이트들은 메모리 내의 일부분들(또는 그들의 카피들) 상에서 수행된다. 메모리 내의 일부분들이 수정되는 것과 관련하여, 스토어(250) 상에 하나 이상의 새로운 위치들(L2로 지칭됨)이 수정된 일부분들을 위해 지정된다.
메인 시스템 메모리 내의 이러한 카피들은 본 명세서에서 때때로 객체들의 "논리적 카피(logical copy)"로 지칭된다. 객체의 논리적 카피는 객체를 나타내는데에 사용될 수 있는 하나 이상의 데이터 구조를 포함한다. 논리적으로, 논리적 카피는 객체의 사본이다. 물리적으로, 논리적 카피는 객체의 사본을 생성하는데에 사용될 수 있는 (다른 데이터에 대한 포인터를 포함하는) 데이터를 포함한다. 예를 들어, 일 구현에서, 논리적 카피는 객체의 실제 카피(예컨대, 비트-바이-비트 카피)이거나 또는 객체를 생성하는데에 사용될 수 있는 데이터를 포함하는 데이터 구조일 수 있다.
다른 구현에서, 수정되지 않은 논리적 카피가 오리지널 객체를 참조하는 하나 이상의 포인터를 포함할 수 있다. 논리적 카피가 수정되면, 논리적 카피 내의 포인터는 (예컨대, 논리적 카피의 변경된 일부분에 있어서) 새로운 메모리 위치를 참조할 수 있는 반면, 다른 포인터들은 (예컨대, 논리적 카피의 변경되지 않은 일부분에 있어서) 오리지널 객체의 일부분을 참조할 수 있다. 포인터를 이용하여, 수정된 카피는 수정된 데이터와 함께 오리지널 객체의 수정되지 않은 데이터를 사용하여 구성될 수 있다. 예를 들면, 객체의 사본을 생성하는데에 필요한 스토리지를 감소시키기 위해서 논리적 카피의 생성이 수행될 수 있다.
또한, 본 명세서에서 직렬화 및 역직렬화가 언급되었지만, 본 명세서에 기술된 청구사항의 측면들이 관례적으로 직렬화 및 역직렬화로 생각되는 것으로 제한하는 것은 아니다. 일 실시예에서, 직렬화된 버전은 역직렬화된 버전과 매 비트마다 동일할 수 있다. 다른 실시예에서, 직렬화된 버전의 비트들은 역직렬화된 버전의 비트들과는 다른 포맷과 순서로 패키징될 수 있다. 실제로, 일 실시예에서, 직렬화 및 역직렬화는 스토어로부터의 객체들을 나타내는 데이터를 저장 및 검색하는 임의의 메커니즘을 의미하는 것으로 이해되어야 한다. 다른 메커니즘은, 예를 들어, 객체들의 속성을 텍스트 포맷으로 스토어에 기록하는 것, 객체들의 속성을 마크업(markup) 언어로 스토어에서 인코딩하는 것, 스토어 상의 객체들의 속성들과 다른 특징들을 저장하는 것, 등을 포함할 수 있다.
시스템의 재량에 따라(예컨대, 트랜잭션 실행 후에 또는 일부 다른 시간에), 시스템은 수정된 논리적 카피를 안정된 매체의 위치 L2에 다시 직렬화할 수 있다. 수정된 논리적 카피를 새로운 위치에 다시 기록하려는 것을 기록 플랜(write plan)이라고 지칭한다. 기록 플랜은 하나 이상의 객체에 대한 임의의 수의 업데이트들을 알아보게 할 수 있다. 기록 플랜은 둘 이상의 트랜잭션에서 발생하는 변화들을 참조할 수 있다. 복수의 기록 플랜이 단일 기록 플랜으로 결합될 수도 있다.
기록 플랜 매니저(237)는 다양한 업데이트들에 대한 기록 플랜을 생성하는 것과 관련될 수 있다. 기록 플랜이 복수의 파일 시스템 객체를 포함할 때(예컨대, 트랜잭션의 맥락에서), 기록 플랜 매니저(237)는 파일 시스템에 대한 일관성 상태를 유지하기 위해 트랜잭션에 관련된 모든 파일 시스템 객체들의 스토리지 상의 위치들을 나타내는 기록 플랜을 생성하도록 동작할 수 있다.
체크포인트 직후에 수정가 발생하는 경우, (복수의 위치에서 복제될 수 있는) 복구 블록(recovery block)이라 불리는 블록이 수정된 논리적 카피의 시작점(예컨대, L2)을 가리키도록 수정될 수 있다. L2에서의 객체 내의 필드는 다음에 기록될 위치를 가리킨다. 이러한 필드는 체크포인트들 사이에서 발생하는 기록 플랜들의 사슬 중 하나의 고리(a link in a chain of write plans)를 나타낸다.
논리적 카피를 기록하라는 요청을 전송하는 것과 관련해서, 객체 테이블이 수정될 수 있다. 특히, 객체의 식별자에 의해 인덱스된 위치값은 수정된 논리적 카피가 저장될 위치(즉, L2)의 위치값으로 설정될 수 있다. 이에 따라 객체 Dn의 후속하는 위치 검색이 객체의 새로운 버전인 위치 L2를 참조할 것이다.
만약 트랜잭션이 예컨대 Di 및 Dj의 둘 이상의 객체를 수정한다면, 객체들은 서로 "원자적으로 묶인(atomically bound)" 것으로 간주되어, 하나의 기록 플랜에 기록된다. 기록 플랜은 (예컨대, 관련된 객체들에 대한 고리들에서) 이러한 관계를 식별한다.
임의의 수의 객체들은 이러한 방식으로 지속될 수 있다. 주기적으로, 객체 테이블 또한 임의의 다른 객체와 동일한 방식으로 스토어(250)에 기록될 수 있다.
객체 테이블을 스토어(250)에 기록하라는 요청을 전송하는 것과 관련하여, 플러쉬 커맨드(flush command)도 스토리지 컨트롤러(240)에 전송될 수 있다. 플러쉬 커맨드는 스토리지 컨트롤러(240)가 스토어(250)의 비휘발성 메모리에 이미 기록되지 않은 자신의 휘발성 메모리로부터의 모든 데이터를 기록하도록 명령한다.
주기적으로, 체크포인트는 아래에서 보다 자세히 기술되는 바와 같이 스토리지에 기록될 수 있다. 체크포인트는 스토어(250)에 의해 저장되는 체크포인트 기록에 의해 표시될 수도 있다. 체크포인트는 어떠한 시간에도 기록될 수 있으며, 플러쉬 후에는 안정적이고 내구성 있게 될 수 있다. 안정적/내구성 있다는 것은 스토어의 비휘발성 메모리 상에 저장된 체크포인트를 지칭한다.
체크포인트가 안정적/내구성 있게 된 후에, 임의의 오래되고 사용되지 않은 객체들의 카피들에 대해 사용된 공간이 재사용될 수 있다. 플러쉬가 완료된 후에, 복구 블록이 다음 기록 플랜들의 사슬의 시작점을 가리키게 된다. 일 실시예에서, 복구 블록은 기록 플랜들의 사슬의 시작점이 객체 테이블의 새로운 위치를 가리키게 할 수 있다.
보다 구체적인 예시가, 본 명세서에 기술된 청구사항의 측면들을 도시한 블록도인 도 3과 관련하여 기술되었다. 도시된 바와 같이, 도 3은 메인 메모리(305) 및 스토어(250)를 나타낸다. 라인(307)은 메인 메모리(305)와 스토어(250) 사이의 분할을 나타낸다. 라인(307) 위의 객체들은 메인 메모리에 있는 반면, 라인(307) 아래의 객체들은 스토어(250)의 휘발성 또는 비휘발성 메모리에 있다.
객체들(314-316)은 메인 메모리(305) 내에 도시되었다. 구현에서, 객체들(314-316)은 각각 객체들(319-321)의 역직렬화된 논리적 카피들일 수 있다. 객체(319)는 스토어(250) 상의 위치(1550)에 위치되어 있고, 객체(320)는 스토어(250) 상의 위치(200)에 위치되어 있으며, 객체(321)는 스토어(250) 상의 위치(800)에 위치되어 있다.
객체 테이블(310)은 스토어(250) 상의 객체들(319-321)의 위치를 나타내는 키값의 쌍들(key value pairs)을 포함한다. 키값의 쌍들은 객체(319-321)의 식별자(n)를 이용하여 인덱스된다.
트랜잭션이 객체(316)를 (예컨대 객체(316)의 네임(name)을 foo.txt로 변경함으로써) 수정시킬 때, 일관성 구성요소(예컨대, 도 2의 일관성 구성요소(220))가 업데이트된 객체를 위한 새로운 스토리지 위치(예컨대, 위치(801))를 결정할 수 있다. 만약 그 객체가 파일이라면, 트랜잭션의 맥락에서 파일의 이름을 업데이트하는 것은 그 파일을 포함하는 디렉토리 또한 트랜잭션에 포함되게 할 수 있다. 예를 들면, 파일명이 변경되었을 때, 그 파일을 나타내는 객체와 그 파일을 포함하는 디렉토리를 나타내는 개체 모두가 트랜잭션에 포함되어야만 할 수 있다. 이러한 경우에, 객체를 포함하는 디렉토리는 객체(314)로서 표현되고, 업데이트된 디렉토리(예컨대, 객체(318))의 논리적 카피는 스토어(250) 내에 객체(323)로서 표현된다. 또한, 테이블(310)은 수정된 객체들(즉, 객체(317, 318))의 새로운 스토리지 위치들(즉, 위치(801, 1000))을 나타내기 위해서 테이블(311)로 논리적으로 업데이트되었다.
트랜잭션의 맥락에서의 객체의 수정가 다른 객체에도 영향을 미친다는 사실은, 예컨대 도 2의 I/O 매니저(235) 또는 일부 다른 구성요소에 의해서 명백하게 표시되거나 결정될 수 있다.
둘 이상의 객체들이 트랜잭션의 업데이트에 연관되는 경우에, 객체들은 앞서 언급된 바와 같이 "원자적으로 묶인" 것으로 간주된다. 복구 동작에서, 트랜잭션의 맥락에서 변경된 모든 객체들에 대한 변화들이 스토어(250) 내에서 발견되지 않는 한, 발견된 모든 변화들은 폐기된다. 다시 말하면, 만약 객체들 중 하나에 대한 변화가 발견되었지만 다른 객체들에 대한 변화가 발견되지 않았다면, 객체들 중 하나에 대한 변화는 폐기된다.
둘 이상의 객체들을 원자적으로 묶기 위해서, 일 실시예에서, 포인터가 저장되거나, 그외의 방법으로 스토어(250) 내의 각 객체와 연관될 수 있다. 포인터는 트랜잭션에 연관된 다른 객체(또는 그의 일부분)의 스토리지 위치를 나타낼 수 있다. 만약 트랜잭션에 추가적인 객체가 없다면, 포인터는 "데드 블록(dead block)"을 가리키거나 또는 다른 기록 플랜의 "헤드(head)" 객체의 스토리지 위치를 나타낼 수 있다. 이러한 헤드 객체는 기록 플랜, 기록 플랜의 수정된 객체(또는 그의 일부분) 등을 포함할 수 있다.
다음 스토리지 위치로의 포인터뿐만 아니라, "포인팅된" 객체의 올바른 콘텐츠를 나타내기 위해 데이터도 스토어(250)에 저장될 수 있다. 예를 들면, 포인팅된 객체의 올바른 콘텐트를 나타내는 해시(hash)가 저장될 수 있다.
도 3에서 나타낸 예시에서, 객체(322)와 연관된 포인터는 객체(323)와 연관된 스토리지 위치를 가리킬 수 있다. 포인터는 두 객체들을 함께 묶는다. 만약 복구 중에 이들 객체 중 하나가 발견되지 않거나 이들 객체가 올바른 콘텐트를 갖지 않으면, 발견된 객체들에 의해 표시되는 변화들은 폐기될 수 있다.
스토어(250)의 성질로 인해, 어느 객체가 스토어(250)의 비휘발성 메모리에 처음으로 기록될 것인지에 대한 보장이 없을 수 있다. 만약 객체(322)가 먼저 기록되었고 객체(323)가 기록되지 않았다면, 객체(322)로부터의 포인터는 거짓(spurious) 데이터를 가질 수 있는 스토리지 위치를 가리키게 될 것이다. 그러나, 그 스토리지 위치에서 데이터의 해시를 계산하고 계산된 해시를 객체(322)와 저장된 해시와 비교함으로써, 위치(1000)에서의 데이터는 유효하지 않은 데이터를 갖는 것으로 검출될 수 있다. 이러한 경우에, 복구하는 동안 복구 매니저(예컨대, 도 2의 복구 매니저(225))가 객체들(322, 323)에 의해 나타내어지는 변화들을 폐기할 수 있다.
복구 블록(330)은 체크포인트 이후에 데이터가 저장된 것으로 추정되는 제 1 스토리지 위치(이 경우에는 위치(801))를 가리킨다. 복구 블록(330)은 또한 제 1 스토리지 위치에 저장된 객체의 올바른 콘텐츠를 이용하여 계산된 해시를 포함하거나 해시와 연관될 수 있다.
도 4는 본 명세서에 기술된 청구사항의 측면들에 따라 파일 시스템 상에서 발생하는 업데이트를 일반적으로 나타낸 도면이다. 글로벌 테이블(405)은 스토어 상의 객체들의 위치를 식별하는 객체 테이블 및 할당된 스토어(250) 상의 공간과 관련된 할당 데이터를 포함한다. 진행 중인 업데이트들(410)도 도시되었다. 업데이트가 시간 축(415)을 만날 때 업데이트가 완료되며, 더 이상 어떠한 글로벌 테이블(405)도 수정할 필요가 없다. 업데이트들(410)의 각각의 업데이트 라인이 복수의 업데이트를 나타낼 수 있다. 일관성을 유지하기 위해서 복수의 업데이트가 함께 이루어져야 할 경우, 복수의 업데이트는 트랜잭션의 맥락에서 이루어질 수 있다.
체크포인트가 유효하기 위해서, 체크포인트는 일관성 상태에서 기록되어야만 한다. 기록 파일 시스템 상의 카피를 이용해서, 객체가 업데이트될 때 수정되는 객체의 논리적 카피가 파일 시스템의 새로운 위치에 저장된다. 이러한 새로운 위치는 객체 테이블에 대한 업데이트를 통해 객체 테이블 내에 반영된다. 일관성에 있어서는, 업데이트가 시스템 고장 전에 디스크에 완전하게 기록되지 않았을 수 있기 때문에, 디스크에 아직 기록되지 않은 업데이트를 객체 테이블에 반영하는 것이 올바르지 않을 수 있다. 유사하게, 업데이트가 완료되어 디스크에 기록되고 다른 트랜잭션-관련 업데이트들이 완료되지만 객체 테이블이 업데이트를 나타내지 않는 것 또한 올바르지 않을 수 있다.
일관성을 보장하기 위해서, 체크포인트는 업데이트를 위한 메타데이터가 글로벌 테이블 내에 반영될 때에 선택되어야만 한다. 만약 업데이트들(410)을 나타내는 각각의 선들이 글로벌 테이블(405)이 그 업데이트를 위해서 업데이트될 수 있는 기간을 나타낸다면, 시간(520)에서 체크포인트를 수행하는 것은 비일관성 상태를 산출할 수 있지만 시간(525)에 체크포인트를 수행하는 것은 일관성 상태를 산출할 것이다.
도 5는 본 명세서에 기술된 청구사항의 측면들에 따른 예시적인 체크포인트 버킷들을 도시한 블록도이다. 전술된 이슈들과 그 외의 이슈들을 해결하기 위해서, 각 업데이트가 체크포인트 버킷(bucket)(예컨대, 버킷들(515) 중 하나)과 연관될 수 있다. 체크포인트 버킷은, 체크포인트의 체크포인트 데이터가 디스크에 기록되기에 앞서, 적어도 체크포인트 버킷와 연관된 업데이트들의 기록 플랜들을 설명하기 위해서 글로벌 테이블이 업데이트되어야 한다는 것을 나타내는 논리적 개념이다. 다시 말하면, 업데이트들이 어떤 위치에 현재 기록되었거나 또는 기록되지 않았더라도 글로벌 테이블은 버킷의 업데이트들의 위치 및 할당 정보를 설명하기 위해 업데이트되어야 한다.
주기적으로(예컨대, 복구 윈도우에 기초하여 체크포인트 타이머가 만료되었을 때, 소정의 수의 기록들이 발생된 후, 일부 다른 임계값이 초과된 후, 등), 체크포인트를 생성하라는 결정이 내려질 수 있다. 체크포인트 생성 결정이 내려지면, 체크포인트 매니저는 체크포인트 버킷을 나타내는 데이터(예컨대 데이터 구조(510))가 후속하는 업데이트와 연관되도록 업데이트할 수 있다. 예를 들면, 체크포인트 매니저는 현재의 체크포인트 버킷을 나타내는 데이터(예컨대, 데이터 구조(510))에 대한 배타적 락(exclusive lock)(예컨대, 락(505))을 획득할 수 있다. 체크포인트 매니저가 데이터에 대한 배타적 락을 획득한 후에, 체크포인트 매니저는 후속하는 업데이트들에 대한 새로운 체크포인트 버킷을 나타내도록 데이터를 업데이트할 수 있다. 데이터가 후속하는 업데이트들에 대한 다른 체크포인트 버킷을 나타내도록 변경될 때까지 모든 후속하는 업데이트들은 새로운 체크포인트 버킷과 연관된다.
체크포인트 버킷은 논리적 개념으로 생각될 수 있으며 다양한 방식으로 구현될 수 있다. 예를 들어 일 구현에서, 체크포인트 버킷은 체크포인트 버킷과 연관된 각각의 업데이트로의 포인터를 구비하는 리스트와 같은 데이터 구조로서 구현될 수 있다. 다른 예시로서, 체크포인트 버킷은 각 업데이트에 대해 유지되는 데이터로서 구현될 수 있으며, 이러한 데이터는 그 업데이트와 연관된 체크포인트를 나타낸다. 다른 예시로서, 체크포인트 버킷은 계수 세마포어(counting semaphore)로서 구현될 수 있다. 이러한 예시에서, 어떤 업데이트들이 디스크에 기록되어야 하는지는 알려지지 않을 수 있지만, 여전히 디스크에 기록되어야만 하는 업데이트들의 수는 알려진다. 판독/기록 락이 이러한 예시에서 사용될 수도 있다.
전술된 예시들은 체크포인트 버킷을 구현하는 포괄적인 또는 독점적인 방식을 의도하는 것은 아니다. 실제로, 본 명세서에서의 내용에 기초하여, 당업자는 체크포인트 버킷을 구현하는 다수의 다른 메커니즘을 인식할 수 있을 것이다.
(예컨대 데이터 구조(510)를 변경함으로써) 후속하는 업데이트들에 대한 체크포인트 버킷을 나타낸 후에, 체크포인트 매니저는 현재 체크포인트 버킷 내의 모든 업데이트들에 대한 기록 플랜들이 생성되기를 기다릴 수 있다. 현재 체크포인트 버킷 내의 모든 업데이트들에 대한 기록 플랜들이 생성된 후에(그러나 어쩌면 스토리지에는 기록되지 않았을 경우에), 체크포인트 매니저는 도 4의 글로벌 테이블(405)의 스냅샷(snapshot)을 찍고, 글로벌 테이블(405)의 스냅샷을 스토어에 기록하도록 기록 플랜을 생성할 수 있다. 스냅샷은 Copy-on-Write 또는 다른 메커니즘을 통해서 글로벌 테이블(405)의 논리적 카피로서 생성될 수 있다.
도 4를 다시 참조하면, 체크포인트 매니저는 현재 체크포인트 버킷 내의 모든 업데이트들이 생성되기를 기다리고, 체크포인트 매니저가 체크포인트를 기록하기 위한 기록 플랜을 생성하는 동안, 체크포인트에 후속하는 업데이트들에 대한 기록 플랜들이 생성되어 디스크에 기록될 수 있다. 그러나, 체크포인트 매니저가 글로벌 테이블의 스냅샷을 획득하기 위해 찾을 때, 체크포인트 매니저는 스냅샷 생성 이전에 글로벌 테이블(405)에 대한 배타적 락(exclusive lock)을 획득할 수 있다. 체크포인트 매니저가 배타적 락을 갖는다 해도, 다른 업데이트들에 대한 기록 플랜들이 여전히 생성될 수 있고 이러한 기록 플랜들은 스토어 상에 저장될 수도 있지만, 체크포인트 매니저가 자신의 배타적 락을 해제하기 전까지는 글로벌 테이블(예컨대, 객체 테이블)이 이러한 기록 플랜들을 가리키도록 업데이트될 수 없다. 락의 해제와 관련하여, 체크포인트 매니저는 후속하는 체크포인트가 이용가능하게 되었으며 후속하는 업데이트들이 글로벌 테이블을 업데이트할 수 있음을 나타내는 신호(예컨대, Raise an event)를 전송할 수 있다.
복구를 돕기 위해, 체크포인트는 아래의 규칙에 따라 체크포인트를 확인하는 확인 코드와 함께 디스크에 기록될 수 있다:
1. 디스크에 기록될 기록 플랜들에 의해 표시되는 데이터를 기다린다(예컨대, 디스크에 기록될 체크포인트와 연관된 모든 업데이트들을 기다린다);
2. 체크포인트와 연관된 모든 데이터가 디스크에 기록되도록 요청한다(예컨대, 메타데이터의 논리적 카피가 디스크에 기록되도록 요청한다);
3. 플러쉬를 발행 또는 대기하고, 플러쉬가 성공적으로 완료되었다는 답신을 기다린다.
4. 디스크에 기록된 체크포인트 데이터에 대한 확인 코드를 생성한다. 일 실시예에서, 확인 코드는 디스크에 기록된 데이터의 서브셋(subset)에 대한 것일 수 있다. 예를 들어, 만약 트리의 각 노드가 자신의 자식(children)에 대한 확인 코드를 포함하는 트리에 파일에 대한 데이터가 저장된다면, 확인 코드는 트리의 루트 노드(root node)에 대한 것일 수 있다. 이러한 실시예에서, 확인 코드는 루트 노드와 함께 기록될 수 있고 또한 확인 코드가 올바르다는 것을 증명하는데에 사용될 수 있다.
5. 확인 코드(및 루트 노드와 같은 임의의 연관된 데이터)가 디스크에 기록되도록 요청한다. 확인 코드는 시스템 고장 전에 실제로 디스크에 도달하지 않을 수도 있음을 인지해야 한다. 만약 그렇지 않으면, 체크포인트는 유효한 체크포인트가 아니다.
이들 규칙들에 따르면, 복구 중에 만약 체크포인트가 스토리지 상에서 발견되고 체크포인트의 내부 확인 코드가 유효하다면, 체크포인트와 연관된 다른 데이터가 스토리지 상에 저장되었고 그것이 유효할 것이 기대된다. 만약 확인 코드가 루트 노드에 포함되었다면, 루트 노드 내의 다른 데이터(예컨대, 트리 내의 다른 노드들로의 포인터)가 체크포인트에 상응하는 나머지 데이터를 발견하는데에 사용될 수 있다.
대안으로, 체크포인트와 연관된 각 업데이트에 대한 확인 코드가 스토리지에 기록될 수 있다. 예를 들면, 체크포인트는 그 체크포인트에 앞서, 그리고 이전의 체크포인트 이후에 발생하도록 되어 있던 모든 업데이트들의 블록들을 나타낼 수 있다. 나타내어진 각각의 블록에 대해서, 체크포인트는 블록의 올바른 콘텐츠를 나타내는 확인 코드를 저장할 수 있다. 이러한 대안에서의 복구 중에, 체크포인트를 인증하기 위해서 각 블록이 그 체크포인트의 연관된 확인 코드에 대해 확인될 수 있다.
도 2를 참조하면, 일 실시예에서, 체크포인트 매니저(230)는 아래의 작업들을 수행하도록 동작할 수 있다:
1. 파일 시스템 객체들을 업데이트하라는 요청들과 연관시키도록 제 1 체크포인트를 결정한다. 전술된 바와 같이, 체크포인트 매니저(230)는 데이터 구조(예컨대, 도 5의 데이터 구조(510))가 새로운 체크포인트 버킷을 가리키도록 업데이트함으로써 이것을 수행할 수 있다. 그 다음 각각의 후속하는 업데이트 요청이 수신됨에 따라, 이러한 요청이 새로운 체크포인트 버킷에 할당될 수 있다.
본 명세서에서 사용되는 "제 1의"라는 용어는 가장 첫 번째 체크포인트를 의미하는 것이 아니며, "제 2의" 체크포인트로부터 구분하도록 사용된 것이다. 다시 말하면, N개의 체크포인트들이 존재하는 경우, 제 1 체크포인트는 임의의 X일 수 있으며, 이때 1≤X≤N이고, 제 2 체크포인트는 임의의 Y일 수 있으며, 이때 1≤Y≤N이고 X<Y 또는 X>Y이다.
2. 파일 시스템의 스토리지에 체크포인트와 연관된 체크포인트 데이터를 언제 기록할지를 결정한다. 예를 들어, 체크포인트 타이머가 만료될 수 있거나, 업데이트의 수가 초과될 수 있거나, 또는 일부 다른 임계값이 체크포인트 데이터를 기록할 시간임을 결정하는데에 사용될 수 있다.
3. 파일 시스템 객체들을 업데이트하라는 후속 요청들에 대한 제 2 체크포인트를 결정한다. 전술된 바와 같이, 체크포인트 매니저(230)는 데이터 구조의 배타적 락(예컨대, 락(505))을 획득한 후에 데이터 구조(예컨대, 도 5의 데이터 구조(510))를 업데이트함으로써 이것을 수행할 수 있다.
4. 파일 시스템의 일관성 상태(consistent state)를 기다리는 한편, 후속 요청들을 위해 데이터 기록을 준비하도록 한다. 일관성 상태는 현재 체크포인트 버킷과 연관된 모든 업데이트들이 스토리지 상에 나타날 때 (예컨대, 스토리지에 성공적으로 기록되었을 때) 발생한다. 후속 요청들을 위해 데이터 기록을 준비하도록 하는 것은, 기록 플랜들이 생성되어 후속 요청들을 위해 스토리지 상에 기록되는 것을 허용하지만 메타데이터(예컨대, 글로벌 테이블)의 논리적 카피가 생성되기 전까지는 메타데이터가 업데이트되는 것을 허용하지 않는 것을 포함한다.
5. 파일 시스템의 메타데이터의 논리적 카피를 생성한다. 이것은 전술된 것처럼 글로벌 테이블의 스냅샷을 찍음으로써 수행될 수 있다.
6. 메타데이터의 논리적 카피를 스토리지에 기록한다. 일 실시예에서, 이것은 논리적 카피가 스토리지에 기록되도록 요청하고 논리적 카피가 스토리지에 기록되었다는 컨펌(confirmation)을 기다리는 것을 포함할 수 있다. 다른 실시예에서, 메타데이터의 논리적 카피를 스토리지에 기록하는 것은, 업데이트들을 허용하기 이전에 메타데이터에 대한 후속 업데이트들이 Copy-on-Write를 발생시키도록, 스토리지 상의 카피가 깨끗하다고 마킹하는 것을 포함할 수 있다.
7. 스토리지에 적어도 하나의 확인 코드를 기록한다. 전술된 바와 같이, 확인 코드는 체크포인트 이전의 업데이트가 스토리지에 기록되었는지 여부와 체크포인트 기록 자신이 유효한지 여부를 판정하는데에 사용가능할 수 있다.
API(215)는 트랜잭션에 연관된 객체를 수정하라는 요청을 수신할 수 있다. 응답시에, I/O 매니저(235)는 객체를 스토어의 스토리지 위치(예컨대, L1)에 위치시키고, 객체의 논리적 카피를 생성하고, 트랜잭션의 맥락에서 객체를 변경하고, 변경된 논리적 카피를 저장하기 위한 제 2 스토리지 위치(예컨대, L2)를 결정하고, 변경된 논리적 카피를 스토리지 컨트롤러(240)에 기록하라는 요청을 전송하며, 논리적 카피가 제 2 스토리지 위치에 저장되었음을 나타내도록 휘발성 데이터 구조(예컨대, 객체 테이블(310))를 업데이트할 수 있다.
만약 API(215)가 트랜잭션에 연관된 다른 객체를 수정하라는 요청을 수신하면, I/O 매니저(235)는 추가적인 작업들을 수행할 수 있으며, 이러한 추가적인 작업은 상기 다른 객체와 제 1 객체를 함께 묶는 연계(예컨대, 기록 플랜)를 생성하는 것을 포함한다. 그 다음, 객체들의 수정를 스토리지에 기록하라는 요청을 전송하는 것과 관련하여, I/O 매니저(235)는 상기 연계성을 스토리지 컨트롤러(240)에 기록하라는 요청도 전송할 수 있다.
도 6 내지 8은 본 명세서에 기술된 청구사항의 측면들에 따라 발생할 수 있는 예시적인 작업들을 일반적으로 나타내는 순서도이다. 설명의 단순화를 위해서, 도 6 내지 8과 관련하여 기술된 방법론은 일련의 행동들로 도시 및 기술되었다. 본 명세서에 기술된 청구사항의 측면들이 도시된 행동들 및/또는 행동들의 순서에 의해 제한되는 것이 아님을 이해하고 인식해야 한다. 일 실시예에서, 행동들은 아래에 기술된 바와 같은 순서대로 발생한다. 그러나 다른 실시예들에서, 행동들은 동시에 발생할 수 있거나, 다른 순서로 발생할 수 있고/있거나 본 명세서에 제시 및 기술되지 않은 다른 행동들과 함께 발생할 수 있다. 또한, 본 명세서에 기술된 청구사항의 측면들에 따른 방법론을 구현하는데에 도시된 모든 행동들이 요구되는 것은 아닐 수 있다. 또한, 당업자는 이러한 방법론이 상태 다이어그램을 통한 일련의 상호관계적 상태들로서 또는 이벤트들로서 다르게 표현될 수 있다는 것을 이해하고 인식할 것이다.
도 6을 참조하면, 블록(605)에서 작업이 개시된다. 블록(610)에서, 제 1 세트의 업데이트들이 제 1 체크포인트와 연관될 것임이 표시된다. 이것은 후속 업데이트들이 제 1 체크포인트와 연관될 것임을 나타내도록 데이터 구조를 수정함으로써 수행될 수 있다. 이것은, 예를 들어 전술된 바와 같이 락(lock)의 획득 및 해제와 체크포인트 버킷을 참조하기 위해 포인터 또는 다른 데이터 구조를 업데이트하는 것을 포함할 수 있다. 여기에서 "제 1의"라는 용어가 파일 시스템의 임의의 체크포인트를 의미할 수 있으며 후속 체크포인트로부터 해당 체크포인트를 구분하도록 사용된다는 것을 다시 인지해야 한다. 예를 들어, 도 2 내지 5를 참조하면, 체크포인트 매니저(230)는 데이터 구조(510)에 대한 락(505)을 획득할 수 있고 체크포인트 버킷들(515) 중 하나를 가리키도록 포인터를 업데이트할 수 있다.
블록(615)에서, 업데이트들이 수신되어 제 1 체크포인트와 연관된다. 예를 들어, 도 2를 참조하면, I/O 매니저(235)는 API(215)를 통해 애플리케이션(들)(210)으로부터의 업데이트 요청들을 수신할 수 있다. 업데이트들이 수신되면, 체크포인트와 연관될 수 있다.
블록(620)에서, 제 1 체크포인트의 체크포인트 데이터를 파일 시스템의 스토리지에 기록하라는 결정이 이루어진다. 예를 들어, 도 2를 참조하면, 체크포인트 매니저(230)는 체크포인트 타이머가 만료되었다고 결정할 수 있고 그에 기초하여 체크포인트가 스토어(250)에 기록될 것임을 결정할 수 있다.
블록(625)에서, 후속 업데이트들에 대한 체크포인트를 나타내기 위해 데이터 구조에 대한 락이 획득된다. 예를 들어, 도 2 및 5를 참조하면, 체크포인트 매니저(230)가 데이터 구조(510)에 대한 락(505)을 획득할 수 있다.
블록(630)에서, 데이터 구조가 다른 체크포인트를 참조하도록 업데이트된다. 이러한 데이터 구조를 수정하는 것은, 제 1 세트의 업데이트들에 후속하여 발생하는 임의의 업데이트가 후속 체크포인트와 연관될 것임을 나타낸다. 예를 들어, 도 2 및 5를 참조하면, 체크포인트 매니저(230)는 체크포인트 버킷들(515) 중 다른 체크포인트 버킷을 참조하도록 데이터 구조(510)를 업데이트할 수 있다.
블록(635)에서, 락이 해제된다. 예를 들어, 도 2 및 5를 참조하면, 체크포인트 매니저(230)는 락(505)을 해제할 수 있다.
블록(640)에서, 업데이트들에 대한 기록 플랜들이 생성된다. 각 기록 플랜은 적어도 제 1 세트의 업데이트들 중 적어도 하나를 나타내는 데이터에 대한 스토리지 상의 계획된 위치를 나타낸다. 예를 들어, 도 2를 참조하면, 기록 플랜 매니저(237)는 체크포인트와 연관된 업데이트들에 대한 기록 플랜들을 생성하는 것과 관련되었을 수 있다.
블록(645)에서, 메타데이터는 기록 플랜들에 대해서 업데이트된다. 이러한 메타데이터는 (기록 플랜들이 스토리지에 기록되었거나 아직 기록되지 않았을 수 있을지라도) 기록 플랜들에 대한 스토리지 위치를 나타낸다. 예를 들어, 도 2를 참조하면, 기록 플랜 매니저(237)는 기록 플랜들에 의해 수정된 객체의 스토리지 위치를 나타내도록 글로벌 테이블을 업데이트할 수 있다.
블록(645) 후에, 도 7의 블록(705)에서 작업들이 계속된다. 도 7을 참조하면, 블록(705)에서, 메타데이터에 대해서 락이 획득된다. 예를 들어, 도 2 및 4를 참조하면, 체크포인트 매니저(230)는 글로벌 테이블(405)에 대한 락을 획득할 수 있다. 체크포인트 매니저(230)는 메타데이터가 제 1 세트의 업데이트들 내의 모든 업데이트들에 대한 스토리지 위치를 반영할 때까지 기다릴 수 있다(제 1 세트의 업데이트들 모두가 이러한 스토리지 위치에 기록되었거나 기록되지 않았을 수 있더라도).
블록(710)에서, 메타데이터의 논리적 카피가 생성된다. 전술된 바와 같이, 이것은 새로운 카피의 메타데이터를 생성하는 것, 메타데이터에 대한 후속 업데이트가 Copy-on-Write를 발생시키도록 메타데이터를 깨끗하다고 마킹하는 것, 또는 일부 다른 논리적 복제 메커니즘을 포함할 수 있다. 예를 들어, 도 2 및 4를 참조하면, 체크포인트 매니저(230)는 글로벌 테이블(405)의 논리적 카피를 생성할 수 있다.
블록(715)에서, 락이 해제된다. 예를 들어, 도 2 및 4를 참조하면, 체크포인트 매니저(230)는 글로벌 테이블(405)에 대한 락을 해제할 수 있다.
블록(720)에서, 제 1 체크포인트 데이터를 기록하기 위한 기록 플랜이 생성된다. 이러한 기록 플랜을 생성하는 것은, 현재 기록 플랜에 상응하는 체크포인트와 데이터가 디스크에 기록되는 것에 이어지는 업데이트들에 대해 기록 플랜들이 생성되는 것(그리고 디스크에 기록되는 것)과 동시에 발생한다. 예를 들어, 도 2를 참조하면, 체크포인트 매니저(230)는 제 1 체크포인트의 체크포인트 데이터에 대한 기록 플랜을 생성하도록 기록 플랜 매니저(237)를 사용할 수 있다. 이러한 데이터는 앞서 언급된 글로벌 테이블의 논리적 카피를 포함할 수 있다.
블록(725)에서, 일 실시예에 따르면, 체크포인트 매니저가 제 1 세트의 업데이트들의 모든 업데이트들이 성공적으로 스토리지에 기록되기를 기다릴 수 있다. 모든 업데이트들이 성공적으로 스토리지에 기록된 후에, 업데이트 매니저는 확인 코드를 포함하는 최종 체크포인트 레코드(record)을 기록할 수 있다. 전술된 바와 같이, 이것은 복구시 체크포인트에 상응하는 모든 업데이트들이 스토리지에 기록된 것으로 예상되는지를 결정하게 위해서 간단하게 확인 코드를 검사할 수 있도록 한다.
다른 실시예에서, 체크포인트 매니저는 체크포인트 레코드 내에 몇몇 확인 코드를 기록할 수 있다. 이러한 확인 코드들은 제 1 세트의 업데이트들의 업데이트의 스토리지 위치와 연관될 수 있다. 이러한 실시예에서, 체크포인트 매니저는 이들 업데이트들이 스토리지에 기록되기를 기다릴 수 있거나 또는 기다리지 않고 체크포인트 레코드를 기록할 수 있다. 만약 후자가 선택된다면, 유효 체크포인트 레코드가 디스크 상에 있음을 입증하기보다는 복구 동안에 적절한 체크포인트를 찾는 것이 더 포함될 수 있다.
블록(730)에서, 체크포인트 데이터는 스토리지에 기록될 수 있다. 이것은 예를 들어 체크포인트 데이터와 연관된 기록 플랜을 스토리지에 기록하는 것을 포함할 수 있다. 다른 예시로서, 이것은 글로벌 테이블의 논리적 카피를 참조하는 스토리지에 체크포인트 기록을 기록하는 것을 포함할 수 있다. 예를 들어, 도 2를 참조하면, 체크포인트 매니저(230)는 체크포인트 데이터에 상응하는 기록 플랜이 스토리지에 기록될 것을 요청할 수 있다.
블록(735)에서, 적어도 하나의 확인 코드가 스토리지에 기록된다. 적어도 하나의 확인 코드를 스토리지에 기록하는 것은, 글로벌 테이블의 논리적 카피를 참조하는 스토리지에 체크포인트 레코드를 기록하는 것과 결합될 수 있다. 예를 들어, 도 2를 참조하면, 체크포인트 매니저(230)는 글로벌 테이블의 논리적 카피를 참조하며 체크포인트 레코드의 콘텐츠를 인증하기 위한 확인 코드를 포함하는 스토리지에 체크포인트 레코드를 기록할 수 있다.
블록(740)에서, 만약 존재한다면, 다른 작업들이 수행될 수 있다.
도 8을 참조하면, 블록(805)에서 작업들이 시작된다. 블록(810)에서, 복구 요청이 수신된다. 예를 들어, 도 2를 참조하면, 복구 매니저(225)가 스토어(250)에 저장된 데이터에 대한 복구를 수행하라는 복구 요청을 수신할 수 있다.
블록(815)에서, 체크포인트 데이터가 발견된다. 예를 들어, 도 2를 참조하면, 복구 매니저(225)는 스토어(250)(또는 다른 스토어) 상에 저장된 최후의 체크포인트 데이터를 발견할 수 있다.
블록(820)에서, 체크포인트 데이터는 확인 코드를 이용하여 인증된다. 예를 들어, 도 2를 참조하면, 복구 매니저(225)는 체크포인트 데이터의 체크섬을 계산하고 이러한 체크섬을 체크포인트 데이터와 저장된 체크섬에 비교할 수 있다. 만약 체크섬이 일치하면, 체크포인트는 유효한 것으로 간주될 수 있다. 만약 추가적인 확인이 요구된다면, 복구 매니저는 체크포인트 데이터에 의해 참조되는 글로벌 테이블에 의해 나타내어진 하나 이상의 객체를 확인하고자 시도할 수 있다.
블록(825)에서, 만약 존재한다면, 다른 작업들이 수행된다.
전술된 상세한 설명에서 볼 수 있는 바와 같이, 파일 시스템에 대한 체크포인트와 관련된 측면들이 기술되었다. 본 명세서에 기술된 청구사항의 측면들이 다양한 변경사항과 대안적인 구조에 대해 민감하지만, 본 명세서에 설명된 소정의 실시예들이 도면에 도시되었으며 위에서 상세하게 기술되었다. 그러나, 청구된 청구사항의 측면들을 개시된 특정한 형태로 제한하고자 하는 것이 아니며, 그와 반대로 본 명세서에 기술된 청구사항의 다양한 측면들의 범주 및 사상 내에 포함되는 모든 변경사항, 대안적인 구성들 및 그의 동등물을 커버하고자 한다는 것을 이해해야 한다.
Claims (37)
- 하드웨어 컴퓨팅 장치에서 수행되는 방법으로서,
체크포인트를 복수의 파일 시스템 객체의 업데이트와 연관시키는 단계- 상기 업데이트는 트랜잭션에 대응하고, 상기 파일 시스템 객체는 저장 장치 상의 대응하는 제1 위치에 저장되고, 상기 업데이트는 상기 파일 시스템 객체의 적어도 일부의 수정된 논리적 카피를 포함함 -와,
상기 제1 위치와 다른 제2 위치에서 상기 업데이트를 상기 저장 장치에 기록하기 위한 기록 플랜(write plan)을 생성하되 상기 생성과 병행하여, 상기 연관시키는 단계에 후속하여 발생하는 후속 업데이트에 대해 다른 기록 플랜이 또한 생성되는 것을 허용하는 단계- 상기 생성된 기록 플랜은 상기 업데이트가 상기 트랜잭션의 컨텍스트에서 서로를 바인딩함을 지정하고, 상기 생성된 기록 플랜은 상기 제2 위치를 나타냄 -와,
상기 생성된 기록 플랜에 기초하여 또한 상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에서 상기 저장 장치에 기록되는 것에 응답하여, 체크포인트 정보를 상기 저장 장치에 기록하는 단계- 상기 체크포인트 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -를
포함하는 방법.
- 제 1 항에 있어서,
상기 연관시키는 단계에 앞서, 상기 업데이트가 상기 체크포인트와 연관될 것이라는 표시를 제공하는 단계를 더 포함하는
방법.
- 제 1 항에 있어서,
상기 후속 업데이트가 후속 체크포인트와 연관될 것이라는 표시를 제공하는 단계를 더 포함하는
방법.
- 제 1 항에 있어서,
상기 업데이트를 상기 제2 위치에서 상기 저장 장치에 기록하는 단계를 더 포함하는
방법.
- 제 1 항에 있어서,
기록된 상기 체크포인트 레코드는 상기 기록된 업데이트를 인증하는데 사용되도록 구성된 확인 코드를 포함하는
방법.
- 제 5 항에 있어서,
상기 확인 코드는 복구 동작에 사용되도록 더 구성되는
방법.
- 컴퓨팅 장치에 의해 실행되는 경우 상기 컴퓨팅 장치로 하여금 동작들을 수행하게 하는 컴퓨터 실행가능 명령어를 저장하는 적어도 하나의 컴퓨터 저장 매체로서,
상기 동작들은
체크포인트를 복수의 파일 시스템 객체의 업데이트와 연관시키는 동작- 상기 업데이트는 트랜잭션에 대응하고, 상기 파일 시스템 객체는 저장 장치 상의 대응하는 제1 위치에 저장되고, 상기 업데이트는 상기 파일 시스템 객체의 적어도 일부의 수정된 논리적 카피를 포함함 -과,
상기 제1 위치와 다른 제2 위치에서 상기 업데이트를 상기 저장 장치에 기록하기 위한 기록 플랜을 생성하되 상기 생성과 병행하여, 상기 연관시키는 동작에 후속하여 발생하는 후속 업데이트에 대해 다른 기록 플랜이 또한 생성되는 것을 허용하는 동작- 상기 생성된 기록 플랜은 상기 업데이트가 상기 트랜잭션의 컨텍스트에서 서로를 바인딩함을 지정하고, 상기 생성된 기록 플랜은 상기 제2 위치를 나타냄 -과,
상기 생성된 기록 플랜에 기초하여 또한 상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에서 상기 저장 장치에 기록되는 것에 응답하여, 체크포인트 정보를 상기 저장 장치에 기록하는 동작- 상기 체크포인트 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -을 포함하는
컴퓨터 저장 매체.
- 제 7 항에 있어서,
상기 동작들은 상기 연관시키는 동작에 앞서, 상기 업데이트가 상기 체크포인트와 연관될 것이라는 표시를 제공하는 동작을 더 포함하는
컴퓨터 저장 매체.
- 제 7 항에 있어서,
상기 동작들은 상기 후속 업데이트가 후속 체크포인트와 연관될 것이라는 표시를 제공하는 동작을 더 포함하는
컴퓨터 저장 매체.
- 제 7 항에 있어서,
상기 동작들은 상기 업데이트를 상기 제2 위치에서 상기 저장 장치에 기록하는 동작을 더 포함하는
컴퓨터 저장 매체.
- 제 7 항에 있어서,
기록된 상기 체크포인트 레코드는 상기 기록된 업데이트를 인증하는데 사용되도록 구성된 확인 코드를 포함하는
컴퓨터 저장 매체.
- 제 11 항에 있어서,
상기 확인 코드는 복구 동작에 사용되도록 더 구성되는
컴퓨터 저장 매체.
- 동작들을 수행하도록 구성된 컴퓨팅 장치로서,
상기 동작들은
체크포인트를 복수의 파일 시스템 객체의 업데이트와 연관시키는 동작- 상기 업데이트는 트랜잭션에 대응하고, 상기 파일 시스템 객체는 저장 장치 상의 대응하는 제1 위치에 저장되고, 상기 업데이트는 상기 파일 시스템 객체의 적어도 일부의 수정된 논리적 카피를 포함함 -과,
상기 제1 위치와 다른 제2 위치에서 상기 업데이트를 상기 저장 장치에 기록하기 위한 기록 플랜을 생성하되 상기 생성과 병행하여, 상기 연관시키는 동작에 후속하여 발생하는 후속 업데이트에 대해 다른 기록 플랜이 또한 생성되는 것을 허용하는 동작- 상기 생성된 기록 플랜은 상기 업데이트가 상기 트랜잭션의 컨텍스트에서 서로를 바인딩함을 지정하고, 상기 생성된 기록 플랜은 상기 제2 위치를 나타냄 -과,
상기 생성된 기록 플랜에 기초하여 또한 상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에서 상기 저장 장치에 기록되는 것에 응답하여, 체크포인트 정보를 상기 저장 장치에 기록하는 동작- 상기 체크포인트 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -을 포함하는
컴퓨팅 장치.
- 제 13 항에 있어서,
상기 컴퓨팅 장치는 상기 연관시키는 동작에 앞서, 상기 업데이트가 상기 체크포인트와 연관될 것이라는 표시를 제공하도록 더 구성되는
컴퓨팅 장치.
- 제 13 항에 있어서,
상기 컴퓨팅 장치는 상기 후속 업데이트가 후속 체크포인트와 연관될 것이라는 표시를 제공하도록 더 구성되는
컴퓨팅 장치.
- 제 13 항에 있어서,
상기 컴퓨팅 장치는 상기 업데이트를 상기 제2 위치에서 상기 저장 장치에 기록하도록 더 구성되는
컴퓨팅 장치.
- 제 13 항에 있어서,
기록된 상기 체크포인트 레코드는 상기 기록된 업데이트를 인증하는데 사용되도록 구성된 확인 코드를 포함하고, 상기 확인 코드는 복구 동작에 사용되도록 더 구성되는
컴퓨팅 장치.
- 적어도 하나의 처리 장치 및 메모리를 포함하는 적어도 하나의 컴퓨팅 장치에서 수행되는 방법으로서,
상기 적어도 하나의 컴퓨팅 장치에 의해, 파일 시스템에 대한 업데이트를 제2 위치에 기록하기 위한 기록 플랜을 생성하는 단계- 상기 업데이트는 제1 위치에 저장된 객체에 대한 것이며, 상기 객체는 상기 파일 시스템의 객체이고, 상기 업데이트는 체크포인트와 연관되고, 상기 제2 위치는 상기 제1 위치와 다름 -와,
상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에 기록되는 것과 연계하여 상기 적어도 하나의 컴퓨팅 장치에 의해, 상기 체크포인트에 대한 정보를 상기 제2 위치에 기록하는 단계- 상기 기록된 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -를 포함하는
방법.
- 제 18 항에 있어서,
상기 체크포인트 정보는 상기 파일 시스템에 대한 적어도 하나의 업데이트를 나타내는
방법.
- 제 18 항에 있어서,
상기 체크포인트 정보는 상기 기록된 체크포인트 정보가 정확히 기록되었음을 판정하기에 충분한 확인 코드를 포함하는
방법.
- 제 18 항에 있어서,
상기 기록 플랜은 상기 파일 시스템에 대한 적어도 하나의 업데이트를 위한 위치를 나타내는
방법.
- 제 18 항에 있어서,
상기 체크포인트 정보는 상기 객체의 저장 위치를 나타내는
방법. - 제 18 항에 있어서,
상기 체크포인트 정보는 공간 할당 정보를 포함하는
방법.
- 제 18 항에 있어서,
상기 기록하는 단계는 상기 객체에 대한 업데이트가 상기 제1 위치에 기록되는 것에 후속하는
방법.
- 함께 동작들을 수행하도록 구성된 적어도 하나의 컴퓨팅 장치 및 적어도 하나의 프로그램 모듈을 포함하는 시스템으로서,
상기 적어도 하나의 컴퓨팅 장치는 적어도 하나의 처리 장치 및 메모리를 포함하고,
상기 동작들은
상기 적어도 하나의 컴퓨팅 장치에 의해, 파일 시스템에 대한 업데이트를 제2 위치에 기록하기 위한 기록 플랜을 생성하는 동작- 상기 업데이트는 제1 위치에 저장된 객체에 대한 것이며, 상기 객체는 상기 파일 시스템의 객체이고, 상기 업데이트는 체크포인트와 연관되고, 상기 제2 위치는 상기 제1 위치와 다름 -과,
상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에 기록되는 것과 연계하여 상기 적어도 하나의 컴퓨팅 장치에 의해, 상기 체크포인트에 대한 정보를 상기 제2 위치에 기록하는 동작- 상기 기록된 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -을 포함하는
시스템.
- 제 25 항에 있어서,
상기 체크포인트 정보는 상기 파일 시스템에 대한 적어도 하나의 업데이트를 나타내는
시스템.
- 제 25 항에 있어서,
상기 체크포인트 정보는 상기 기록된 체크포인트 정보가 정확히 기록되었음을 판정하기에 충분한 확인 코드를 포함하는
시스템.
- 제 25 항에 있어서,
상기 기록 플랜은 상기 파일 시스템에 대한 적어도 하나의 업데이트를 위한 위치를 나타내는
시스템.
- 제 25 항에 있어서,
상기 체크포인트 정보는 상기 객체의 저장 위치를 나타내는
시스템.
- 제 25 항에 있어서,
상기 체크포인트 정보는 공간 할당 정보를 포함하는
시스템.
- 제 25 항에 있어서,
상기 기록하는 동작은 상기 객체에 대한 업데이트가 상기 제1 위치에 기록되는 것에 후속하는
시스템.
- 적어도 하나의 처리 장치 및 메모리를 포함하는 적어도 하나의 컴퓨팅 장치에 의해 실행되는 경우 상기 적어도 하나의 컴퓨팅 장치로 하여금 동작들을 수행하게 하는 컴퓨터 실행가능 명령어를 저장하는 적어도 하나의 컴퓨터 저장 매체로서,
상기 동작들은
상기 적어도 하나의 컴퓨팅 장치에 의해, 파일 시스템에 대한 업데이트를 제2 위치에 기록하기 위한 기록 플랜을 생성하는 동작- 상기 업데이트는 제1 위치에 저장된 객체에 대한 것이며, 상기 객체는 상기 파일 시스템의 객체이고, 상기 업데이트는 체크포인트와 연관되고, 상기 제2 위치는 상기 제1 위치와 다름 -과,
상기 업데이트가 상기 생성된 기록 플랜에 따라 상기 제2 위치에 기록되는 것과 연계하여 상기 적어도 하나의 컴퓨팅 장치에 의해, 상기 체크포인트에 대한 정보를 상기 제2 위치에 기록하는 동작- 상기 기록된 정보는 상기 생성된 기록 플랜 및 체크포인트 레코드를 포함함 -을 포함하는
컴퓨터 저장 매체.
- 제 32 항에 있어서,
상기 체크포인트 정보는 상기 파일 시스템에 대한 적어도 하나의 업데이트를 나타내는
컴퓨터 저장 매체.
- 제 32 항에 있어서,
상기 체크포인트 정보는 상기 기록된 체크포인트 정보가 정확히 기록되었음을 판정하기에 충분한 확인 코드를 포함하는
컴퓨터 저장 매체.
- 제 32 항에 있어서,
상기 기록 플랜은 상기 파일 시스템에 대한 적어도 하나의 업데이트를 위한 위치를 나타내는
컴퓨터 저장 매체.
- 제 32 항에 있어서,
상기 체크포인트 정보는 상기 객체의 저장 위치를 나타내거나, 상기 체크포인트 정보는 공간 할당 정보를 포함하는
컴퓨터 저장 매체. - 제 32 항에 있어서,
상기 기록하는 동작은 상기 객체에 대한 업데이트가 상기 제1 위치에 기록되는 것에 후속하는
컴퓨터 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/815,418 | 2010-06-15 | ||
US12/815,418 US8224780B2 (en) | 2010-06-15 | 2010-06-15 | Checkpoints for a file system |
PCT/US2011/038811 WO2011159476A2 (en) | 2010-06-15 | 2011-06-01 | Checkpoints for a file system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127032646A Division KR101805948B1 (ko) | 2010-06-15 | 2011-06-01 | 파일 시스템에 대한 체크포인트 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170132338A true KR20170132338A (ko) | 2017-12-01 |
KR101840996B1 KR101840996B1 (ko) | 2018-03-21 |
Family
ID=45097053
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127032646A KR101805948B1 (ko) | 2010-06-15 | 2011-06-01 | 파일 시스템에 대한 체크포인트 |
KR1020177033663A KR101840996B1 (ko) | 2010-06-15 | 2011-06-01 | 파일 시스템에 대한 체크포인트 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127032646A KR101805948B1 (ko) | 2010-06-15 | 2011-06-01 | 파일 시스템에 대한 체크포인트 |
Country Status (11)
Country | Link |
---|---|
US (3) | US8224780B2 (ko) |
EP (1) | EP2583202B1 (ko) |
JP (1) | JP5735104B2 (ko) |
KR (2) | KR101805948B1 (ko) |
CN (1) | CN102934114B (ko) |
AU (1) | AU2011265653B2 (ko) |
BR (1) | BR112012031912B1 (ko) |
CA (1) | CA2803763C (ko) |
RU (1) | RU2554847C2 (ko) |
TW (1) | TWI492077B (ko) |
WO (1) | WO2011159476A2 (ko) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8433865B2 (en) * | 2009-12-11 | 2013-04-30 | Microsoft Corporation | Consistency without ordering dependency |
US8793440B2 (en) | 2010-06-17 | 2014-07-29 | Microsoft Corporation | Error detection for files |
US9155320B2 (en) * | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US9838415B2 (en) | 2011-09-14 | 2017-12-05 | Architecture Technology Corporation | Fight-through nodes for survivable computer network |
US9766986B2 (en) * | 2013-08-08 | 2017-09-19 | Architecture Technology Corporation | Fight-through nodes with disposable virtual machines and rollback of persistent state |
US9769250B2 (en) | 2013-08-08 | 2017-09-19 | Architecture Technology Corporation | Fight-through nodes with disposable virtual machines and rollback of persistent state |
US8543544B2 (en) * | 2012-01-06 | 2013-09-24 | Apple Inc. | Checkpoint based progressive backup |
FR2989801B1 (fr) * | 2012-04-18 | 2014-11-21 | Schneider Electric Ind Sas | Procede de gestion securisee d'un espace memoire pour microcontroleur |
KR102050723B1 (ko) | 2012-09-28 | 2019-12-02 | 삼성전자 주식회사 | 컴퓨팅 시스템 및 그 데이터 관리 방법 |
US9003228B2 (en) * | 2012-12-07 | 2015-04-07 | International Business Machines Corporation | Consistency of data in persistent memory |
US9304998B2 (en) * | 2012-12-19 | 2016-04-05 | Microsoft Technology Licensing, Llc | Main-memory database checkpointing |
US10002077B2 (en) | 2014-01-31 | 2018-06-19 | Hewlett Packard Enterprise Development Lp | Persistent memory controller based atomicity assurance |
CN103984609B (zh) * | 2014-05-28 | 2017-06-16 | 华为技术有限公司 | 一种基于写时复制的文件系统中回收检查点的方法和装置 |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
US9892153B2 (en) * | 2014-12-19 | 2018-02-13 | Oracle International Corporation | Detecting lost writes |
CN106294357B (zh) * | 2015-05-14 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 数据处理方法和流计算系统 |
US10031817B2 (en) | 2015-11-05 | 2018-07-24 | International Business Machines Corporation | Checkpoint mechanism in a compute embedded object storage infrastructure |
US10200401B1 (en) | 2015-12-17 | 2019-02-05 | Architecture Technology Corporation | Evaluating results of multiple virtual machines that use application randomization mechanism |
US10412116B1 (en) | 2015-12-17 | 2019-09-10 | Architecture Technology Corporation | Mechanism for concealing application and operation system identity |
US10200406B1 (en) | 2015-12-17 | 2019-02-05 | Architecture Technology Corporation | Configuration of application randomization mechanism |
US10412114B1 (en) | 2015-12-17 | 2019-09-10 | Architecture Technology Corporation | Application randomization mechanism |
US10284592B1 (en) | 2015-12-17 | 2019-05-07 | Architecture Technology Corporation | Application randomization mechanism |
US10007498B2 (en) | 2015-12-17 | 2018-06-26 | Architecture Technology Corporation | Application randomization mechanism |
CN105930223A (zh) * | 2016-04-24 | 2016-09-07 | 湖南大学 | 一种减少检查点文件大小的方法 |
US20220100374A1 (en) * | 2016-08-19 | 2022-03-31 | Ic Manage Inc | Hierarchical file block variant tracking for performance in parallelism at multi-disk arrays |
KR101969799B1 (ko) * | 2016-09-07 | 2019-04-17 | 울산과학기술원 | 전자 장치 및 제어 방법 |
CN108509460B (zh) | 2017-02-28 | 2021-07-20 | 微软技术许可有限责任公司 | 分布式系统中的数据一致性检查 |
US10554685B1 (en) | 2017-05-25 | 2020-02-04 | Architecture Technology Corporation | Self-healing architecture for resilient computing services |
US20190102262A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Automated continuous checkpointing |
KR102022481B1 (ko) * | 2017-12-06 | 2019-09-18 | 연세대학교 산학협력단 | Gpu 사용량을 이용한 고성능 컴퓨팅 시스템의 체크포인트 생성 방법 |
KR102468737B1 (ko) * | 2017-12-19 | 2022-11-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10754785B2 (en) | 2018-06-28 | 2020-08-25 | Intel Corporation | Checkpointing for DRAM-less SSD |
US11416453B2 (en) * | 2019-04-23 | 2022-08-16 | EMC IP Holding Company LLC | Facilitating checkpoint locks for distributed systems |
US11822435B2 (en) | 2020-07-06 | 2023-11-21 | Bank Of America Corporation | Consolidated data restoration framework |
US11620084B2 (en) | 2020-12-30 | 2023-04-04 | Samsung Electronics Co., Ltd. | Storage device including memory controller and operating method of memory controller |
CN113538754B (zh) * | 2021-06-08 | 2023-04-07 | 福建新大陆通信科技股份有限公司 | 一种ctid智能门锁授权数据管理方法及系统 |
CN116048384A (zh) * | 2022-11-02 | 2023-05-02 | 中国科学院空间应用工程与技术中心 | 一种文件系统元数据的写入方法和系统 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4959771A (en) * | 1987-04-10 | 1990-09-25 | Prime Computer, Inc. | Write buffer for a digital processing system |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
JP3751018B2 (ja) * | 1993-06-03 | 2006-03-01 | ネットワーク・アプライアンス・インコーポレイテッド | ライトエニウエアファイルシステムレイアウト |
US6035399A (en) * | 1995-04-07 | 2000-03-07 | Hewlett-Packard Company | Checkpoint object |
US5864657A (en) * | 1995-11-29 | 1999-01-26 | Texas Micro, Inc. | Main memory system and checkpointing protocol for fault-tolerant computer system |
US5907849A (en) * | 1997-05-29 | 1999-05-25 | International Business Machines Corporation | Method and system for recovery in a partitioned shared nothing database system using virtual share disks |
US6185663B1 (en) * | 1998-06-15 | 2001-02-06 | Compaq Computer Corporation | Computer method and apparatus for file system block allocation with multiple redo |
US6449623B1 (en) * | 1998-09-04 | 2002-09-10 | Lucent Technologies Inc, | Method and apparatus for detecting and recovering from data corruption of a database via read logging |
JP2001101044A (ja) * | 1999-09-29 | 2001-04-13 | Toshiba Corp | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US6629198B2 (en) * | 2000-12-08 | 2003-09-30 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
US7730213B2 (en) * | 2000-12-18 | 2010-06-01 | Oracle America, Inc. | Object-based storage device with improved reliability and fast crash recovery |
US6678809B1 (en) * | 2001-04-13 | 2004-01-13 | Lsi Logic Corporation | Write-ahead log in directory management for concurrent I/O access for block storage |
JP2003223350A (ja) * | 2002-01-29 | 2003-08-08 | Ricoh Co Ltd | データベースシステム |
US6993539B2 (en) | 2002-03-19 | 2006-01-31 | Network Appliance, Inc. | System and method for determining changes in two snapshots and for transmitting changes to destination snapshot |
US20040216130A1 (en) * | 2002-08-30 | 2004-10-28 | Keller S. Brandon | Method for saving and restoring data in software objects |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US7216254B1 (en) | 2003-03-24 | 2007-05-08 | Veritas Operating Corporation | Method and system of providing a write-accessible storage checkpoint |
US7412460B2 (en) * | 2003-06-19 | 2008-08-12 | International Business Machines Corporation | DBMS backup without suspending updates and corresponding recovery using separately stored log and data files |
JP3798767B2 (ja) * | 2003-06-26 | 2006-07-19 | 株式会社東芝 | ディスク制御システム及びディスク制御プログラム |
US7401093B1 (en) | 2003-11-10 | 2008-07-15 | Network Appliance, Inc. | System and method for managing file data during consistency points |
US7721062B1 (en) | 2003-11-10 | 2010-05-18 | Netapp, Inc. | Method for detecting leaked buffer writes across file system consistency points |
US7054960B1 (en) * | 2003-11-18 | 2006-05-30 | Veritas Operating Corporation | System and method for identifying block-level write operations to be transferred to a secondary site during replication |
US7168001B2 (en) * | 2004-02-06 | 2007-01-23 | Hewlett-Packard Development Company, L.P. | Transaction processing apparatus and method |
US7664965B2 (en) * | 2004-04-29 | 2010-02-16 | International Business Machines Corporation | Method and system for bootstrapping a trusted server having redundant trusted platform modules |
JP4104586B2 (ja) * | 2004-09-30 | 2008-06-18 | 株式会社東芝 | ファイル管理機能を備えたファイルシステム及びファイル管理方法 |
US7505410B2 (en) * | 2005-06-30 | 2009-03-17 | Intel Corporation | Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices |
US7693864B1 (en) * | 2006-01-03 | 2010-04-06 | Netapp, Inc. | System and method for quickly determining changed metadata using persistent consistency point image differencing |
US20070234342A1 (en) * | 2006-01-25 | 2007-10-04 | Flynn John T Jr | System and method for relocating running applications to topologically remotely located computing systems |
JP2009526286A (ja) * | 2006-02-06 | 2009-07-16 | ファイルズエックス・インク | ディスクでの長期バックアップ |
US7769723B2 (en) * | 2006-04-28 | 2010-08-03 | Netapp, Inc. | System and method for providing continuous data protection |
US7870356B1 (en) * | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
US8495573B2 (en) | 2007-10-04 | 2013-07-23 | International Business Machines Corporation | Checkpoint and restartable applications and system services |
WO2009134772A2 (en) * | 2008-04-29 | 2009-11-05 | Maxiscale, Inc | Peer-to-peer redundant file server system and methods |
KR20110086690A (ko) * | 2008-10-30 | 2011-07-29 | 인터내셔널 비지네스 머신즈 코포레이션 | 저장 장치에 데이터 쓰기를 실행하는 방법 및 시스템 |
-
2010
- 2010-06-15 US US12/815,418 patent/US8224780B2/en active Active
-
2011
- 2011-05-09 TW TW100116194A patent/TWI492077B/zh not_active IP Right Cessation
- 2011-06-01 EP EP11796160.7A patent/EP2583202B1/en active Active
- 2011-06-01 BR BR112012031912-4A patent/BR112012031912B1/pt active IP Right Grant
- 2011-06-01 WO PCT/US2011/038811 patent/WO2011159476A2/en active Application Filing
- 2011-06-01 RU RU2012154324/08A patent/RU2554847C2/ru active
- 2011-06-01 KR KR1020127032646A patent/KR101805948B1/ko active Application Filing
- 2011-06-01 JP JP2013515367A patent/JP5735104B2/ja active Active
- 2011-06-01 KR KR1020177033663A patent/KR101840996B1/ko active IP Right Grant
- 2011-06-01 AU AU2011265653A patent/AU2011265653B2/en active Active
- 2011-06-01 CA CA2803763A patent/CA2803763C/en active Active
- 2011-06-01 CN CN201180029522.9A patent/CN102934114B/zh active Active
-
2012
- 2012-06-22 US US13/530,269 patent/US8924356B2/en active Active
-
2014
- 2014-12-19 US US14/578,248 patent/US20150178165A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CA2803763C (en) | 2019-02-26 |
WO2011159476A3 (en) | 2012-02-16 |
WO2011159476A2 (en) | 2011-12-22 |
EP2583202A4 (en) | 2017-03-15 |
KR101840996B1 (ko) | 2018-03-21 |
US20150178165A1 (en) | 2015-06-25 |
RU2012154324A (ru) | 2014-06-20 |
BR112012031912B1 (pt) | 2020-11-17 |
KR101805948B1 (ko) | 2017-12-07 |
US20120259816A1 (en) | 2012-10-11 |
TW201202981A (en) | 2012-01-16 |
BR112012031912A2 (pt) | 2016-11-08 |
TWI492077B (zh) | 2015-07-11 |
CN102934114A (zh) | 2013-02-13 |
US20110307449A1 (en) | 2011-12-15 |
EP2583202A2 (en) | 2013-04-24 |
US8224780B2 (en) | 2012-07-17 |
JP5735104B2 (ja) | 2015-06-17 |
US8924356B2 (en) | 2014-12-30 |
KR20130115995A (ko) | 2013-10-22 |
CA2803763A1 (en) | 2011-12-22 |
AU2011265653B2 (en) | 2014-05-15 |
AU2011265653A1 (en) | 2012-12-13 |
RU2554847C2 (ru) | 2015-06-27 |
EP2583202B1 (en) | 2022-01-12 |
JP2013528883A (ja) | 2013-07-11 |
CN102934114B (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101840996B1 (ko) | 파일 시스템에 대한 체크포인트 | |
US9448869B2 (en) | Error detection for files | |
RU2560786C2 (ru) | Корректность без зависимости от упорядоченности |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right |