Sim, há um cache de buffer de leitura de dispositivo de bloco - bcache - que armazena em cache blocos previamente lidos.
Se você não quiser esse comportamento, poderá abrir o dispositivo de bloco com o sinalizador O_DIRECT.
Eu tenho um dispositivo de bloco remoto com a imagem do sistema de arquivos de teste ext4.
No lado do iniciador iSCSI, eu tenho esse dispositivo detectado como digamos /dev/sdb
. Eu estou não montando este sistema de arquivos, mas em vez disso eu uso a ferramenta forense% TheSleuthKit (TSK) fls
para ler o conteúdo dos meus dados.
Noto que, para a segunda execução, o tempo de execução é mais rápido. Eu sei sobre o cache de página e que, para ignorá-lo, eu deveria usar o Direct-IO. No entanto, eu estava convencido de que este não será o caso do iSCSI.
Se o dispositivo está sendo modificado por outro nó, não há como meu cliente vê-lo se tiver essa entrada em cache. Significa simplesmente - problemas de inconsistência. Como posso garantir que minhas leituras sempre vão para a "fonte"? Existe algum parâmetro que eu possa configurar para esvaziar o cache de leitura periodicamente? (Echo 3 > / proc ... não é uma opção).
Sim, há um cache de buffer de leitura de dispositivo de bloco - bcache - que armazena em cache blocos previamente lidos.
Se você não quiser esse comportamento, poderá abrir o dispositivo de bloco com o sinalizador O_DIRECT.