블록 장치에 캐시 플러시가 필요한지 확인하는 방법

블록 장치에 캐시 플러시가 필요한지 확인하는 방법

특정 블록 장치가 캐시 플러시를 요구하는지 궁금합니다.

~에서xfs FAQ(내 것을 강조하다):

Q: 영구 쓰기 캐시가 있는 스토리지에서 장벽을 활성화해야 합니까?

많은 하드웨어 RAID에는 정전, 인터페이스 재설정, 시스템 충돌 등을 견디는 영구 쓰기 캐시가 있습니다. 일부 SSD 장치의 경우에도 마찬가지입니다. 이 하드웨어는새로 고침이 필요하지 않다고 운영 체제에 보고합니다., 이 경우 "nobarrier" 옵션이 없어도 장벽이 방출되지 않습니다. xfs 목록에서 Christoph Hellwig의 말을 인용하자면,

장치에 캐시 플러시가 필요하지 않은 경우 플러시가 필요하다고 보고해서는 안 되며, 이 경우 nobarrier는 작동하지 않습니다. 또는 다르게 말하면, 영향을 미칠 장애물이 없다면 그 장애물을 뛰어넘는 것은 안전하지 않습니다.

쓰기 캐시 동작을 올바르게 보고하는 하드웨어가 있는 최신 커널에서는 설치 시 장벽 옵션을 변경할 필요가 없습니다.

내 장치에 캐시 플러시가 필요하지 않다는 것을 알고 있지만 캐시 플러시가 커널에 올바르게 보고되는지 확인하고 싶습니다.

특정 블록 장치가 캐시 플러시가 필요하다고 보고하는지 확인하는 방법은 무엇입니까? /sys에서 이것을 찾았습니다.

root@diamond:/# cat /sys/block/sdb/device/scsi_disk/0\:0\:1\:0/cache_type
write through

그런데 이 문맥에서는 그게 무슨 뜻인지 모르겠어요.

버전:

  • 리눅스 3.16.0-4-amd64 #1 SMP 데비안 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

답변1

예, /sys/block/xxx/queue/cache_type 파일의 내용을 통해 장치에 캐시 플러시가 필요한지 알 수 있습니다. ~에서문서/블록/queue-sysfs.txtLinux 커널 소스 코드에서:

write_cache (RW)
----------------
When read, this file will display whether the device has write back
caching enabled or not. It will return "write back" for
the former case, and "write through" for the latter. Writing to this
file can change the kernels view of the device, but it doesn't alter
the device state. This means that it might not be safe to toggle the
setting from "write back" to "write through", since that will also
eliminate cache flushes issued by the kernel.
  • 파일의 내용이 "연속 쓰기"인 경우 장치는 이를 요구합니다.확실히캐시를 새로 고쳐야 합니다.

  • 파일 내용이 "쓰기 저장"인 경우 장치는 이를 요청합니다.하다캐시를 새로 고쳐야 합니다.

관련 정보