
Когда моя система загружается и проверяет внешний жесткий диск, подключенный через USB, Assuming drive cache: write through
в выводе dmesg появляется сообщение, помеченное именем внешнего диска.
Поскольку я использую этот диск для хранения резервных копий, я бы предпочелсистема не делает никаких предположений о характеристиках привода.Я готов обменять производительность записидля надежного знания того, что когда что-то было записано в файловую систему на соответствующем диске,он действительно был передан на постоянное хранениеи не находится где-то в кэше (предпочтительно даже не на самом диске, поскольку сбой питания приведет к немедленному отключению питания и компьютера, и диска).
Возможным усложняющим фактором является то, что диск содержит один раздел, зашифрованный LUKS. Файловая система существует только внутри этого контейнера LUKS, например:
+- physical drive ------------------------+
| |
| +- partition -----------------------+ |
| | | |
| | +- LUKS encryption -----------+ | |
| | | | | |
| | | +- file system ---------+ | | |
| | | | | | | |
| | | | actual data | | | |
| | | | | | | |
| | | +-----------------------+ | | |
| | | | | |
| | +-----------------------------+ | |
| | | |
| +-----------------------------------+ |
| |
+-----------------------------------------+
Отсюда мой вопрос: как я могу убедиться, что все записи фиксируются на физическом носителе, прежде чем сообщать о завершении в пользовательском приложении?
решение1
Здесь есть две составные части: кэш записи на диск и кэш файловой системы.
Кэширование записи на диск можно отключить с помощью hdparm -W 0 [device]
. Вы можете отключить кэширование записи в файловой системе, смонтировав/перемонтировав ее с помощью параметра sync
. Обратите внимание, что эти изменения значительно ухудшат производительность.