mmap을 사용하여 다른 파일의 메모리 하위 집합을 참조하는 파일을 만들 수 있습니까?

mmap을 사용하여 다른 파일의 메모리 하위 집합을 참조하는 파일을 만들 수 있습니까?

나는 두 개의 파일을 생성하는 프로그램을 작성하는 데 관심이 있습니다. 두 번째 파일은 첫 번째 파일의 "보기"가 되며, 수정되면 첫 번째 파일도 수정됩니다. mmap을 사용하여 이 작업을 수행할 수 있습니까?

mmap을 사용하면 RAM에 공유 메모리를 가질 수 있지만 비휘발성 메모리(하드 드라이브라고도 함)에 공유 메모리가 필요하다는 것을 알고 있습니다. 파일이 매우 클 수 있다고 가정하기 때문에 첫 번째 파일을 복사하거나 RAM에 완전히 로드할 수 없습니다(GB).

두 번째 파일이 첫 번째 파일 메모리의 하위 집합을 표시하도록 만드는 방법을 알아낸 후 3개의 파일을 만들 계획이었습니다. 첫 번째 파일은 컨테이너로, 두 번째와 세 번째 파일은 첫 번째 파일의 다른 하위 집합을 표시했습니다. 두 번째 및 세 번째 파일은 첫 번째 파일 컨테이너가 두 번째 및 세 번째 파일을 통해 액세스할 수 있는 메모리에 두 개의 파일 시스템을 보유하도록 파일 시스템을 사용하여 포맷됩니다. 두 번째와 세 번째 파일을 루프백 장치로 연결하고 마운트하는 방식으로 이를 수행할 계획입니다.

이것이 가능한가? 내가 보지 못하는 뭔가가 있나요?

답변1

으로는 이 작업을 수행할 수 없지만 mmap계획의 끝으로 직접 이동하여 루프백 장치를 사용할 수 있습니다. 포함 파일에서 루프백이 시작되는 위치를 지정하는 옵션과 루프백이 끝나는 위치를 지정하는 옵션이 losetup있습니다 ( 시작 기준).--offset--sizelimit

따라서 10GiB 컨테이너를 사용하면 처음부터 2GiB 파일 시스템을 1GiB에 "매핑"할 수 있습니다 losetup --offset 1G --sizelimit 2G /path/to/container.

관련 정보