CentOS下支持挂载exFAT与NTFS文件系统,centosexfat为此,微软在传统FA


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.2SRC.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查看.


转自:https://creativecommons.org/licenses/by-nc-sa/4.0/

相关内容

    暂无相关文章