Как ускорить rsync / tar большого Maildir?

7

У меня очень большой Maildir. Я копирую новую машину (более 100BASE-T) с помощью rsync. Прогресс идет медленно. ОЧЕНЬ МЕДЛЕННО. Как 1 Мб / с медленно. Я думаю, это связано с тем, что много маленьких файлов, которые читаются в порядке, который по существу является случайным относительно того, где блоки хранятся на диске, вызывая массивную бурю поиска. Я получаю аналогичные результаты при попытке tar-каталога. Есть ли способ получить rsync / tar для чтения в порядке блокировки диска или иначе решить эту проблему?

Изменить: я попробовал tar cf / dev / zero Maildir / и на старой системе это заняло 30 минут! В новой системе, когда rsync, наконец, закончил, тот же тест занял 18 минут. Сбрасывание одного и того же каталога в старой системе заняло 8 минут, а в новой системе - dump -0f / dev / zero -b 1024 / home / psusi / Maildir / завершено всего за 30 секунд.

    
задан psusi 10.03.2011 в 20:55
источник

3 ответа

7

В итоге я написал небольшой скрипт python для вычисления корреляции между именами каталогов и inodes, inodes и блоками данных и именами каталогов для блоков данных. Оказывается, что ext4 имеет тенденцию иметь довольно плохую корреляцию между порядком, в котором имена файлов появляются в каталоге, и где они хранятся на диске. Обсудив его в списке рассылки ext4, выясняется, что это результат хешированных индексов каталога, используемых для ускорения поиска в больших каталогах. Имена хранятся в хэш-порядке, который эффективно скремблирует их порядок относительно чего-либо еще.

Мне кажется и, по крайней мере, еще одному комментатору, что это недостаток в fs, который должен быть исправлен. Тед Ц'о (сторонник-экстендер) считает, что в fs было бы слишком сложно сделать так, что хорошие инструменты (например, rsync и tar) должны иметь возможность сортировать каталог по номеру inode перед чтением файлов.

Итак, похоже, что запросы на повышение характеристик нужно подавать для rsync и tar.

    
ответ дан psusi 23.03.2011 в 18:18
источник
2

Несколько точек для рассмотрения:

  • Сколько файлов мы говорим? find /path/to/your/maildir/ | wc -l должно дать вам приблизительное указание. Сотни тысяч должны быть в порядке. Сотни миллионов могут предложить вам обрезать, архивировать и вообще очищать.

  • Является ли диск медленным? Существует множество эталонных тестов, таких как полный bonnie++ и быстрый и простой бенчмаркер Disk Utility. Запустите один и посмотрите, страдаете ли вы.

    • Это может вызвать проблемы с оборудованием - заменить что-то быстрее
    • Проблемы с файловой системой. Используете ли вы что-то известное очень медленно при высокоскоростном IOPS с быстрым чтением?

Но в конечном счете, tar ring, а затем передача должна дать вам наилучшую общую пропускную способность за счет того, что вам нужно быть там, чтобы настроить передачу, как только вы создали tar.     

ответ дан Oli 10.03.2011 в 21:03
1

Попробуйте отключить отслеживание atime или использовать относительное atime в новом разделе диска. Это ограничит накладные расходы. Переход от файловой системы, не связанной с журналом, такой как ext2, в файловую систему журналов, например ext3 или ext4, будет иметь некоторые образы производительности

Когда я переехал Maildirs, я сделал подготовительный rsync, чтобы получить все каталоги на месте раньше времени. Затем были сделаны только обновления.

Когда вы будете готовы выполнить реальный ход, вы можете убедиться, что каталоги стабильны.

  • поместите демон SMTP только в режиме очереди,
  • отключить очередь, запущенную SMTP-демоном, и
  • отключить доступ пользователя.

Восстановить после завершения перемещения файла.

EDIT: Я думаю, вы определили проблему. Tar и rsync будут ходить по каталогам. Из-за обычных изменений файла в Maildir файлы для каждого каталога будут разбросаны по всему диску. Инструмент, подобный дампу, будет читать раздел в блочном порядке, но реплицирует проблему на новый раздел. Второй rsync должен работать намного быстрее, чем второй.     

ответ дан BillThor 11.03.2011 в 04:10