fsync на подключенном зашифрованном устройстве с помощью dm-crypt?

У меня есть вопрос о dm-crypt.

Вот моя ситуация. У меня есть зашифрованный раздел, сопоставленный (зашифрованный в виртуальном устройстве) с помощью команды cryptsetup в Linux. Я открываю сопоставленное виртуальное устройство в c-программе с помощью функции open().

Могу ли я быть уверен, что при использовании функции fsync() вся информация будет записана в зашифрованный раздел, или в драйвере dm-crypt есть какой-то буфер?


person mediata    schedule 26.08.2015    source источник
comment
Это вопрос о dm-crypt в целом (будет ли он буферизироваться перед записью даже после sync), или вы думаете, что использование вашей собственной программы отличается от, например, команды оболочки, скажем, touch crypt/file; sync?   -  person serv-inc    schedule 26.08.2015
comment
Я использую собственную программу на C. Но cryptsetup использует модуль ядра dm-crypt для отображения зашифрованного раздела в /dev/mapper/‹device_name›, который я открываю в программе C с помощью open() и записываю и читаю напрямую. И мой вопрос заключается в том, что когда я вызываю fsync() в свою программу на C, вся информация, которую я записываю до этого, будет в реальном зашифрованном разделе после возврата fsync() или есть ли способ попасть в буфер в модуле dm-crypt.   -  person mediata    schedule 26.08.2015


Ответы (1)


Я не мог найти много ссылок на это. Может быть, кто-то может пролить больше света на это, так как я не искал источник, но кажется, что sync пишет на диск.

Во-первых, это вопросы trim-with-lvm-and-dm-crypt, где sync надежно изменяет содержимое диска, но кэшированное содержимое обновляется только после echo 1 > /proc/sys/vm/drop_caches.

Другая проблема — это , что sync зависает на приостановленном устройстве, что указывает на то, что синхронизация идет непосредственно к устройству.

В-третьих, это обсуждение Gentoo, где luksClose возможно надежно после sync .

Четвертый — этот ответ UL, в котором говорится

остальная часть [dm-crypt] находится в ядре и довольно активно используется, так что, вероятно, все в порядке.

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

person serv-inc    schedule 26.08.2015