Como mencionado nos comentários, uma das maneiras possíveis é o NBD. BUSE pode ajudá-lo a começar isso. Na verdade, ele usa um soquete Unix, por isso deve ter um desempenho razoável.
Não tenho certeza do que devo pesquisar no Google ou se o FUSE fizer isso (suspeito que não). Gostaria de criar um dispositivo de bloco virtual para o qual todas as formas de acesso, por exemplo, leituras e gravações, vão diretamente para o meu aplicativo
Sei que posso usar um arquivo como um dispositivo de bloco fazendo dd if=/dev/zero of=~/test count=100k
e, em seguida, criar um loopback usando losetup /dev/loop0 ~/test
. Mas gostaria que os acessos fossem direcionados diretamente para meu aplicativo em vez de para um arquivo. Espero que esta pergunta seja bastante clara.
Como mencionado nos comentários, uma das maneiras possíveis é o NBD. BUSE pode ajudá-lo a começar isso. Na verdade, ele usa um soquete Unix, por isso deve ter um desempenho razoável.
Você não está procurando mmap()
?
Não sei como você poderia mmap
sem ter um arquivo real para isso, mas você pode ter um arquivo arbitrariamente grande e zerado (veja falocate
, truncate
) e mmap()
com o sinalizador MAP_PRIVATE
, para que as gravações sejam visíveis apenas para seu aplicativo e não sejam levadas ao disco.
Tags block-device