Плохая производительность записи на ecryptfs
Я провел несколько сравнительных тестов с ecryptfs и dm-crypt и получил несколько интересных результатов. Все последующее было сделано с файловой системой Btrfs, используя dd
скопировать файл ~700MB на / с виртуального диска с помощью conv=fdatasync
возможность принудительной синхронизации данных. Кэши дисков очищались перед каждым тестом.
No encryption:
read - 165MB/s
write - 120MB/s
ecryptfs:
read - 125MB/s
write - 15MB/s
dm-crypt:
read - 150MB/s
write - 115MB/s
dm-crypt + ecryptfs:
read - 120MB/s
write - 15MB/s
Теперь я понимаю, что шифрование медленнее, чем в сырой файловой системе, однако я не ожидал значительного снижения производительности записи с помощью ecryptfs. Тот факт, что я вынужден синхронизировать данные, делает этот тест нереальным? Или есть какие-то опции, которые я могу передать ecryptfs, чтобы записи работали быстрее?
Я использовал шифрование имени файла на ecryptfs, но кроме этого все было установлено по умолчанию.
1 ответ
Страница человека из dd
около fdatasync
гласит: physically write output file data before finishing
, поэтому он записывает данные только физически "один раз" (читается как "не принудительно сбрасывать каждые X-блоки или байты, а только сбрасывать в конце"). Если вы используете dd
чтобы сделать ваши тесты, это лучший способ получить наиболее точные результаты. Напротив, если не использовать этот конкретный флаг, вы сделаете ваши результаты нереалистичными: если вы пропустите его, то, вероятно, пропустите время для самого шифрования, поскольку dd
просто копирует данные вокруг.
Тем не менее, я также думал, что что-то происходит с вашими результатами, но я обнаружил, что эта статья показывает почти то же самое: ecryptfs мучительно медленен. И ваш тест (копируетсяодин файл) - лучший сценарий для ecryptfs!
Поскольку ecryptfs записывает зашифрованный файл (с настраиваемым заголовком с метаданными внутри) для каждой версии с открытым текстом, наличие большого количества маленьких файлов подразумевает еще большее снижение производительности.
Однако у ecryptfs есть свои преимущества: вы можете отправить зашифрованный файл сразу, не теряя шифрование. Ваши резервные копии (при условии, что вы создаете резервные копии зашифрованных данных) будут быстрее, поскольку вы будете копировать только файлы размером с ваши данные (и даже быстрее, если они будут инкрементными, поскольку вы будете копировать только измененные файлы).
С другой стороны, dm-crypt может быть намного быстрее, но вам нужно будет отправить весь контейнер (целую файловую систему), чтобы сохранить шифрование как есть. И резервные копии также будут состоять из целого контейнера, и в большинстве случаев они не смогут делать инкрементные резервные копии.
Я использовал (и до сих пор использую) оба метода (но не те же инструменты) для хранения зашифрованных данных: синхронизировать файлы на основе файлов (ecryptfs) легче, если использовать такие службы онлайн-хостинга, как dropbox между компьютерами, но это довольно медленно, когда внесение изменений и вызвало у меня некоторые проблемы с лежащей в основе файловой системой (предполагается, что она может записывать файлы, а проблемы, связанные с ограничениями в файловой системе, имеют тенденцию разрушать все это); Я предпочитаю шифрование на блочных устройствах: я отношусь к ним как к простым разделам, поэтому ограничения и проблемы не так плохо нарушаются. Единственный недостаток - копирование контейнера, которое может занять больше времени.