![devicemapper 및 Docker를 사용하여 쓰기 시 삭제](https://linux55.com/image/92301/devicemapper%20%EB%B0%8F%20Docker%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%93%B0%EA%B8%B0%20%EC%8B%9C%20%EC%82%AD%EC%A0%9C.png)
Docker의 현재 기본 동작은 COW(기록 중 복사), 즉 할당 중 쓰기입니다. 이는 디스크에 쓸 수 있는 드라이브의 사용 가능한 공간에 따라 달라집니다.
대조적으로, 메모리를 사용하면 참조되지 않은 파일을 계속 사용할 수 있으며 다른 것이 필요할 경우 덮어쓰거나 다시 필요할 경우 일정한 시간에 다시 링크될 수 있습니다.
우리는 로컬 디스크에 원격 파일을 캐시하는 유사한 메커니즘을 구현하려고 합니다. 즉, 파일에는 설정된 위치가 있으므로 공간이 필요한 경우 파일을 덮어쓰거나 파일 자체가 필요한 경우 링크될 수 있습니다.
이상적으로 이러한 소프트웨어는 여유 공간을 쓰거나 보고하려고 할 때 FS 드라이버에 연결됩니다. 내 가설은 소프트웨어가 언제든지 임의로 대용량 파일을 할당할 수 있기 때문에 폴링 방법만으로는 충분하지 않다는 것입니다.
오픈 소스 세계에 비슷한 것이 이미 존재합니까? 그렇지 않다면 가능합니까? 심각한 장애물이 있나요? 시작하는 좋은 방법은 무엇입니까?
답변1
시작하는 한 가지 방법은 FUSE(사용자 공간의 파일 시스템)를 사용하는 것입니다. 이 API를 사용하면 원격 파일에 대한 액세스를 캐시하기 위해 선택한 모든 작업을 수행할 수 있는 작은 프로그램에서 파일 시스템을 구현할 수 있습니다. 예를 들어, sshfs
퓨즈 파일 시스템은 sftp
원격 시스템에 파일을 가져오고/넣고 투명하게 로컬 파일로 표시하는 데 사용됩니다.
FUSE를 사용하는 C 읽기 전용 캐시 파일 시스템은 이미 코드의 기초를 형성할 수 있습니다.2004년그리고는여기. 초기 개발의 경우 FUSE의 Python 라이브러리 인터페이스를 사용하는 것을 선호할 수 있으며, 최소 3가지의 서로 다른 구현과 각 구현에 구축된 많은 예제 파일 시스템이 있습니다. Python 캐시 검색 FUSE가 등장했습니다. 캐싱 파일 시스템2011년부터.