CentOS下支持挂载exFAT与NTFS文件系统

CSDNGitHub
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 国际许可协议进行许可, 转载请注明出处, 谢谢合作.

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页