3

У меня есть папка с несколькими сотнями тысяч небольших файлов, общим объемом около 14 ГБ данных. Это папка в моей зашифрованной домашней директории ecryptfs.

Создание папки du -sh занимает более 9 минут. Выполнение cp -ral в незашифрованном месте занимает час и 15 минут. Загрузка ЦП в это время в основном связана с вводом-выводом (80% ва сверху)

Создание зашифрованной папки du -sh занимает всего 15 секунд, а cp -ral в том же месте занимает всего 80 секунд. «encryptedfolder» - это папка в /home/.ecryptfs/myname/.Приватный, который содержит зашифрованные файлы.

Я сбит с толку, как происходит этот хит производительности. Резервное копирование этой папки осуществляется через rsync, что теперь занимает более двух часов. Прежде чем я переключился на ecryptfs, я использовал truecrypt, и резервное копирование выполнялось за 12 минут.

Почему ecryptfs так ужасно медленен в этом сценарии? Операции du -sh и cp -ral не требуют расшифровки содержимого файла, а просто находят правильное имя файла. Есть ли способ ускорить это?

PS: это работает на Ubuntu 11.04

2 ответа2

2

Здесь есть пара способствующих факторов.

  1. Получение списка всех имен файлов в каталоге требует декодирования, анализа и расшифровки нижних имен файлов.

  2. Вызовы stat() из du вызывают поиск, который требует выделения inode eCryptfs, чтения части метаданных нижнего файла, проверки того, что это файл eCryptfs, а затем анализа незашифрованного размера файла для установки поля i_size inode в eCryptfs. , Имейте в виду, что чтение метаданных из нижней файловой системы включает чтение страницы в кэш страницы нижней файловой системы.

Из-за дизайна eCryptfs, он имеет некоторые печальные издержки при работе с большим количеством файлов. Я уверен, что есть некоторые улучшения / улучшения, которые должны быть сделаны, несмотря на дизайн, но оптимизация этой части кода ранее не была моей задачей.

0

Простой ответ - нет. Снижение производительности происходит не из-за медленной функции encryptfs, а из-за необходимости выделять очень большое количество inode и выполнять обслуживание диска, чтобы поместить все метаданные, связанные с файлами, на диск один за другим.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .