블록 장치에 액세스할 때 O_DIRECT 플래그가 Linux 페이지 캐시도 우회합니까?

블록 장치에 액세스할 때 O_DIRECT 플래그가 Linux 페이지 캐시도 우회합니까?

나는 다음을 사용하여 하드 디스크 이미지를 여는 많은 KVM 가상 머신을 실행하고 있습니다.O_DIRECT배너.

내가 아는 한, 매뉴얼 페이지에 따르면 using은 파일에 쓸 때 Linux 페이지 캐시를 우회하려고 시도 open()하지만 이것이 블록 장치에도 적용됩니까? O_DIRECT(예를 들어 하드 디스크 이미지가 LVM 볼륨 또는 ZFS zvol인 경우)

참고: 여기서 사용 사례 O_DIRECT는 게스트가 이미 자체 페이지 캐시를 유지 관리하고 있으므로 이를 호스트에 복제할 필요가 없다는 것입니다.

답변1

대답은 '예'인 것 같습니다. O_DIRECT로 블록 장치를 열면 페이지 캐시도 우회됩니다. 나는 2009년에 그 답을 찾았다Linux 페이지 캐싱에 대한 블로그 게시물.

페이지 캐싱은 Linux의 O_DIRECT 또는 Windows의 NO_BUFFERING을 사용하여 우회할 수 있으며, 이는 종종 데이터베이스 소프트웨어에서 수행됩니다.

관련 정보