Скорость записи NTFS очень низкая (<15 МБ / с) в Ubuntu

18

При копировании больших файлов или тестировании скорости записи dd, максимальная скорость записи, которую я могу получить, составляет около 12-15 МБ / с на дисках, использующих файловую систему NTFS. Я протестировал несколько дисков (все подключены с использованием SATA), скорость записи которых составляла 100 МБ / с + в Windows или при форматировании с ext4, так что это не проблема выравнивания или диска.

topпоказывает высокую загрузку процессора для mount.ntfsпроцесса.

Двухъядерный процессор AMD (2,2 ГГц)
Версия ядра: версия 3.5.0-23-generic
Ubuntu 12.04
ntfs-3g: как 2012.1.15AR.1(версия Ubuntu по умолчанию), так и2013.1.13AR.2

Как я могу исправить скорость записи?

Zulakis
источник
Вы пробовали тестировать dd с доступом к сырому диску (на диске или разделе, не имеет значения)? Обратите внимание, что тестирование таким образом разрушит файловую систему и потеряет все данные на ней. Это будет полностью обходить драйверы NTFS.
Боб
Да, я только что сделал, результат 149MB/s.
Зулакис
Просто из любопытства я должен спросить, является ли этот диск одним из тех 4k-накопителей и, следовательно, может ли ваша файловая система каким-либо образом быть выровнена ?!
Waxhead
4
Я полагаю, что бесплатная версия NTFS-3G ограничена, поэтому она использует запись 4 КиБ без кэширования, что приводит к крайне низкой производительности записи на SSD и USB-накопителях. Компания за драйвером предлагает купить коммерческую версию для лучшей производительности. Очевидно, никто не заботится о том, чтобы на самом деле исправить (и, если необходимо, раскошелиться) версию с открытым исходным кодом, потому что эта проблема существует уже почти десять лет, с тех пор как NTFS-3G была впервые выпущена.
Троник
1
На том же ноутбуке Ubuntu 2015.04 я отформатировал в NTFS внешний жесткий диск объемом 320 ГБ и USB-накопитель объемом 32 ГБ. Копирование 2 ГБ изображений на первое заняло целую вечность (6 часов осталось примерно через 30 минут), а на второе (USB-накопитель) ушло всего одна или две минуты. Я не менял никаких настроек между двумя.
Николас Рауль

Ответы:

18

Предыдущий пост был на правильном пути с предоставленной ссылкой:

возможно, проверьте здесь идеи о том, что может быть причиной этого. http://www.tuxera.com/community/ntfs-3g-faq/#slow

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

Обходной путь: использование опции монтирования «big_writes» обычно снижает нагрузку на процессор, при условии, что программное обеспечение, запрашивающее запись, поддерживает большие блоки.

Просто добавьте опцию big_writes, например

sudo mount -o big_writes /media/<mount_dir> /dev/<device>

Мой Linux-NAS с процессором с низкой спецификацией теперь управляет записью больших файлов NTFS примерно в три раза быстрее. Он улучшился с ~ 17 МБ / с до 50 МБ / с +. Даже видно, что в iotop он составляет около 90 МБ / с, что, вероятно, близко к возможностям внешних накопителей (2,5 "USB3 HDD).

Со справочной страницы NTFS-3G:

 big_writes
              This option prevents fuse from splitting write buffers  into  4K
              chunks,  enabling  big  write buffers to be transferred from the
              application in a single step (up to some system limit, generally
              128K bytes).

Закрытие заметки:

  • опция big_writes, вероятно, не поможет тесту случайной записи 4K ;-)
  • В то время как Tuxera, по-видимому, резервирует профессиональный драйвер NTFS для встроенных системных партнеров, Paragon предлагает альтернативный бесплатный для личного использования драйвер NTFS под названием NTFS & HFS для Linux 9.0 Express и профессиональную версию. Однако я не ручаюсь за этот продукт, и когда я попробовал предыдущую версию (v8.5), я не мог заставить его работать с моей версией ядра Linux в то время.
JPvRiel
источник
Опция big_writes заставила мой диск перейти с 300 КБ / с на 35 МБ / с! Благодарность!
JosFabre
10 персонажей сделали мир разницы, большое спасибо!
Жоао Мигель Брандао
big_writesв 2016 году был объявлен устаревшим , однако через 3 года некоторые дистрибутивы все еще используют более старую версию libfuse.
Дмитрий Григорьев
2

возможно, проверьте здесь идеи о том, что может быть причиной этого. http://www.tuxera.com/community/ntfs-3g-faq/#slow

Это немного похоже на «старые времена», когда файл io по умолчанию не использовал DMA. В наши дни это маловероятно, но использует ли BIOS эмуляцию IDE для дисков SATA? Потому что, если он эмулирует IDE, то он также может эмулировать режим без DMA.

Еще одно потенциальное замедление - это сжатие файлов NTFS. Включено ли сжатие для папки, в которую вы пишете? Если это так, то все новые файлы в этой папке также будут сжаты.

оборота BeowulfNode42
источник
Как я могу проверить, использует ли он DMA? Кроме того, я уже опробовал все предложения на странице.
Зулакис
Хм, из того, что я прочитал, DMA относится только к дискам IDE? Я использую только диски SATA.
Зулакис
Согласно en.wikipedia.org/wiki/Serial_ATA#Transport_layer, похоже, что DMA - единственный вариант для SATA. Давайте узнаем, использует ли его биос ide эмуляцию
BeowulfNode42
0

Это старая ветка, но для людей, которые ищут решение той же проблемы: у вас активен cpuspeed? ntfs-3g сильно загружен процессором, и в моем случае cpuspeed по ошибке обнаружил низкую нагрузку для процессов с большим количеством ожиданий ввода-вывода, что в конечном итоге привело к замедлению работы ядра и истощению драйвера.

Попробуйте отключить cpuspeed (например, если он работает как сервис) и повторите тестирование.

irisx
источник
Как определить, что cpuspeed активен? Это демон или сеттинг?
Даниэль
0

big_writesбыл устаревшим в 2016 году, соответствующее поведение всегда включен при использовании libfuseверсии 3.0.0 или более поздней версии. В современной системе Linux низкая производительность NTFS обычно означает, что:

  • диск фрагментирован
  • NTFS сжатие дисков включено
  • неадекватные опции монтирования, такие как syncиспользуются
Дмитрий Григорьев
источник