mount:未知的文件系统类型“exfat“ 问题思考与解决

问题

描述

给公司的闲置电脑装了一个 CentOS7,打算当自己平时练手用的服务器,今天拿了自己的移动硬盘,想把之前的东西拷过去,但是 mount 的时候发现 mount 不上去(我的是 exFat 格式的也就是 fat64,支持 macOS和 Windows 的文件互传)。

思考

那 Mac 上原本也是不支持 ntfs 的啊(苹果没有明确说支持,也没有在系统中自带提供),但是我们可以通过插件的形式来让其可以支持这种格式(但是曦轩为了方便,还是直接把移动硬盘格式化成 exFat 格式,毕竟很多 NTFS 插件还需要另外收费),那 CentOS 是不是也支持这种安装插件之后支持不同格式的方式呢?

容我 Google(百度)一下。

科普时间

突然想起常见的分区格式可能大家还不是很了解,那我就顺带在这里也给大家介绍一番(毕竟学计算机的连修电脑都得懂,这种能不了解吗?)

我们先来看一下目前的一些分区格式:FAT,FAT32,NTFS,exFAT;

FAT & FAT32

在早期的时候(我家是在我小学的时候就有了电脑)大家见得多的格式一般是 FAT 和 FAT32,不过目前由于单个文件越来越大(我记得当时的仙剑才几百兆最多,大一点的游戏有超过 1G,哎呀暴露了我小时候爱玩游戏的事实),超过 4G的文件, FAT 和 FAT32 格式不支持,所以现在的硬盘格式都会被转换成 NTFS 或 exFAT格式。

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 格式的,因此它是一种专门针对闪存的文件系统。

支持挂载NTFS文件系统

exfat 格式的文件系统是通过 fuse (Filesystem in userspace) 模块来支持的

那我们得先安装 fuse-exfat
exfat 支持是通过 fuse 模块的方式支持的,其项目地址是 :
https://code.google.com/p/exfat/
目前exfat的支持已经是全功能支持,支持读写。

yum 源或者 rpm 包安装

使用如下命令直接从源中安装

sudo yum install fuse-exfat

如果提示未找着软件包,说明您未添加 rpmfusion 源,请先添加下载rpmfusion-free-release-7.noarch.rpm

可尝试添加源后,再安装

sudo rpm -ivh rpmfusion-free-release-7.noarch.rpm
sudo yum install fuse-exfat

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

这样就安装完成了。

挂载exfat

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

sudo mount.exfat /dev/sdc1 /mnt
或者
sudo mount /dev/sdc1 /mnt

By the way

有问题?可以给我留言或私聊
有收获?那就顺手点个赞呗~

当然,也可以到我的公众号下「6曦轩」,

回复“学习”,即可领取一份
【Java工程师进阶架构师的视频教程】~

回复“面试”,可以获得:
【本人呕心沥血整理的 Java 面试题】

回复“MySQL脑图”,可以获得
【MySQL 知识点梳理高清脑图】

还有【阿里云】【腾讯云】的购买优惠噢~具体请联系我

曦轩我是科班出身的程序员,php,Android以及硬件方面都做过,不过最后还是选择专注于做 Java,所以有啥问题可以到公众号提问讨论(技术情感倾诉都可以哈哈哈),看到的话会尽快回复,希望可以跟大家共同学习进步,关于服务端架构,Java 核心知识解析,职业生涯,面试总结等文章会不定期坚持推送输出,欢迎大家关注~~~

近期会通过面试问答的形式为大家推送面试相关的知识,如果有什么建议可以在公众号留言~

《mount:未知的文件系统类型“exfat“ 问题思考与解决》

    原文作者:6曦轩
    原文地址: https://blog.csdn.net/weixin_42669785/article/details/107100918
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞