6
12月
2022
便携式存储设备的 exFAT 文件系统
16:06

便携式存储设备的 exFAT 文件系统

6 12月 2022 16:06

为什么 exFAT 比 NTFS 更好?

为了工作,该组织购买了 SSD 便携式硬盘和 HDD 2.5 外壳来存储视频存档。 在使用该磁盘之前,我在其上创建了一个msdos分区表,并将该分区格式化为NTFS文件系统。 一段时间后,当连接 USB 电缆时,它在 Windows 10 和 8.1 中停止打开 - “访问被拒绝”。

我将 Linux 中的内容复制到更大的内部 HDD。 这次我将SSD格式化为exFAT。
现在我将始终使用 exFAT 作为 USB 闪存驱动器和便携式 HDD!

exFAT 相对于 NTFS 的主要优点如下:

1) exFAT 与 NTFS 一样,允许您保存大于 4GB 的文件。

2) Linux exFAT 支持内置于内核 5.4 或更高版本中。 而NTFS支持是通过可选包“ntfs-3g”实现的。

3) 使用exFAT可减少复制信息时处理器和磁盘控制器的负载并提高性能。

4) 用户和组权限不存在问题——就像在任何 FAT 中一样,不存在任何问题。 因此,不会出现无法读取或写入介质的问题。

5) 许多 USB 闪存驱动器都预先格式化为 exFAT。 但 exFAT 也可用于复制存档、数据库副本或视频文件的备份磁盘。

6) exFAT 是与便携式设备(手机、mp3 播放器)以及电视和固定 DVD 播放器最兼容的文件系统之一。 ExFAT 支持首次在 Window XP(更新 KB955704)、Windows 7 等、Linux 内核 5.4 及更高版本中实现。

7) exFAT仅支持长文件名。

8) 目录中的最大文件数实际上受到簇数的限制。

9) 更高效地记录长文件而不产生碎片。 在exFAT中,目录项中的一位表示该文件是连续的(没有碎片),告诉exFAT驱动程序忽略FAT。”而NTFS需要不断地访问块表。这提高了exFAT复制文件时的速度。

10)有空闲空间映射,这也使得写入大文件变得更加容易和快捷。

11) exFAT的主要优点 :exFAT 文件系统被所有 Microsoft 操作系统识别,这允许 传输数据 之间 Linux 和 **窗户。此外,exFAT 了解智能手机和平板电脑的操作系统 -安卓9.0及以上,还有 iOS系统** 适用于 Apple Mac(2025 年 2 月 6 日添加)。

最佳 exFAT 簇大小。 在磁盘开头保留空间

格式化大磁盘时,您可以指定明显高于标准 NTFS 4 kB 的簇大小。 最大大小为 32 MB。 对于 256MB–32GB 磁盘,32 KB 簇是最佳选择。

将 Windows 中的分区格式化为 exFAT 格式,簇大小为 32 kB:

diskpart
select disk 0
list partition
select partition 1
format fs=exFAT unit=32k quick

将磁盘从 Linux 格式化为 exFAT 格式时,您可以指定 两个 参数-边界 “-b” 和簇大小 “-c”
所谓的“对齐”部分需要下边框。 这提高了复制信息的速度。

对齐参数以字节为单位指定,或者可以使用后缀 m/M(表示兆字节)或后缀 k/K(表示千字节)指定,并且必须是 2 的幂。 某些介质(例如 SD 卡)需要此设置才能获得最佳性能并延长介质的使用寿命。

mkfs.exfat /dev/sdd1 -b 64k -c 32k -L "Cruiser 8Gb" 

其中:
/dev/sdd1 - 将卷名称替换为真实名称(可以使用 lsblk 命令找到)。
-b - “边界”参数在磁盘开头分配可用空间以提高可靠性和性能。
-c - 簇大小。
-L “标签名称” - 符号磁盘标签,其中文本标签名称的长度最多为 11 个字符(允许空格)。

对于没有卷的闪存驱动器和 microSD 存储卡(例如,lsblk 输出 /dev/sdd)。

sudo mkfs.exfat /dev/sdd -b 64k -c 32k

其中:
/dev/sdd 是 lsblk 命令为存储卡显示的磁盘名称。

USB闪存制造商协会针对不同大小的磁盘推荐的值-b和-c:

USB 闪存驱动器容量,GB 选项 -b 和 -c
1-2 -b 64k -c 32k
2-32 -b 4M -c 32k
32-128 -b 16M -c 128k
128-第512章 -b 32M -c 256k
第512章-2048 -b 64M -c 512k

例如,对于 16 GB 闪存驱动器,在卷 /dev/sdd1 上创建 exFAT 文件系统的命令:

mkfs.exfat /dev/sdd1 -b 4M -c 32k

其中 /dev/sdd1 - 替换为 lsblk 命令输出中的磁盘/闪存驱动器的分区名称。

对于 32 GB microSD 存储卡,创建 exFAT 文件系统的命令。

sudo mkfs.exfat /dev/sdd -b 16M -c 128k

其中 /dev/sdd - 替换为 lsblk 命令输出的 microSD 存储卡的名称。

在“-s”参数中指定每个簇的扇区数

某些 Linux 发行版(例如 Runtu LITE)的 mkfs.exfat 程序有一个变体,它要求您在“-s”参数中仅指定每个簇的扇区数,而不是簇大小。此外,标签参数(-L name)也缺失。

要以扇区为单位指定簇大小,首先需要知道扇区大小:

lsblk

fdisk -l /dev/sdb

磁盘 /dev/sdb:3.63 GiB,3879731200 字节,7577600 个扇区
磁盘型号:USB 闪存盘
单位:1 个扇区 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

可以看出,物理扇区大小为 512 字节

指定 -s 参数时的最佳大小:

USB 闪存盘容量,GB 最佳簇大小,KB 簇大小(扇区)
(-s 参数)
1 - 2 32 -s 64
2 - 32 32 -s 64
32 - 128 128 -s 256
128 - 512 256 -s 512
512 - 2048 512 -s 1024

4GB 闪存盘示例命令

sudo mkfs.exfat /dev/sdb1 -s 64

分区和使用闪存盘时的典型错误

可能出现的主要问题是,如果删除分区表并在其位置创建另一个分区表(例如,执行命令时),闪存盘会出现故障 dd id=file.iso of=/dev/sdc )。 某些 USB 闪存驱动器只能使用工厂创建的分区表,并且不能容忍对其进行更改。 您只能将此类“闪存驱动器”格式化为 exFAT,而无需更改结构。 闪存驱动器故障的标志是消息“没有可用的介质”。 在这种情况下,当控制器连接到 USB 插座时,控制器会被计算机识别,但介质的内部存储器不可见(卷 0 字节,0 字节空闲)。

“死”的闪存驱动器无法使用 Windows 或 Linux 命令恢复(只有制造商提供的特殊低级程序可以提供帮助,这些程序可以直接访问控制器,指示存储芯片的参数。此类程序通常与已安装的控制器不兼容,并且具有复杂的接口,需要指定控制器的确切类型(可以通过拆解闪存驱动器找到)。

便携式存储设备列表 失败 当执行DD命令或使用parted删除分区表时:

  • 威刚 C008 [AC008-8G-RKD]
  • Aliexpress 的 USB 电缆带有两个 USB 和 micro-USB 连接器(Chipsbank CBM2199E 控制器芯片)。 印刷电路板上的铭文:CBM2199。 可能是其他型号的 Chipsbank 闪存驱动器。

在 Windows 中创建磁盘分区表并将其格式化为 exFAT

指令
磁盘部分

list disk
select disk 1
clean
list disk
create partition primary
active
format fs=exfat unit=32k label="Flash disk" quick
assign letter=f

在Linux中创建磁盘分区表并将其格式化为exFAT

首先您需要安装必要的软件包:

sudo apt-get update
sudo apt-get install gparted gnome-disk-utility

现在让我们运行该程序:

sudo gparted

接下来,按照下面的屏幕截图中的步骤操作:

! 将字母 SDA 替换为与便携式驱动器对应的驱动器名称(SDD、SDE 等) - 请参阅命令输出 LSBLK

1.
创建0
2.
创建1
3.
创建2
4.
创建3
5.
创建4
6.
创建5
7.
创建6
8.
创建7
9.
创建8
10.
创建9

要安装磁盘,请启动磁盘管理单元 (sudo gnome 磁盘 ),选择磁盘、分区并单击“三角形”按钮。
山

!!! !新磁盘已准备就绪。

安装具有不同名称的驱动器

将驱动器连接到 USB 时,外部驱动器会自动安装到文件夹中 /媒体/用户名/标签:
安装的

如果您不满意 挂载点名称 默认情况下,可以通过单击带有两个齿轮图像的按钮来更改它。
选项

禁用开关“用户会话默认值” =>更改挂载点。
改变

然后,指定不同的挂载点:
备份

要应用设置更改,请在“磁盘”管理单元中卸载磁盘(带有方形按钮 -“停止”)并再次安装磁盘(带有三角形按钮)。

备份2

挂载点已更改为 /mnt/备份。 该磁盘在“PCManFM”资源管理器中可见。

正确的磁盘弹出

在物理断开驱动器之前,请单击文件资源管理器中的“弹出”图标。
卸载

添加。 问答。

问题:Linux 中从哪个版本的内核开始支持 exFAT?

答:针对低内核版本 4.1 - 5.15 你可以使用一个名为 linux-exfat-oot,需要编译并构建到内核中。

本机,即通过内核在图形界面中安装磁盘的“本机”exFAT 支持 5.19 和更高。 ( 来源 )。

另外,在 安卓9.0“派” 及更高版本(Android 内核 4.4.146+)。

问:从 Ubuntu 操作系统的哪个版本开始,对 exFAT FS 的支持是开箱即用的?

答: 乌班图20.1022.04 长期支持 还有较新的 Linux Mint 21.x LTS 基于 22.04

来源1,来源2

exfat-fuse 包的用途是什么?

答:exfat-fuse 软件包用于 Ubuntu 操作系统版本 22.04 以下的用户环境的 FUSE 模块化文件系统。

在 Ubunti OS 20.04 LTS 及更早版本中,您需要额外安装该模块 外脂保险丝

sudo apt install exfat-fuse

检查:

uname -r
lsb_release -a

如果内核高于 5.19 且 OS 22.04 LTS,则该软件包 外脂保险丝 不是必需的,必须将其删除。

sudo apt remove exfat-fuse

如何在内核模块级别检查 exFAT 支持?

答:

find /lib/modules/ -iname '*exfat*'

如何检查较旧操作系统(Ubuntu 20.10 之前)中的 exFAT 支持?

该软件包负责旧操作系统中的 exFAT 支持 外脂保险丝 对于 FUSE 模块化文件系统:

dpkg -s exfat-fuse

该软件包可以使用以下命令单独安装,该命令将为旧版 Linux 操作系统启用 exFAT 支持:

sudo apt-get 安装 exfat-fuse

问题:哪个软件包包含用于使用 exFAT 的实用程序?

答: exfatprogs

sudo apt install  exfatprogs

exfat-fuse - 用于创建、验证和标记 exFAT 文件系统的工具。

管理扩展文件系统分配表的工具.
此软件包提供了用于创建、验证和标记文件系统的工具。
它包含
- mkfs.exfat 创建 exFAT 文件系统
- fsck.exfat 检查并修复 exFAT 文件系统
-tune.exfat 用于打印和编辑文件系统标签
此软件包中包含的工具是 exfatprogs,
由为 Linux exFAT 提供支持的三星工程师维护。
这些工具的类似但独立的实现,由 exfat-fuse 实现的作者编写,
可在 exfat-utils 包中找到。
主页: https://github.com/exfatprogs/exfatprogs.

问:如何在不格式化磁盘的情况下为其分配新标签?

回答:

sudo sudo exfatlabel /dev/sdd1 "Disk Label" 

问题:exFAT 磁盘标签应该有多长?

答:理论上是15个字符,但为了兼容exFAT 1.0,选择了11个字符的长度,其余的保留。
正确: 0 - 11 个字符

问题:运行 exfatlabel 时,出现以下信息:
“打开失败:/dev/sdd,设备或资源忙”,该怎么办?

答:您需要找出外部驱动器的设备名称:

mount | grep fat

卸载卷(在本例中为 sdd1):

须藤 umount /dev/sdd1

对卷 sdd1 重复“exfatlabel”命令:

sudo exfatlabel /dev/sdd1“Cruizer_8Gb"

从 USB 插座上拔下驱动器,然后重新连接。
该磁盘现已安装有新标签。

谁拥有 exFAT 文件系统的专利?

扩展文件分配表 (exFAT) 文件系统规范由微软开发,并受多项专利保护,其中包括美国专利号 2009/0164440 A1。所有 exFAT 文件系统的实现,包括基于开源代码的实现(例如 Linux、Android、FATfs 等),均需向微软支付专利使用费。这意味着,如果您开发并提交的产品包含任何受 exFAT 专利保护的功能,无论代码来源如何,您都必须在发布产品前支付专利使用费,以遵守微软的许可条款。来源

资料来源:
人 mkfs.exfat.8
https://en.wikipedia.org/wiki/ExFAT

最后编辑:02/06/2025