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
1
如果提示未找着软件包, 说明您未添加 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
1
2
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
1
这个软件是fuse模块,编译需要fuse-devel包支持:

sudo yum install fuse-devel
1
下载后,安装源代码RPM:

rpm -ivh fuse-exfat-1.0.1-1-el6.src.rpm exfat-utils-1.0.1-1.el6.src.rpm
1
在主目录下,会出现rpmbuild目录:

cd ~/rpmbuild/SPECS
rpmbuild -ba fuse-exfat.spec
rpmbuild -ba exfat-utils.spec
1
2
3
构建完成后, 即可在 ~/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
1
2
3
这样就安装完成了。

2.2 挂载exfat
可以通过以下命令来挂载exfat的U盘了:

sudo mount.exfat /dev/sdc1 /mnt
OR
sudo mount /dev/sdc1 /mnt
1
2
3
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
1
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
1
2
3
4
5
6
yum 只适用于 Redhat 系, 编译安装适用于所有 Linux 发行版

3.2 挂载NTFS文件系统
假设你的 NTFS 文件系统是 /dev/sdb1 而你将会把它挂载在 /mnt/windows/c, 请执行以下步骤.

创建挂载点。(一般建议挂在mnt目录里)
mkdir /mnt/windows/c
1
挂载NTFS分区:
mount -t ntfs-3g /dev/sdb1 /mnt/windows/c
OR
mount /dev/sdb1 /mnt/windows/c
1
2
3
注 : 这里的 sdb1 是指 SATA 或 SCSI 硬盘的第一个分区, 如果是老式的 IDE 硬盘, 会是hda1, 具体请用 fdisk -l
---------------------
作者:JeanCheng
来源:CSDN
原文:https://blog.csdn.net/gatieme/article/details/71075394
版权声明:本文为博主原创文章,转载请附上博文链接!

发表评论

邮箱地址不会被公开。 必填项已用*标注