일반 로그 파일 시스템 소개

CLFS(Common Log File System)는 사용자 모드 또는 커널 모드에서 실행되는 소프트웨어 클라이언트 에서 사용할 수 있는 범용 로깅 서비스입니다. 이 설명서에서는 커널 모드 클라이언트에 대한 CLFS 인터페이스에 대해 설명합니다. 사용자 모드 인터페이스에 대한 자세한 내용은 Microsoft Windows SDK 공통 로그 파일 시스템을 참조하세요.

CLFS는 ARIES(복구 및 격리 악용 의미 체계)에 대한 알고리즘의 모든 기능을 캡슐화합니다. 그러나 CLFS DDI(디바이스 드라이버 인터페이스)는 ARIES를 지원하는 것으로 제한되지 않습니다. 다양한 로깅 시나리오에 적합합니다.

고성능 트랜잭션 로그의 기본 작업은 로그 클라이언트가 기록을 정확하게 반복할 수 있도록 하는 것입니다. CLFS는 클라이언트 로그 레코드를 메모리 버퍼로 마샬링하고, 안정적인 스토리지로 강제 적용하고, 요청에 따라 레코드를 다시 읽어 이 작업을 수행합니다. 레코드가 안정적인 스토리지로 만들어지고 스토리지 미디어가 그대로 유지되면 CLFS는 시스템 오류에서 레코드를 읽을 수 있다는 점에 유의해야 합니다.

CLFS는 전용 로그 및 멀티플렉싱 로그를 지원합니다. 전용 로그에는 모든 로그 클라이언트에서 사용하는 단일 로그 레코드 스트림 이 있습니다. 멀티플렉싱된 로그(공통 로그라고도 함)에는 여러 스트림이 있습니다. 각 스트림에는 로그 레코드를 마샬링하기 위한 자체 클라이언트 및 자체 메모리 버퍼가 있지만 이러한 모든 버퍼의 레코드는 단일 큐로 멀티플렉싱되고 안정적인 스토리지의 단일 로그로 플러시됩니다. 멀티플렉싱을 사용하면 여러 스트림의 I/O 작업을 통합할 수 있습니다.

클라이언트가 스트림에 레코드를 쓰면 이후 참조를 위해 로그 레코드를 식별하는 LSN(로그 시퀀스 번호)을 다시 가져옵니다. 특정 스트림에 기록되는 레코드에 할당된 LSN은 증가하는 시퀀스를 형성합니다. 즉, 스트림에 기록된 레코드에 할당된 LSN은 항상 동일한 스트림에 기록된 이전 레코드에 할당된 LSN보다 큽니다.

CLFS는 로그 레코드 마샬링, 플러시 및 검색 외에도 여러 서비스를 제공합니다. 다음 목록에서는 이러한 추가 서비스 중 일부에 대해 설명합니다.

  • 관련 로그 레코드 집합의 공간을 미리 예약할 수 있습니다. 즉, 클라이언트는 CLFS가 트랜잭션을 설명하는 모든 레코드를 로그에 추가할 수 있다는 것을 알고 트랜잭션을 진행할 수 있습니다.

  • CLFS는 각 로그 레코드에 대한 헤더를 유지 관리합니다. 클라이언트는 헤더의 특정 필드를 설정하여 나중에 역순으로 트래버스할 수 있는 연결된 레코드 체인을 만들 수 있습니다.

  • CLFS는 정책에 따라 로그 레코드를 안정적인 스토리지로 플러시하지만 클라이언트는 로그 레코드 집합을 안정적인 스토리지로 강제 적용할 수 있습니다.

  • CLFS는 로그 및 멀티플렉싱된 로그의 각 스트림에 대한 메타데이터를 유지 관리합니다. 클라이언트는 메타데이터를 보고 메타데이터의 특정 부분을 설정할 수 있습니다.

  • 각 스트림에 대해 CLFS는 클라이언트가 스트림의 활성 부분을 구분하는 데 사용할 수 있는 기본 LSN 및 마지막 LSN을 유지 관리합니다.

  • 전용 로그의 경우 CLFS는 클라이언트가 보관된 로그 부분을 추적하는 데 사용할 수 있는 보관 꼬리를 클라이언트의 요청에 따라 유지 관리합니다.

CLFS의 특정 기능(예: 레코드 헤더의 이전 LSN 및 실행 취소 후 LSN 필드)은 ARIES를 연구하여 가장 잘 이해할 수 있습니다. ARIES에 대한 자세한 내용은 다음 문서를 참조하세요.

  • C. Mohan, Don Haderle, Bruce Lindsay, Hamid Pirahesh, Peter Schwarz, ARIES: Write-Ahead 로깅을 사용하여 Fine-Granularity 잠금 및 부분 롤백을 지원하는 트랜잭션 복구 방법입니다.

  • C. 모한, ARIES를 넘어 역사를 반복.