무엇을 위해 인터넷 검색을 해야 하는지, FUSE가 이 작업을 수행하는지 잘 모르겠습니다(아닌 것 같습니다). 모든 형태의 액세스(예: 읽기 및 쓰기)가 내 애플리케이션으로 직접 이동하는 가상 블록 장치를 만들고 싶습니다.
다음을 통해 블록 장치로 사용할 파일을 만들 수 있다는 것을 알고 있습니다.
dd if=/dev/zero of=~/test count=100k
그런 다음 다음을 사용하여 루프백을 만듭니다.
losetup /dev/loop0 ~/test`
하지만 파일 대신 내 애플리케이션에 직접 액세스하고 싶습니다. 이 질문이 상당히 명확하기를 바랍니다.
답변1
NBD를 사용할 수 있습니다. 사용NBD 키트가상 블록 장치에 쓸 수도 있습니다.쉘 스크립트또는 기타 스크립팅 언어(최고의 성능을 원한다면 C를 사용하세요). FOSDEM 2019에서 이 주제로 강연한 적이 있습니다.저는 쉘 스크립트를 사용하여 Linux 커널 블록 장치를 작성하는 라이브 데모를 진행했습니다.
답변2
의견에서 언급했듯이 가능한 방법 중 하나는 NBD입니다.버스이 작업을 시작하는 데 도움이 될 수 있습니다. 실제로 Unix 소켓을 사용하므로 비슷한 성능을 가져야 합니다.
답변3
당신은 그것을 찾고 있지 않습니까 mmap()
?
mmap
그러나 이를 지원할 실제 파일이 없다면 무엇을 해야 할지 잘 모르겠지만 , 플래그가 있는 임의로 크고 0으로 채워진 파일( 참조 falocate
, 참조 truncate
) 을 사용하여 쓰기 작업만 수행 할 수 있습니다. 귀하의 응용 프로그램은 표시되며 디스크에 저장되지 않습니다.mmap()
MAP_PRIVATE