在 Linux 上使用 NTFS

Linux kernel 對 NTFS 的支援非常有限
主要的原因當然是因為微軟不公開 NTFS 的檔案系統格式
因此,我們想要在 NTFS 底下建立、刪除或變更檔案的大小都是很困難且有風險的, 僅僅可以去覆蓋原本已存的檔案 (而原檔案大小不變)

1.NTFS Driver
1.1.ntfs driver (read-only)
原本的 http://linux-ntfs.sourceforge.net/ 已搬到 http://www.linux-ntfs.org/
原來的 Linux-NTFS project 提供了 ntfs (read-only) 的 driver 以及 NTFS 相關的工具程式 (ntfsprogs)
但這些工具程式都是有風險性的

使用方式:
$ mount -t ntfs /dev/hda1 /XP

1.2.ntfs-3g driver (read-write)
http://www.linux-ntfs.org/ 的 Linux-NTFS project 最近發表了 ntfs-3g driver
http://sourceforge.net/mailarchive/forum.php?thread_id=23836054&forum_id=2697
號稱提供了一個更快速更安全的 open source driver,雖然目前還在 beta 階段,不過根據一些使用者的實際測試結果,成功率很高,也有不錯的效能

使用方式:
$ ntfs-3g /dev/hda1 /XP -o silent,umask=0,locale=zh_TW.UTF-8

1.3.captive-ntfs driver (read-write)
http://www.jankratochvil.net/project/captive/ 的 captive-ntfs driver
算是最早支援 “寫入” NTFS 的 open source driver
原理是使用 Wine 的方式透過原本的 Microsoft Windows ntfs.sys driver

使用方式:
$ mount -t captive-ntfs /dev/hda1 /XP

1.4.Paragon NTFS for Linux Driver (read-write)
http://www.ntfs-linux.com/ 的 Paragon NTFS for Linux Driver
這是商業版本的 driver,號稱可以完全讀寫 NTFS

2.在 Windows 上讀寫 ext2/ext3
因為 NTFS 的種種限制,與其冒著風險來寫入 NTFS,不如來個反其道而行
在 Windows 上來讀寫 ext2/ext3

2.1.Ext2IFS
http://www.fs-driver.org/index.html
提供在 Windows NT4.0/2000/XP 上完整存取 Linux Ext2 (read access and write access)
Linux Ext3 的存取部份請參考 FAQ: http://www.fs-driver.org/faq.html

2.2.Explore2fs
http://www.chrysocome.net/explore2fs
Explore2fs 是圖形化介面的工具,幾乎可以存取大部份 ext2/ext3 檔案系統
目前主要是支援讀取部份
Beta 版本的 Virtual Volumes (Explore2fs 2 預覽版) 則預計要支援:

Supported by all versions of Windows (Vista is still Work In Progress)
Reads and Writes LVM2 (Multiple slices is still Work In Progress)
Reads and Writes EXT2/EXT3
Reads and Writes Win32 filesystems (via Win32 API)
Reads software RAID0 and RAID1
VFS allows mounting on subdirectories
VFS abstraction allows multiple filesystems to be supported
VFS abstraction allows network filesystems like ftp & http be supported
Command line interface
GUI
Accessable in native namespace
NT Kernel driver to enable IFS to read LVM2

3.實測結果
底下為我個人的測試結果,測試的準確性可能會受硬碟內外圈及 Cache 等因素的影響因此,數據僅供參考以 “read” 來說,ntfs driver 的效果最好,速度跟 ntfs-3g 差不多,captive-ntfs 則慢了點而在 “write” 部份,ntfs-3g 的表現的確不錯,captive-ntfs 的表現就慢很多很多

測試主機:

Acer Veriton 7800GX 桌機
Intel 945G Chipset
CPU P4-3.0G (HT)
RAM 512Mb
SATA WDC WD800JD-22LS 80G 7200RPM HDD
$ ls -l ubuntu-6.06-desktop-i386.iso
-rw-r--r-- 1 root root 731744256 Jun 20 11:47 ubuntu-6.06-desktop-i386.iso
我的 SATA 硬碟的分割如下:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             10080520   6868316   3212204  69% /
/dev/sda5              8064272   5883248   2181024  73% /SL
/dev/fuse             20490872   5294168  15196704  26% /XP
/dev/sda3             37571064  12375192  23287352  35% /var/ftp
/dev/shm                253496         0    253496   0% /dev/shm
我以 ubuntu-6.06-desktop-i386.iso 731744256 (約 700Mb) 大檔複製來做測試

Write 部份:
3.1.Use ntfs-3g driver

$ time cp ubuntu-6.06-desktop-i386.iso /XP/
(連測三次的結果)

real    1m43.250s
user    0m0.224s
sys     0m3.432s

real    1m13.189s
user    0m0.152s
sys     0m3.600s

real    1m2.355s
user    0m0.152s
sys     0m3.424s
3.2.Use captive-ntfs driver

$ time cp ubuntu-6.06-desktop-i386.iso /XP/
(因為實在太慢了,我只測了兩次就測不下去了)

real    46m24.915s
user    0m0.848s
sys     0m6.800s

real    39m43.023s
user    0m0.800s
sys     0m6.488s
至於 Paragon NTFS Dirver 因為要 $$ 買,所以沒去測

Read 部份:
3.3.Use ntfs-3g driver

$ time cp /XP/ubuntu-6.06-desktop-i386.iso /var/ftp/
(連測三次的結果)

real    0m36.037s
user    0m0.100s
sys     0m3.860s

real    0m37.327s
user    0m0.160s
sys     0m3.464s

real    0m37.831s
user    0m0.132s
sys     0m3.796s
3.4.Use ntfs driver

$ time cp /XP/ubuntu-6.06-desktop-i386.iso /var/ftp/
(連測三次的結果)

real    0m30.422s
user    0m0.180s
sys     0m6.392s

real    0m31.072s
user    0m0.128s
sys     0m6.500s

real    0m29.892s
user    0m0.156s
sys     0m6.212s
3.5.Use captive-ntfs driver

$ time cp /XP/ubuntu-6.06-desktop-i386.iso /var/ftp/
(連測三次的結果)

real    1m58.328s
user    0m0.144s
sys     0m3.612s

real    1m57.597s
user    0m0.104s
sys     0m3.272s

real    2m21.475s
user    0m0.172s
sys     0m4.348s

4.結語
很多同時裝有 Windows and Linux 的使用者,應該都有同樣的困擾:
就是如何讓資料能夠在兩個不同的作業系統底下可以共享,同時也可以讀跟寫

要達到共享的方法其實很多如建立一個 FAT32 分割區來共享,但缺點是 FAT32 的效能不彰透過另一台網路伺服器來共享,只要有網路便可以輕易共享檔案

然而,大家最希望的方法,還是能夠在 Linux 底下就能直接存取(讀寫) NTFS
以及在 Windows 底下就能直接存取 (讀寫) Ext2/Ext3 等檔案系統後者比較沒有太大的問題,而前者因為微軟的不公開 NTFS 檔案系統格式而造成阻礙雖然 captive-nfts driver 透過 ntfs.sys 的方式勉強可以寫入 NTFS,但是速度實在很慢; 現在,在 ntfs-3g driver 出現後,整個存取 NTFS 的速度大幅提昇 (包含讀跟寫)相信在不久的將來,等 ntfs-3g driver 更穩定更成熟後,想要輕鬆在 Linux 底下有效率的讀跟寫 NTFS 的檔案系統決不會只是夢想而已

5.相關文章
http://bisqwit.iki.fi/story/howto/ntfs/
http://digg.com/linux_unix/NTFS-3G_-_Full_NTFS_read_write_support_for_Linux
http://osnews.com/comment.php?news_id=15196

arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()