devicemapper 및 Docker를 사용하여 쓰기 시 삭제

devicemapper 및 Docker를 사용하여 쓰기 시 삭제

Docker의 현재 기본 동작은 COW(기록 중 복사), 즉 할당 중 쓰기입니다. 이는 디스크에 쓸 수 있는 드라이브의 사용 가능한 공간에 따라 달라집니다.

대조적으로, 메모리를 사용하면 참조되지 않은 파일을 계속 사용할 수 있으며 다른 것이 필요할 경우 덮어쓰거나 다시 필요할 경우 일정한 시간에 다시 링크될 수 있습니다.

우리는 로컬 디스크에 원격 파일을 캐시하는 유사한 메커니즘을 구현하려고 합니다. 즉, 파일에는 설정된 위치가 있으므로 공간이 필요한 경우 파일을 덮어쓰거나 파일 자체가 필요한 경우 링크될 수 있습니다.

이상적으로 이러한 소프트웨어는 여유 공간을 쓰거나 보고하려고 할 때 FS 드라이버에 연결됩니다. 내 가설은 소프트웨어가 언제든지 임의로 대용량 파일을 할당할 수 있기 때문에 폴링 방법만으로는 충분하지 않다는 것입니다.

오픈 소스 세계에 비슷한 것이 이미 존재합니까? 그렇지 않다면 가능합니까? 심각한 장애물이 있나요? 시작하는 좋은 방법은 무엇입니까?

답변1

시작하는 한 가지 방법은 FUSE(사용자 공간의 파일 시스템)를 사용하는 것입니다. 이 API를 사용하면 원격 파일에 대한 액세스를 캐시하기 위해 선택한 모든 작업을 수행할 수 있는 작은 프로그램에서 파일 시스템을 구현할 수 있습니다. 예를 들어, sshfs퓨즈 파일 시스템은 sftp원격 시스템에 파일을 가져오고/넣고 투명하게 로컬 파일로 표시하는 데 사용됩니다.

FUSE를 사용하는 C 읽기 전용 캐시 파일 시스템은 이미 코드의 기초를 형성할 수 있습니다.2004년그리고는여기. 초기 개발의 경우 FUSE의 Python 라이브러리 인터페이스를 사용하는 것을 선호할 수 있으며, 최소 3가지의 서로 다른 구현과 각 구현에 구축된 많은 예제 파일 시스템이 있습니다. Python 캐시 검색 FUSE가 등장했습니다. 캐싱 파일 시스템2011년부터.

관련 정보