CSDN | GitHub |
---|---|
CentOS下支持掛載exFAT與NTFS文件系統 | AderXCoding/system/tools/centos_mount_exfat_ntfs |
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作
1 問題
1.1 問題描述
給實驗室的一臺破機器裝了 CentOS 7
, 今天想從移動硬盤上往機器上拷貝點東西, mount
掛載的時候發現掛載不上去, 提示未知的文件系統. 想了想好像是 CentOS
默認是不支持這些 Windows
的文件系統的. 這點還是 Ubuntu
友好, 包都裝好了, 移動硬盤插上去自動掛載, 沒辦法了, CentOS
上折騰吧.
1.2 Windows下文件系統
Windows
下分區的常見格式有 FAT
、FAT32
、NTFS
和 exFAT
早期大家見得多的格式一般是FAT
和 FAT32
, 不過目前由於單個文件越來越大,超過 4G
的文件, FAT
和 FAT32
格式不支持,所以現在的硬盤格式都會被轉換成 NTFS
或 exFAT
格式,
1.3 NTFS和exFAT分區格式的特點與區別
NTFS(New Technology File System)
是 WindowsNT
和高級服務器網絡操作系統環境的文件系統, 設計的目的是提供比 FAT32
更高的可靠性, 並消除 FAT32
文件系統容量限制. 它除了支持更大的分區和文件、更節約硬盤空間外, 還提供了 FAT32
文件系統不能提供的長文件名、壓縮分區、事件追蹤、文件索引、高容錯性、數據保護和恢復以及加密訪問等功能.
但是, 爲什麼閃盤和各種存儲卡很少使用 NTFS
進行分區呢? 雖然 NTFS
優點衆多, 但它是專爲傳統機械硬盤而設計的. 它採用了一種”日誌式”的文件系統, 需要頻繁記錄磁盤的詳細讀寫操作, 會給閃盤或 SSD
這類儲介質帶來額外的負擔. 同時, NTFS
文件系統頻繁的讀寫也影響到閃盤的性能,帶來傳輸速率的下降。
爲此,微軟在傳統FAT 32分區的基礎上開發了exFAT文件系統(Extended File Allocation Table FileSystem),既彌補了FAT32的侷限性和缺點,又沒有NTFS那些會影響閃存壽命的功能,適合各種移動存儲卡和閃盤使用。
exFAT
文件系統具有如下優點:
分區大小和支持的單個文件大小最大可達
16EB
;使用了剩餘空間分配表,空間利用率更高;
同一目錄下最大文件數可達65536個;
支持訪問控制。
目前, 只有固態硬盤、閃盤和存儲卡才能格式化成 exFAT
, 傳統硬盤是無法格式化成 exFAT
格式的,因此它是一種專門針對閃存的文件系統。
2 支持掛載NTFS文件系統
exfat
格式的文件系統是通過 fuse
(Filesystem in userspace
) 模塊來支持的
2.1 安裝fuse-exfat
exfat
支持是通過 fuse
模塊的方式支持的, 其項目地址是 :
https://code.google.com/p/exfat/ ,當前版本是 : 1.0.1
目前exfat的支持已經是全功能支持,支持讀寫。
2.1.1 yum源或者rpm包安裝
使用如下命令直接從源中安裝
sudo yum install fuse-exfat
如果提示未找着軟件包, 說明您未添加 rpmfusion
源, 請先添加下載rpmfusion-free-release-7.noarch.rpm
可嘗試添加源後, 再安裝
下載
fuse-exfat
包(必須)和exfat-utils
包直接進行安裝
下載地址 fuse-exfat-1.0.1-1.el7.x86_64.rpm
下載地址 exfat-utils-1.0.1.el7.x86_64.rpm
然後直接安裝
sudo rpm -ivh fuse-exfat-1.0.1-1.el7.x86_64.rpm
sudo rpm -ivh exfat-utils-1.0.1-1.el7.x86_64.rpm
2.1.2 SRC.RPM
源碼構建 RPM
安裝
雖然不是想說這種方法, 一般來說, 發行版對於每一個 rpm
或者 deb
包都會提供其源碼包, 方便開發者自行從源碼構建安裝包, Ubuntu
等發行版使用 apt-get source
下載源碼, 使用
apt-get build-dep
構建其環境, Redhat
等發行版則使用 RPMBUILD
來構建, 其包成爲src.rpm
可以下載`src.rpm源代碼包, 並自行使用
scons和
gcc編譯, 也可以在
rpmfusion下載源代碼
RPM, 然後通過構建
RPM` 來安裝. 這裏採用構建RPM的方式(這樣安裝卸載都很方便)。
下載地址 :
http://download1.rpmfusion.org/free/el/updates/6/SRPMS/repoview/index.html
分別下載:fuse-exfat-1.0.1-1-el6.src.rpm 和 exfat-utils-1.0.1-1.el6.src.rpm
http://download1.rpmfusion.org/free/el/updates/7/x86_64/f/
- 編譯安裝:
編譯前,請先檢查系統,如果系統中沒有scons和gcc,請通過yum安裝:
sudo yum install scons gcc
這個軟件是fuse模塊,編譯需要fuse-devel包支持:
sudo yum install fuse-devel
下載後,安裝源代碼RPM:
rpm -ivh fuse-exfat-1.0.1-1-el6.src.rpm exfat-utils-1.0.1-1.el6.src.rpm
在主目錄下,會出現rpmbuild目錄:
cd ~/rpmbuild/SPECS
rpmbuild -ba fuse-exfat.spec
rpmbuild -ba exfat-utils.spec
構建完成後, 即可在 ~/rpmbuild/RPMS
裏面找到生成的 RPM
( 根據系統架構, 分別在 x86_64
或 i386
目錄下, 其中名字中帶有 debuginfo
的包不必安裝):
cd ~/rpmbuild/RPMS/x86_64
sudo rpm -ivh fuse-exfat-1.0.1-1.el7.x86_64.rpm
sudo rpm -ivh exfat-utils-1.0.1-1.el7.x86_64.rpm
這樣就安裝完成了。
2.2 掛載exfat
可以通過以下命令來掛載exfat的U盤了:
sudo mount.exfat /dev/sdc1 /mnt
OR
sudo mount /dev/sdc1 /mnt
3 支持掛載exFAT文件系統
RPM
源中NTFS文件系統的支持是由 ntfs-3g
軟件包來完成的
3.1 安裝ntfs-3g模塊
3.1.1 使用yum的安裝方法:
請確定你已經安裝了 rpmforge
軟件庫的源.
請參考:RHEL/CentOS 5.5使用第三方軟件庫
然後安裝下列組件
yum install fuse ntfs-3g -y
nfts-3g
並不再標準的源中, 如果提示未找到軟件包, 請先添加 EPEL
源, 參見CentOS7/RHEL7安裝EPEL擴展倉庫步驟詳解
注:如果你在使用 CentOS 5.3 或更舊版本, 那麼你需要安裝來自 ELRepo
的mod-fuse
3.1.2 使用ntfs-3g官方源碼編譯安裝
目前 2017-04-19
, ntfs-3g
的最新版本是 2017-03-23
官網 : http://www.tuxera.com/community/open-source-ntfs-3g/
ntfs-3g
下載頁面 : https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
安裝步驟 :
wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
tar zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz
cdntfs-3g_ntfsprogs-2017.3.23
./configure
make
make install
yum
只適用於 Redhat
系, 編譯安裝適用於所有 Linux
發行版
3.2 掛載NTFS文件系統
假設你的 NTFS
文件系統是 /dev/sdb1
而你將會把它掛載在 /mnt/windows/c
, 請執行以下步驟.
- 創建掛載點。(一般建議掛在mnt目錄裏)
mkdir /mnt/windows/c
- 掛載NTFS分區:
mount -t ntfs-3g /dev/sdb1 /mnt/windows/c
OR
mount /dev/sdb1 /mnt/windows/c
注 : 這裏的
sdb1
是指SATA
或SCSI
硬盤的第一個分區, 如果是老式的IDE
硬盤, 會是hda1
, 具體請用fdisk -l
查看.
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作.