Linux NTFS support
For a long time, only reading a NTFS partition was available in Linux. It is a limitation for NAS devices as it means that a plugged USB drive that is in NTFS format will not be able in the network to store/modify data on this drive ! But there are, now, some solutions to gain write access to NTFS partitions. We will list the available solutions and benchmark them ...
Stock kernel's NTFS support (MIPS & PPC & ARM9)
The NTFS support that is in the Linux kernel is only allowing read operations on NTFS disk.
FUSE + NTFS-3G (MIPS & PPC & ARM9)
This solution is the easiest to install, and is available for MIPS, PPC & ARM devices !
Mounting a partition can be done using this command :
mount -t ntfs-3g /dev/'device' mountpoint
Paragon Software NTFS for Linux (ARM9 only)
This solution have been developed by Paragon Software.
The ARM version is not publicly available and I had to sign a NDA to receive the module for benchmarking. The source code is not available but the driver have been compiled for a Marvell CPU close to the one used in our ARM9 devices. The point in testing that is to show if this solution is fast enought to be embedeed in a NAS device like the Linkstation Pro (and other NAS using the same Marvell's SoC).
It's have been compiled for a 18.104.22.168-arm1 kernel (same as the Linkstation stock kernel) but require some modules that are not in the stock Linkstation Pro system.
I'm still working on compiling a kernel to use this driver. Results will be available as soon as I succeed !
A Kurobox Pro and Bonnie++ v1.03a benchmarking tool have been used to benchmark the filesystems.
- EXT3 benchmarking have been done using a 2.6.24-rc3 (Orion) kernel
- FUSE v2.7.1 + NTFS-3G v1.1120 benchmarking have been done using a 2.6.24-rc3 (Orion) kernel
- NTFS-3G v1.1128 benchmarking have been done using a 2.6.24-rc3 (Orion) kernel
- Paragon Software NTFS for Linux driver (marvell_ufsd_slow.ko) benchmarking have been done using kernel 22.214.171.124
|Sequential Output||Sequential Input||Random||Sequential Create||Random Create|
|Per Chr||Block||Rewrite||Per Chr||Block||Seeks||Create||Read||Delete||Create||Read||Delete|
|EXT3 / internal disk||300M||1893||97||21213||75||17732||59||1688||99||47158||91||227.7||7||16||3578||98||XXXXX||XXX||6147||99||3654||98||XXXXX||XXX||6139||98|
|FUSE v2.7.1 + NTFS-3G v1.1120 / internal disk||300M||911||48||1708||9||1853||14||1554||99||12707||11||137.5||3||16||167||8||566||12||188||7||182||9||590||12||183||6|
|NTFS-3G v1.1128 / internal disk||300M||937||50||1705||9||1831||14||1573||99||12958||11||136.9||4||16||175||8||571||11||193||7||187||8||592||11||175||5|
|Paragon's NTFS driver / internal disk||300M||1548||96||12780||69||18430||15||1674||98||26814||2||227.6||4||16||181||60||16191||83||278||53||67||26||+++++||+++||32||9|
To complete this article, I need to :
- Benchmark the Paragon's driver
- Benchmark reading performances of the Linux -read only- NTFS support
Fuse + NTFS-3G give some slow performances on a Linkstation Pro/Kurobox Pro (and it should be worst on PPC based devices). In real usage configuration (ie : using an USB drive in NTFS format), performances will even be slower because of the USB driver taking CPU time ...
We still have to wait for Paragon's driver benchmarking results ...