본문 바로가기

시스템/Samba

[Samba] 잠금 파일(Locked File) 풀기

반응형

Locked File은 둘 이상의 클라이언트가 동일한 파일을 동시에 편집하려고 할 때 파일 손상 및 데이터 손실을 방지한다. 

하지만 파일을 닫았지만 samba에서 잠금을 제대로 해제하지 않은 경우 강제로 해제해야 하는 상황이 있을 수 있다.

 

samba는 연결한 클라이언트 별로 프로세스를 할당하고 처리하므로 Locked Files 역시 프로세스를 Kill 함으로서 해제 할 수 있다. 

물론 samba를 다시 시작하는 방법도 있지만 위험성이 존재한다.

 

 

 

Locked File 확인


 

smbstatus -S

  • smb 프로세스를 할당한 클라이언트 리스트
  • net status shares, net status sessions 와 비슷
> smbstatus -S
pid		unixtime 	user 	ip 				shere_path
---------------------------------------------------------------
27945	1670549131	user	172.16.0.100	test_share1	SMB3_11

 

 

 

smbstatus -L

  • locked file list
> smbstatus -L
Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
----------------------------------------------------------------------------------------------------------------------
28202        2457863525  DENY_NONE  0x100081    RDONLY     NONE            test_share  test   Fri Dec  9 17:30:00 2022

 

 

 

Process Kill

 

해당 액세스 파일의 pid를 kill 한다.

> kill <pid>

 

 

 

 

참고


 

DenyMode

클라이언트는 SharePath/Name 파일을 Time 시간에 열고 아래와 같은 DenyMode로 요청 할수 있다.

DENY_NONE Do not deny any other file requests.
DENY_ALL Deny all open requests on the current file.
DENY_READ Deny any read-only open requests on the current file.
DENY_WRITE Deny any write-only open requests on the current file.
DENY_DOS If opened for reading, others can read but cannot write to the file. If opened for writing, others cannot open the file at all.
DENY_FCB Obsolete.

 

 

 

Oplock(opportunistic locking)

서버에 있는 파일에 액세스할 때 네트워크 성능을 향상시키기 위해 레지스트리 항목(서버 및 클라이언트)을 통해 Windows 파일 시스템(API가 아님)에 의해 호출된다. 

다음을 허용하는 클라이언트에서 로컬로 파일을 캐싱하여 성능이 향상된다.

Read-ahead:

The client reads the local copy of the file, eliminating network latency.

Write caching:

The client writes to the local copy of the file, eliminating network latency.

Lock caching:

The client caches application locks locally, eliminating network latency.

 

Windows는 oplock의 종류를 4가지로 분류

 

Level1

예를들면 Oplock을 통해 클라이언트는 액세스한 파일을 수정할 때 클라이언트 Local에 자체 캐시할것이라고 Samba서버에 알리고 파일을 잠그고 작업이 완료 될때까지 대기.

두번째 클라이언트가 액세스한 파일을 요청하면 samba 서버는 첫번째 클라이언트한테 oplock 중단을 요청하고 첫번째 클라이언트 local 캐시 내용을 서버 액세스 파일에 반영.

이후 두번째 클라이언트 한테 액세스 권한을 주는 등의 일련에 프로세스

 

Level2

Level1과 프로세스는 같지만 캐싱이 읽기에 대해서만 동작.

 

Filter

액세스한 파일에 쓰기, 삭제를 허용하지 않음.

 

Batch

액세스 파일의 열기, 닫기 및 속성 캐싱을 허용

 

 

 

반응형