Recentemente encontrei o driver de dispositivo Linux Null Block , null_blk
enquanto fazia benchmarking da pilha de E/S em vez de em um dispositivo de bloco específico. Achei os dispositivos criados sob este driver (vamos usar o nome do dispositivo /dev/nullb0
como exemplo) bastante intrigantes, especialmente considerando sua semelhança de nome com o /dev/null
dispositivo. Como não encontrei nenhuma dúvida existente sobre esse assunto, resolvi entrar em contato para obter esclarecimentos.
Minha pergunta principal é: quais são as diferenças entre /dev/null
o dispositivo de bloco criado no null_blk
driver do dispositivo?
Até este ponto: já notei algumas distinções.
- Primeiro, (até onde entendi), o dispositivo nulo
/dev/null
não passa por nenhum driver. No entanto, os dispositivos criadosnull_blk
são verdadeiros drivers de bloco pelos quais os dados devem passar. Também confirmei isso executandofio
em ambos os dispositivos;/dev/null
tem um desempenho muito melhor em termos de IOPS de leitura aleatória e latência de envio. - Segundo, sabemos que a leitura from
/dev/null
resulta em um EOF (por exemplo,cat /dev/null
), mas quando tentocat /dev/nullb0
, ele não retorna um EOF e, em vez disso, trava. - Além disso, como observação lateral, a documentação do kernel
null_blk
menciona parâmetros para configuração, mas não vejo nenhuma opção semelhante para/dev/null
ser configurada.
Parece que existe um grande número de diferenças sob nomes semelhantes. Alguém pode fornecer mais informações formais ou esclarecimentos sobre essas diferenças? Obrigado!