![iSCSI 블록 장치에는 클라이언트 읽기 캐싱이 있습니까? 그렇다면 이를 비활성화하는 방법은 무엇입니까?](https://linux55.com/image/83011/iSCSI%20%EB%B8%94%EB%A1%9D%20%EC%9E%A5%EC%B9%98%EC%97%90%EB%8A%94%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%20%EC%9D%BD%EA%B8%B0%20%EC%BA%90%EC%8B%B1%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%EA%B7%B8%EB%A0%87%EB%8B%A4%EB%A9%B4%20%EC%9D%B4%EB%A5%BC%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
테스트 ext4 파일 시스템 이미지가 있는 원격 블록 장치가 있습니다. iSCSI 초기자 측면에서 이 장치를 감지했다고 가정하겠습니다 /dev/sdb
. 그래요아니요이 파일 시스템은 마운트되어 있지만 TheSleuthKit(TSK) 포렌식 도구를 사용하여 fls
데이터 내용을 읽습니다.
두 번째 실행에서 실행 시간이 실제로 더 빨라진 것을 확인했습니다. 페이지 캐싱에 대해 이해하고 있으며 이를 우회하려면 Direct-IO를 사용해야 합니다. 그러나 iSCSI에서는 그렇지 않을 것이라고 확신합니다.
장치가 다른 노드에 의해 수정되는 경우 내 클라이언트는 이 항목을 캐시하는지 확인할 수 없습니다. 그래서 그것은 단지 불일치 문제를 의미합니다. 내가 읽은 내용이 항상 "출처"에 도달하도록 하려면 어떻게 해야 합니까? 정기적으로 읽기 캐시를 새로 고치도록 설정할 수 있는 매개변수가 있습니까? (echo 3 > /proc ...은 옵션이 아닙니다).
답변1
예, 이전에 읽은 블록을 캐시하는 블록 장치 읽기 버퍼 캐시(bcache)가 있습니다.
당신이 그렇게한다면아니요이 동작을 원하면 O_DIRECT 플래그를 사용하여 블록 장치를 열 수 있습니다.