Почему ecryptfs работает так медленно при запуске du -s?

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

  1. Когда я запускаю du -s в своей домашней папке, это занимает в несколько раз больше времени, чем при работе с теми же данными в незашифрованном разделе.
  2. При входе в папку, содержащую> 1000 изображений, в Krusader требуется 10-20 секунд, прежде чем Krusader покажет файлы (он полностью не отвечает в течение этого времени).

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

У кого-нибудь есть идеи?

4
задан 18 May 2012 в 12:41

1 ответ

Вот почему, основываясь на объяснении одного из ведущих разработчиков Canonical:

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

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

Проще говоря, проблема не в скорости ввода-вывода, а в IOP - в огромном количестве IOP! 9,10 и 11,10 .

Возможно, вы захотите рассмотреть dm-crypt, который исторически был быстрее, а у все еще есть преимущество .

0
ответ дан 18 May 2012 в 12:41

Другие вопросы по тегам:

Похожие вопросы: