CentOS下支持掛載exFAT與NTFS文件系統

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下分區的常見格式有 FATFAT32NTFSexFAT

早期大家見得多的格式一般是FATFAT32, 不過目前由於單個文件越來越大,超過 4G的文件, FATFAT32 格式不支持,所以現在的硬盤格式都會被轉換成 NTFSexFAT格式,

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-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源代碼包, 並自行使用sconsgcc編譯, 也可以在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_64i386 目錄下, 其中名字中帶有 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 或更舊版本, 那麼你需要安裝來自 ELRepomod-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 是指 SATASCSI 硬盤的第一個分區, 如果是老式的 IDE 硬盤, 會是hda1, 具體請用 fdisk -l 查看.


知識共享許可協議本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章