기회 잠금

기회 잠금(oplock이라고도 함)은 클라이언트가 서버에 있는 파일에 배치한 잠금입니다. 대부분의 경우 클라이언트는 데이터를 로컬로 캐시할 수 있도록 기회 잠금을 요청하여 네트워크 트래픽을 줄이고 명백한 응답 시간을 개선합니다. 기회 잠금은 원격 서버가 있는 클라이언트의 네트워크 리디렉터와 로컬 서버의 클라이언트 애플리케이션에서 사용됩니다.

참고

네트워크 리디렉터에 대한 일부 정보는 제공되지만 이 섹션에서 찾을 수 있는 기회 잠금에 대한 문서는 주로 클라이언트 애플리케이션과 관련이 있습니다. Windows WDK의 Oplocks 문서에서 네트워크 리디렉터에 대한 더 많은 oplock 정보를 찾을 수 있습니다.

개요

기회 잠금은 클라이언트와 서버 간 그리고 여러 클라이언트 간의 데이터 캐싱 및 일관성을 조정합니다. 일관성 있는 데이터는 네트워크 전체에서 동일한 데이터입니다. 즉, 데이터가 일관성이 있으면 서버와 모든 클라이언트의 데이터가 동기화됩니다.

기회 잠금은 클라이언트가 서버에게 내리는 명령이 아닙니다. 클라이언트에서 서버로의 요청입니다. 클라이언트의 관점에서 볼 때 기회적입니다. 즉, 서버는 다른 요인으로 잠금이 가능할 때마다 이러한 잠금을 부여합니다.

로컬 애플리케이션이 원격 파일에 대한 액세스를 요청하면 기회 잠금의 구현은 애플리케이션에 투명하게 전달됩니다. 네트워크 리디렉터와 관련 서버가 기회 잠금을 자동으로 열고 닫습니다. 그러나 로컬 애플리케이션이 로컬 파일에 대한 액세스를 요청하고 파일 손상을 방지하기 위해 다른 애플리케이션 및 프로세스의 액세스를 위임해야 하는 경우에도 기회 잠금을 사용할 수 있습니다. 이 경우 로컬 애플리케이션은 로컬 파일 시스템에서 기회 잠금을 직접 요청하고 파일을 로컬로 캐시합니다. 이러한 방식으로 사용되는 경우 기회 잠금은 로컬 서버에서 관리하는 세마포이며 주로 파일 및 파일 액세스 알림의 데이터 일관성을 위해 사용됩니다.

애플리케이션에서 기회 잠금을 사용하기 전에 파일 만들기 및 열기에 설명된 파일 액세스 및 공유 모드에 익숙해야 합니다.

만들 수 있는 동시 기회 잠금의 최대 수는 사용 가능한 메모리 양에 의해서만 제한됩니다.

로컬 애플리케이션은 원격 서버에서 기회 잠금을 요청하려고 시도해서는 안 됩니다. 이 작업을 수행하려고 하면 DeviceIoControl에서 오류가 반환됩니다.

기회 잠금은 애플리케이션에 매우 제한적으로 사용됩니다. 유일한 실용적인 용도는 네트워크 리디렉터 또는 서버 기회 잠금 처리기를 테스트하는 것입니다. 일반적으로 파일 시스템은 기회 잠금에 대한 지원을 구현합니다. 애플리케이션은 일반적으로 파일 시스템 드라이버에 기회 잠금 관리를 둡니다. 파일 시스템을 구현하는 모든 사람은 IFS(설치 가능한 파일 시스템) 키트를 사용해야 합니다. 설치 가능한 파일 시스템 이외의 장치 드라이버를 개발하는 모든 사람은 WDK(Windows 드라이버 키트)를 사용해야 합니다.

기회 잠금 및 연결된 작업은 인터넷 초안인 CIFS(Common Internet File System) 프로토콜의 기회 잠금 부분의 상위 집합입니다. CIFS 프로토콜은 SMB(서버 메시지 블록) 프로토콜의 향상된 버전입니다. 자세한 내용은 Microsoft SMB Protocol and CIFS Protocol Overview(Microsoft SMB 프로토콜 및 CIFS 프로토콜 개요)를 참조하세요. CIFS 인터넷 초안은 CIFS 구현이 부여를 거부하여 기회 잠금을 구현할 수 있음을 명시적으로 식별합니다.

다음 항목에서는 기회 잠금을 식별합니다.

섹션 내용

항목 설명
로컬 캐싱 데이터의 로컬 캐싱은 데이터 파일에 대한 네트워크 액세스를 가속화하는 데 사용되는 기술입니다. 가능하면 서버가 아닌 클라이언트에서 데이터를 캐싱하는 작업이 포함됩니다.
데이터 일관성 데이터가 일관성이 있으면 서버와 모든 클라이언트의 데이터가 동기화됩니다. 데이터 일관성을 제공하는 소프트웨어 시스템의 한 가지 유형은 RCS(수정 제어 시스템)입니다.
기회 잠금을 요청하는 방법 기회 잠금은 먼저 파일을 여는 애플리케이션에 적합한 권한 및 플래그가 있는 파일을 열어 요청됩니다. 중첩된(비동기) 작업을 위해 기회 잠금을 요청할 모든 파일을 열어야 합니다.
잠긴 파일의 열린 요청에 대한 서버 응답 최대한 많은 공유를 부여하고, 필요한 최소 액세스 수준을 요청하고, 애플리케이션에 적합한 최소 관입 기회 잠금을 사용하여 애플리케이션이 다른 클라이언트에 미치는 영향과 애플리케이션에 미치는 영향을 최소화할 수 있습니다.
기회 잠금 유형 수준 1, 수준 2, 일괄 처리 및 필터 기회 잠금에 대해 설명합니다.
기회 잠금 풀기 기회 잠금 풀기는 한 클라이언트가 파일에 가지고 있는 잠금을 저하하여 다른 클라이언트가 기회 잠금을 사용하거나 사용하지 않고 파일을 열 수 있도록 하는 프로세스입니다.
기회 잠금 예제 수준 1 기회 잠금, 일괄 처리 기회 잠금 및 필터 기회 잠금에 대한 네트워크 트래픽 뷰의 다이어그램
기회 잠금 작업 애플리케이션이 기회 잠금을 요청하는 경우 FILE_FLAG_OVERLAPPED 플래그와 함께 CreateFile 함수를 사용하여 중첩된(비동기) 입력 및 출력을 위해 잠금을 요청하는 모든 파일을 열어야 합니다.

기회 잠금에 대한 자세한 내용은 CIFS 인터넷 초안 문서를 참조하세요. 이 항목과 현재 CIFS 인터넷 초안 간의 불일치는 CIFS 인터넷 초안에 따라 해결해야 합니다.

추가 정보

NetApp 파일 액세스 및 프로토콜 관리 가이드

Oplocks(WDK)