Как гарантировать, что записи будут физически зафиксированы до того, как будет сообщено о их завершении?

Как гарантировать, что записи будут физически зафиксированы до того, как будет сообщено о их завершении?

Когда моя система загружается и проверяет внешний жесткий диск, подключенный через USB, Assuming drive cache: write throughв выводе dmesg появляется сообщение, помеченное именем внешнего диска.

Поскольку я использую этот диск для хранения резервных копий, я бы предпочелсистема не делает никаких предположений о характеристиках привода.Я готов обменять производительность записидля надежного знания того, что когда что-то было записано в файловую систему на соответствующем диске,он действительно был передан на постоянное хранениеи не находится где-то в кэше (предпочтительно даже не на самом диске, поскольку сбой питания приведет к немедленному отключению питания и компьютера, и диска).

Возможным усложняющим фактором является то, что диск содержит один раздел, зашифрованный LUKS. Файловая система существует только внутри этого контейнера LUKS, например:

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

Отсюда мой вопрос: как я могу убедиться, что все записи фиксируются на физическом носителе, прежде чем сообщать о завершении в пользовательском приложении?

решение1

Здесь есть две составные части: кэш записи на диск и кэш файловой системы.

Кэширование записи на диск можно отключить с помощью hdparm -W 0 [device]. Вы можете отключить кэширование записи в файловой системе, смонтировав/перемонтировав ее с помощью параметра sync. Обратите внимание, что эти изменения значительно ухудшат производительность.

Связанный контент