보고서가 완료되기 전에 쓰기가 물리적으로 커밋되었는지 어떻게 보장할 수 있나요?

보고서가 완료되기 전에 쓰기가 물리적으로 커밋되었는지 어떻게 보장할 수 있나요?

시스템이 부팅될 때 외부 USB로 연결된 하드 드라이브를 검색하면 dmesg 출력에 Assuming drive cache: write through외부 드라이브의 장치 이름이 표시된 메시지가 표시됩니다.

저는 이 드라이브를 백업 저장에 사용하기 때문에 정말 선호합니다.시스템은 드라이브의 특성에 대해 어떠한 가정도 하지 않습니다..쓰기 성능을 희생할 의향이 있습니다.문제의 드라이브에 있는 파일 시스템에 무엇인가 기록될 때,실제로 영구 저장소 전용으로 사용되었습니다.그리고 캐시 어딘가에는 없습니다(정전이 발생하면 컴퓨터와 드라이브 모두에 ​​즉시 전원 공급이 중단되므로 드라이브 자체에도 없는 것이 좋습니다).

한 가지 복잡한 요인은 드라이브에 LUKS로 암호화된 파티션이 있다는 것입니다. 파일 시스템은 다음과 같이 LUKS 컨테이너에만 존재합니다.

+- physical drive ------------------------+
|                                         |
|  +- partition -----------------------+  |
|  |                                   |  |
|  |  +- LUKS encryption -----------+  |  |
|  |  |                             |  |  |
|  |  |  +- file system ---------+  |  |  |
|  |  |  |                       |  |  |  |
|  |  |  |      actual data      |  |  |  |
|  |  |  |                       |  |  |  |
|  |  |  +-----------------------+  |  |  |
|  |  |                             |  |  |
|  |  +-----------------------------+  |  |
|  |                                   |  |
|  +-----------------------------------+  |
|                                         |
+-----------------------------------------+

그래서 내 질문은 다음과 같습니다. 사용자 공간 애플리케이션에 완료된 것으로 다시 보고하기 전에 모든 쓰기가 물리적 스토리지에 커밋되었는지 어떻게 확인할 수 있습니까?

답변1

여기에는 디스크 쓰기 캐시와 파일 시스템 캐시라는 두 가지 구성 요소가 있습니다.

디스크 쓰기 캐싱 비활성화를 사용할 수 있습니다 hdparm -W 0 [device]. sync이 옵션을 사용하여 파일 시스템을 마운트/다시 마운트하여 파일 시스템 쓰기 캐싱을 비활성화 할 수 있습니다 . 이러한 변경으로 인해 성능이 크게 저하됩니다.

관련 정보