고정된 파일 시스템을 사용하여 파일 시스템 캐시 플러시

고정된 파일 시스템을 사용하여 파일 시스템 캐시 플러시

내 생각에는 sysctl을 통해 캐시를 삭제하면 vm.drop_caches삭제된다는 것입니다.모두하지만 파일 시스템을 정지하고 페이지 캐시를 삭제해도 여전히 디렉터리를 읽을 수 있습니다.

# fgrep ' /mnt ' /proc/mounts
/dev/mapper/test /mnt ext2 rw,noatime 0 0
# ls /mnt
lost+found
# fsfreeze --freeze /mnt
# echo 3 > /proc/sys/vm/drop_caches
# ls /mnt
lost+found

동기화 후에도 파일을 읽을 수 있습니다.

# echo "hello world" > /mnt/foo
# sync
# fsfreeze --freeze /mnt
# echo 3 > /proc/sys/vm/drop_caches
# cat /mnt/foo
hello world

포기하고 싶어모두파일 시스템이 사용될 때까지 후속 읽기(파일 및 디렉터리 항목)가 차단되도록 파일 시스템이 캐시됩니다 fsfreeze --unfreeze /mnt. 어떻게 해야 합니까?

vm.drop_caches이렇게하지 않습니까? 미리 읽기 캐시 같은 것은 삭제되지 않나요?

답변1

해결책은 파일 시스템을 수동으로 고정하는 대신 블록 장치 버퍼를 추가로 플러시하고 장치 매퍼 대상을 일시 중단하는 것입니다(그러면 dmsetup suspend파일 시스템도 고정됨).

# ls /mnt
lost+found
# echo 3 > /proc/sys/vm/drop_caches
# blockdev --flushbufs /dev/mapper/test
# dmsetup suspend test
# ls /mnt

이제 명령이 차단되고 ls실행될 때만 차단이 해제됩니다.dmsetup resume test

관련 정보