완료가 보고되기 전에 쓰기가 물리적으로 커밋되도록 보장하는 방법은 무엇입니까?

완료가 보고되기 전에 쓰기가 물리적으로 커밋되도록 보장하는 방법은 무엇입니까?

시스템이 부팅되면 USB 연결 외부 하드 드라이브를 검색할 때 Assuming drive cache: write throughdmesg 출력에 외부 드라이브의 장치 이름 태그가 붙은 메시지가 표시됩니다.

저는 이 드라이브를 백업 저장에 사용하기 때문에 정말 선호합니다.시스템은 드라이브의 특성에 대해 어떤 가정도 하지 않습니다..쓰기 성능을 교환할 의향이 있습니다.문제의 드라이브에 있는 파일 시스템에 무언가가 기록되었을 때,실제로 영구 저장에 전념했습니다.그리고 캐시 어딘가에 있지 않습니다(정전이 발생하면 컴퓨터와 드라이브 모두의 전원이 즉시 꺼지므로 드라이브 자체에 있는 것이 바람직하지 않습니다).

복잡한 요소 중 하나는 드라이브가 LUKS로 암호화된 단일 파티션을 보유하고 있다는 것입니다. 파일 시스템은 다음과 같이 해당 LUKS 컨테이너 내에만 존재합니다.

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

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

답변1

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

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

관련 정보