Уже больше года у меня на mini-ITX компьютере (Intel D945GCLF2, Atom 330) крутился Debian Lenny x86. Все работало отлично, но вот скорость записи на NTFS-диски меня категорически не устраивала. Например, операция копирования на внешний USB-NTFS диск свежескачанных файлов большого объема (пусть это будет инсталяционный набор на DVD какого-нибудь из дистрибутивов Linux ;-)) занимала много времени со средней скоростью в районе 4-5Мб/сек из 26Мб/сек возможных. Это мне надоело, и, предположив, что все дело в старых версиях пакетов, используемых в Debian, я подключил нестабильные репозитарии и обновился...
В результате отвалилась графическая подсистема (часть нужных пакетов были только в stable репозитарии и не совместимы с новыми пакетами), а скорость не увеличилась. Попробовав Ubuntu Server 9.10 x64 и Sabayon 5.2 x64 Gnome я получил схожие результаты. Причем на на других машинах со сравнимой производительностью процессора и скорость записи была похожая, а вот на значительно более мощных процессорах (например, Q8200) все летало так, как и должно было бы быть. Правда, необходимо заметить, что при этом загрузка одного из ядер процессора Q8200 составляла 100%.
Откатившись назад к Debian и поискав в сети похожие случаи, я сделал вывод, что дело в низкой производительности драйвера FUSE NTFS-3G на слабых машинах, у которого, к тому же, наблюдается падение скорости записи при росте размера записываемого файла. Готовых опробованных решений, кроме переформатирования дисков в EXT3 или т.п. не было. Однако, есть коммерческие драйверы (kernel mode) для NTFS под Linux: разработки Paragon (NTFS for Linux 7.0 Express) и разработки Tuxera (Tuxera NTFS). Перспектива платить деньги за драйвер меня не порадовала, потому на английском сайте Paragon'a я нашел бесплатную для некоммерческого использования версию драйвера Paragon NTFS for Linux 7.0 Express, с незначительными для данного случая ограничениями по функционалу (нет утилиты проверки ФС, нет дефрагментатора, не поддерживаются динамические тома и пр, подробности у них на сайте).
Главные поддерживаемые функции (осталось их проверить на практике):
- NTFS versions 1.2, 3.0 and 3.1 (Windows NT 4.0, 2000, XP, 2003, Vista)
- Compressed files
- Files and folders with security permissions
- Sparse files support (NTFS)
- File and folder names in national languages (pass file system code page name to driver), including support for Asian (hieroglyphic) languages
- No system degradation during data transfers
- Support for SMP kernels (multiprocessor systems)
- No limitations in maximum file size (conforms to kernel and NTFS limitations)
Состав стенда:
- процессорная плата Intel D945GCLF2, Atom 330, 1Gb RAM
- системный диск WD 250Gb IDE
- тестируемый накопитель WDC WD6400AACS-00D6B1, SATA
- файловая система NTFS (отформатирована под Windows XP, один раздел на весь диск, свободно 180Гб). Специально не очищал диск для создания условий, приближенных к реальному использованию.
- Debian Lenny (Linux lenny 2.6.26-2-686 #1 SMP; ntfs-3g 1.2531, установлены все обновления по 14.04.2010)
Драйвер поставляется в исходных кодах и собирается на месте под конкретное ядро. Под версией 2.6.26 у меня собирается, а под 2.6.27 и 2.6.31 уже нет, что подтверждается жалобами на форуме с участием представителей разработчика (тут). Необходимо заметить, что применять сабж нужно с осторожность, т.к. в ранних бета-версиях были обнаружены проблемы со стабильностью (линк). Сам драйвер "из коробки" собираться не хочет, требуется предварительно скачаные и собранные исходные коды текущего ядра, а также указание путей к ним (проще сделать символическую ссылку для той папки, в которой установщик будет искать коды ядра).
Для упрощения, тестирование проводилось измерением времени записи последовательности из нулей нужного размера (1.6 Гб, 3.3Гб, 6.6Гб, 16Гб, 33Гб) с помощью следующей команды (count менялся для изменения размера файла):
# dd if=/dev/zero of=/media/Music_640/test.bin count=50000 bs=32768
Результат тестирования сведен в одну диаграмму:
Разница по скорости последовательной записи очень значительная, и растет при увеличении размера записываемого файла. При этом при работе FUSE NTFS-3G драйвера на 100% загружены все 4 вычислительных потока процессора, чего нет при использовании драйвера Paragon. Похожие результаты были получены и тут. Полученный результат мне понравился, ведь теперь можно без потери производительности использовать NTFS под Linux. Правда, осталась нерешенной проблема совместимости драйвера с более свежими ядрами. В итоге, для полноценной работы NTFS с большими файлами под линукс на маломощных ЭВМ однозначно нужно прикручивать драйвер. С другой стороны, есть альтернативное решение -- разбить внешний диск на два раздела (FAT+EXT3), положить на FAT драйвера файловой системы EXT3 под Windows и далее уже пользоваться родной для Linux файловой системой.
14 апреля, 2010 в 16:46
дай какой-нибудь вывод: что с чем сравнивалось и что рулит?
Ответить
vasiliy Reply:
15 апреля, 2010 at 6:26
Обновил описание, привел версию драйвера. Парагоновский драйвер однозначно рулит против штатного, разница достигает 26 раз. В общем то понятно, что под Linux рулят родные для него файловые системы: XFS на больших файлах, Reiser и EXT4 на мелких. Однако, и NTFS с нормальным драйвером отлично работает, а производительность ограничивается только возможностями накопителя. Так что выбирать надо под конкретную задачу. В данном случае я выбрал NTFS по нескольким причинам (наличие большого ассортимента ПО для восстановления данных, отлично реализованы методы дефрагментации, совместимость без дополнительных драйверов с Win).
Ответить