![블록 장치에 액세스할 때 O_DIRECT 플래그가 Linux 페이지 캐시도 우회합니까?](https://linux55.com/image/82252/%EB%B8%94%EB%A1%9D%20%EC%9E%A5%EC%B9%98%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%A0%20%EB%95%8C%20O_DIRECT%20%ED%94%8C%EB%9E%98%EA%B7%B8%EA%B0%80%20Linux%20%ED%8E%98%EC%9D%B4%EC%A7%80%20%EC%BA%90%EC%8B%9C%EB%8F%84%20%EC%9A%B0%ED%9A%8C%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 다음을 사용하여 하드 디스크 이미지를 여는 많은 KVM 가상 머신을 실행하고 있습니다.O_DIRECT
배너.
내가 아는 한, 매뉴얼 페이지에 따르면 using은 파일에 쓸 때 Linux 페이지 캐시를 우회하려고 시도 open()
하지만 이것이 블록 장치에도 적용됩니까? O_DIRECT
(예를 들어 하드 디스크 이미지가 LVM 볼륨 또는 ZFS zvol인 경우)
참고: 여기서 사용 사례 O_DIRECT
는 게스트가 이미 자체 페이지 캐시를 유지 관리하고 있으므로 이를 호스트에 복제할 필요가 없다는 것입니다.
답변1
대답은 '예'인 것 같습니다. O_DIRECT로 블록 장치를 열면 페이지 캐시도 우회됩니다. 나는 2009년에 그 답을 찾았다Linux 페이지 캐싱에 대한 블로그 게시물.
페이지 캐싱은 Linux의 O_DIRECT 또는 Windows의 NO_BUFFERING을 사용하여 우회할 수 있으며, 이는 종종 데이터베이스 소프트웨어에서 수행됩니다.