Моя среда - Ubuntu 15.04 с ядром 3.19.0-28-generic и Btrfs v3.17.
У меня есть два идентичных внешних жестких диска USB, которые я использую со своим сценарием резервного копирования. Один из них отформатирован с помощью btrfs
а другой - с помощью ext4
. Исходная файловая система всегда ext4
. Команда rsync
выглядит так:
rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"
Я только что понял, что резервное копирование, выполняемое на btrfs
занимает очень много времени: чуть больше часа, по сравнению с 4 минутами, которые требуются для выполнения той же копии на ext4
.
Чтобы исключить сбои в работе диска, я выполнил несколько тестов, с dd
и «дисковой утилитой», поставляемой с Ubuntu, но у меня одинаковая производительность на обоих дисках. Медленная часть кажется жесткой связью с предыдущей резервной копией. Даже после дефрагментации и очистки следующая команда занимает около 53 минут на btrfs
, но только 1 минуту на ext4
:
cp -arl "$previousBackup" "$destDir"
Исследуя Интернет, я обнаружил намеки на то, что производительность btrfs
страдает от жестких ссылок, но я не ожидаю такой огромной разницы. Я обнаружил, что эта команда быстрее, но все еще занимает более 30 минут:
cp -ar --reflink "$previousBackup" "$destDir"
Кто-нибудь имеет опыт работы с таким поведением и может подтвердить это? Есть ли простой способ исправить это (например, различные варианты монтирования), или я должен попытаться удалить как можно больше жестких ссылок и просто использовать ссылки?
РЕДАКТИРОВАТЬ
Я только что узнал, что даже удаление каталога из btrfs
требует более одного часа. Эта же операция выполняется мгновенно на "двойном" диске ext4
. Очевидно, здесь есть проблема с метаданными.