공통 로그 파일 시스템
공통 로그 파일 시스템(영어: Common Log File System)(CLFS)은 고성능 트랜잭션 로그를 구축하기 위해 커널 모드와 사용자 모드 응용 프로그램 모두에서 접근할 수 있는 범용 로깅 하위 시스템이다. 이 시스템은 윈도우 서버 2003 R2와 함께 도입되었으며 이후의 윈도우 운영 체제에 포함되었다. CLFS는 데이터 로깅과 이벤트 로깅 모두에 사용될 수 있다. CLFS는 TxF 및 TxR에서 트랜잭션을 커밋하기 전에 트랜잭션 상태 변경 사항을 저장하는 데 사용된다. CLFS에서 생성된 바이너리 로그 파일은 통합된 윈도우 도구로는 볼 수 없다.
개요
[편집]다른 트랜잭션 로깅 시스템과 마찬가지로 CLFS의 역할은 특정 작업을 수행하는 데 필요한 일련의 단계를 기록하여, 나중에 트랜잭션을 보조 저장소에 커밋하기 위해 정확하게 재생하거나 필요한 경우 취소할 수 있도록 하는 것이다. CLFS는 먼저 로그 레코드를 메모리 내 버퍼로 마샬링한 다음, 영구 보존을 위해 보조 저장소(CLFS 용어로는 안정적인 미디어)의 로그 파일에 기록한다. 데이터가 언제 안정적인 미디어로 플러시(flush)될지는 내장된 정책에 의해 제어되지만, CLFS 클라이언트 응용 프로그램이 이를 재정의하여 강제로 플러시할 수 있다. CLFS는 사용자 정의 가능한 로그 형식, 정의된 정책에 따른 로그 확장 및 축소, 그리고 여러 클라이언트 응용 프로그램의 동시 사용을 허용한다. CLFS는 파일 시스템의 어느 위치에나 로그 파일을 저장할 수 있다.[1]
CLFS는 장치 드라이버 인터페이스(DDI)를 정의하며, 이를 통해 물리적 저장 시스템별 드라이버가 CLFS API에 연결된다. CLFS 드라이버는 ARIES 복구 알고리즘을 구현하며, 사용자 지정 드라이버를 사용하여 다른 알고리즘을 지원할 수도 있다.[1]
CLFS는 전용 로그와 다중화된 로그를 모두 지원한다. 전용 로그는 단일 로그 레코드 스트림을 포함하는 반면, 다중화된 로그는 각각 다른 응용 프로그램을 위한 여러 스트림을 포함한다. 다중화된 로그에 여러 스트림이 있더라도 로그는 단일 배치(batch)로 순차적으로 스트림에 플러시된다. CLFS는 저장 공간 부족으로 인해 작업이 실패하지 않도록 로그 레코드 집합을 위한 공간을 미리(로그가 실제로 생성되기 전에) 할당할 수 있다.[1]
CLFS 스트림의 로그 레코드는 먼저 시스템 메모리 버퍼의 로그 I/O 블록에 배치된다. 주기적으로 블록은 안정적인 저장 장치로 플러시된다. 저장 장치에서 로그는 연속적으로 할당된 컨테이너 집합을 포함하며, 각 컨테이너는 여러 개의 로그 I/O 블록을 포함한다. 새로운 로그 레코드는 현재 집합에 추가된다. 각 레코드는 증가하는 32비트 시퀀스 번호인 로그 시퀀스 번호(LSN)로 식별된다. LSN과 기타 메타데이터는 레코드 헤더에 저장된다. LSN은 컨테이너의 식별자, 레코드까지의 오프셋, 레코드의 식별자를 인코딩하며, 이 정보는 나중에 로그 레코드에 접근하는 데 사용된다. 다만, 컨테이너 식별자는 논리적 식별자이므로 물리적 컨테이너로 매핑되어야 한다. 이 매핑은 CLFS 자체에 의해 수행된다.[2]
각주
[편집]- 1 2 3 “Introduction to the Common Log File System”. MSDN. 2018년 1월 8일에 확인함.
- ↑ “CLFS Stable Storage”. MSDN. 2018년 1월 8일에 확인함.