일부 파일을 중앙 집중화하려고 할 때웨카 파일 시스템일부 다른 클라이언트가 이미 잠금을 보유하고 있고 어떤 프로세스/호스트가 잠금을 갖고 있는지 확인할 수 없기 때문에 실패합니다. 클라이언트가 weka에서 파일을 잠금 해제하도록 강제하는 방법은 무엇입니까?
답변1
일반적으로 네트워크 파일 시스템(비 NFS)의 클라이언트에서 파일을 잠금 해제할 수 있는 방법은 없으며 다른 파일 시스템에서도 마찬가지라고 가정합니다. 일부 파일 시스템에서는 다음을 허용합니다.잠금 해제서버 측에서.
클라이언트에서 이를 달성하는 유일한 방법은 mv
해당 파일을 사용하고 이름과 내용은 동일하지만 inode가 다른 새 파일을 만드는 것입니다.
mv $FILE $FILE.locked; cp -p $FILE.locked $FILE
그러면 잠긴 파일의 이름이 바뀌고 접미사가 추가된 .locked
다음 원래 파일 이름으로 다시 복사됩니다. 이제 원본과 동일한 내용과 속성을 가진 파일이 생기지만 새 inode가 있으므로 잠기지 않습니다( .locked
그러나 원본 inode가 있는 파일은 여전히 잠긴 상태로 유지됩니다).
그러나 의미를 이해해야 합니다. 원본 파일의 파일 설명자를 계속 저장하는 프로세스가 있는 경우(동일한 클라이언트 또는 다른 클라이언트에서) 이제 이전 파일의 파일 설명자를 접미사로 저장합니다 .locked
. 동일한 이름을 가진 새 파일이 아니므로 새 파일에서 수행한 모든 변경 사항은 이러한 프로세스에 반영되지 않습니다. 해당 이름의 파일만 처리뒤쪽에/는 새 파일을 사용합니다 mv
.cp