在 Linux 上使用新的 USB 驱动器或 SD 卡之前,可能需要对其进行分区和格式化。大多数可移动驱动器出厂时已预格式化为 FAT32 并可直接使用,但在切换文件系统类型、修复损坏的驱动器或安全擦除数据时,您可能需要重新格式化。

本指南介绍如何使用 parted 和 mkfs 命令行工具在 Linux 上格式化 USB 驱动器或 SD 卡。

快速参考

如需打印的快速参考,请参阅 parted 速查表。

任务命令
识别设备lsblk
卸载设备sudo umount /dev/sdb1
创建 MBR 分区表sudo parted /dev/sdb --script -- mklabel msdos
创建 GPT 分区表sudo parted /dev/sdb --script -- mklabel gpt
创建分区(整个磁盘)sudo parted /dev/sdb --script -- mkpart primary fat32 1MiB 100%
格式化为 FAT32sudo mkfs.vfat -F32 /dev/sdb1
格式化为 exFATsudo mkfs.exfat /dev/sdb1
格式化为 EXT4sudo mkfs.ext4 -F /dev/sdb1
格式化为 NTFSsudo mkfs.ntfs -f /dev/sdb1
验证分区表sudo parted /dev/sdb --script print

警告:格式化会擦除驱动器上的所有现有数据。如果 USB 驱动器或 SD 卡上有重要文件,请在继续之前进行备份。

先决条件

parted 工具在大多数 Linux 发行版中已预安装。通过运行以下命令验证其是否可用:

终端

parted --version

如果未安装 parted,请使用您的发行版包管理器进行安装。

在 Ubuntu、Debian 及其衍生版上:

终端

sudo apt update && sudo apt install parted

在 Fedora、RHEL 及其衍生版上:

终端

sudo dnf install parted

识别设备

将 USB 驱动器或 SD 卡插入您的 Linux 机器,并使用 lsblk 命令识别设备名称:

终端

lsblk

输出列出了所有可用的块设备:

输出

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot/efi├─sda2 8:2 0 237G 0 part /└─sda3 8:3 0 1G 0 part [SWAP]sdb 8:16 1 14.4G 0 disk└─sdb1 8:17 1 14.4G 0 part /media/data

在此示例中,USB 设备为 /dev/sdb。设备名称因您的系统和连接的驱动器数量而异。如果磁盘、分区和文件系统之间的关系不清楚,我们关于块设备、分区和文件系统的指南涵盖了下面使用的术语。

在运行任何格式化命令之前,请在 lsblk 输出中通过匹配其大小和型号来确认设备。

您也可以使用 dmesg 命令查找设备名称。插入驱动器后,运行:

终端

dmesg | tail -10

输出显示内核分配的设备名称:

输出

[+0.000232] sd 1:0:0:0: [sdb] 30218842 512-byte logical blocks: (15.5 GB/14.4 GiB)

警告:在继续之前再次检查设备名称。格式化错误的设备(例如您的系统磁盘)将导致数据丢失。

卸载设备

如果驱动器当前已挂载,必须在格式化之前将其卸载。格式化已挂载的设备可能会损坏数据。

检查设备上是否有任何分区已挂载:

终端

mount | grep sdb

如果输出显示挂载点,请将其卸载:

终端

sudo umount /dev/sdb1

如果设备有多个分区,请卸载每个分区。

选择文件系统

在格式化之前,选择适合您用例的文件系统:

文件系统最大文件大小跨平台最佳用途
FAT324 GBLinux、macOS、Windows小型 USB 驱动器、启动介质、最大兼容性
exFAT16 EBLinux、macOS、Windows大型 USB 驱动器、大于 4 GB 的文件、跨平台使用
EXT416 TB仅限 Linux仅限 Linux 的驱动器、Linux 系统的外部存储
NTFS16 TBWindows、Linux(读写)主要与 Windows 共享的驱动器

使用 FAT32 格式化

FAT32 是最广泛兼容的文件系统。对于需要在所有操作系统上工作的驱动器,请使用它。请注意,FAT32 有 4 GB 的文件大小限制;如果需要存储大于 4 GB 的文件,请使用 exFAT。

创建 MBR 分区表:

终端

sudo parted /dev/sdb --script -- mklabel msdos

创建一个使用整个磁盘的 FAT32 分区:

终端

sudo parted /dev/sdb --script -- mkpart primary fat32 1MiB 100%

将分区格式化为 FAT32:

终端

sudo mkfs.vfat -F32 /dev/sdb1

验证分区表:

终端

sudo parted /dev/sdb --script print

输出

Model: Kingston DataTraveler 3.0 (scsi)Disk /dev/sdb: 15.5GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags 1 1049kB 15.5GB 15.5GB primary fat32 lba

使用 exFAT 格式化

exFAT 是推荐用于需要在 Linux、macOS 和 Windows 上工作且没有 FAT32 4 GB 文件大小限制的 USB 驱动器和 SD 卡的文件系统。

首先,如果尚未可用,请安装 exFAT 工具:

在 Ubuntu、Debian 及其衍生版上:

终端

sudo apt install exfatprogs

在 Fedora、RHEL 及其衍生版上:

终端

sudo dnf install exfatprogs

创建 MBR 分区表:

终端

sudo parted /dev/sdb --script -- mklabel msdos

创建一个使用整个磁盘的分区。ntfs 提示将 MBR 分区类型设置为 0x07,exFAT 也使用此类型以与 Windows 兼容。它不会创建 NTFS 文件系统:

终端

sudo parted /dev/sdb --script -- mkpart primary ntfs 1MiB 100%

将分区格式化为 exFAT:

终端

sudo mkfs.exfat /dev/sdb1

使用 EXT4 格式化

如果驱动器仅在 Linux 系统上使用,请使用 EXT4。EXT4 支持 Linux 文件权限、大文件和日志记录。

创建 GPT 分区表:

终端

sudo parted /dev/sdb --script -- mklabel gpt

创建一个使用整个磁盘的 EXT4 分区:

终端

sudo parted /dev/sdb --script -- mkpart primary ext4 0% 100%

将分区格式化为 EXT4:

终端

sudo mkfs.ext4 -F /dev/sdb1

验证分区表:

终端

sudo parted /dev/sdb --script print

输出

Model: Kingston DataTraveler 3.0 (scsi)Disk /dev/sdb: 15.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number Start End Size File system Name Flags 1 1049kB 15.5GB 15.5GB ext4 primary

使用 NTFS 格式化

对于主要与 Windows 系统共享的驱动器,请使用 NTFS。Linux 可以通过内核中的 ntfs3 驱动程序(在 5.15 内核版本中引入)或 ntfs-3g 用户空间驱动程序读写 NTFS。哪个驱动程序可用和使用取决于您的发行版和内核配置。创建文件系统是单独的事项,因为 mkfs.ntfs 来自 NTFS-3G 用户空间工具,这些工具默认并不总是存在。

如果需要,请安装 NTFS 工具:

在 Ubuntu、Debian 及其衍生版上:

终端

sudo apt install ntfs-3g

在 Fedora、RHEL 及其衍生版上:

在 RHEL 及其衍生版上,在安装 ntfsprogs 之前启用 EPEL。

终端

sudo dnf install ntfsprogs

创建 MBR 分区表:

终端

sudo parted /dev/sdb --script -- mklabel msdos

创建一个使用整个磁盘的分区:

终端

sudo parted /dev/sdb --script -- mkpart primary ntfs 1MiB 100%

将分区格式化为 NTFS。-f 标志执行快速格式化:

终端

sudo mkfs.ntfs -f /dev/sdb1

使用 GNOME 磁盘工具格式化

如果您更喜欢图形化工具,GNOME Disks 是最简单的选项,并且预装在 Ubuntu、Fedora 以及大多数基于 GNOME 的桌面环境中。如果缺少该工具,请在 Ubuntu 和 Debian 上使用 sudo apt install gnome-disk-utility 安装,或在 Fedora 和 RHEL 上使用 sudo dnf install gnome-disk-utility 安装。

打开 Disks 应用程序,并从左侧列表中选择您的 USB 驱动器或 SD 卡。通过检查其大小和型号来确认您选择了正确的设备,然后点击停止(方形)按钮以卸载任何已挂载的分区。

要格式化单个分区,请选择它并打开分区菜单(齿轮图标),然后选择 Format Partition(格式化分区)。输入卷名,选择文件系统(FAT 用于跨平台使用,Ext4 仅用于 Linux,或 NTFS 用于 Windows),然后点击 Format。若要擦除整个驱动器并重建分区表,请打开驱动器菜单(右上角的三点图标)并选择 Format Disk(格式化磁盘)。

GNOME Disks 格式化卷对话框,文件系统类型设置为 FAT 用于跨平台使用

使用 GParted 格式化

GParted 是另一种常见的图形化选项,当您需要更改分区布局而不仅仅是格式化现有分区时,它是更好的选择。在 Ubuntu 和 Debian 上使用 sudo apt install gparted 安装,或在 Fedora 上使用 sudo dnf install gparted 安装。在 RHEL 8/9 及其衍生版本上,运行 dnf 命令之前请启用 EPEL。

启动 GParted,并从右上角的设备下拉菜单中选择 USB 驱动器或 SD 卡。继续操作前请检查大小和设备路径,因为 GParted 会在它找到的第一个磁盘上打开,这通常是您的系统驱动器。如果设备上的某个分区已挂载,右键点击它并选择 Unmount(卸载)。

要从干净的驱动器开始,打开 Device(设备)菜单并选择 Create Partition Table(创建分区表),然后为广泛的兼容性选择 msdos,或为大于 2 TB 的驱动器选择 gpt。创建新的分区表会删除驱动器上所有现有的分区。在该对话框中点击 Apply(应用)以立即写入新的分区表。

然后右键点击未分配的空间,选择 New(新建),从 File system(文件系统)下拉菜单中选择文件系统,然后点击 Add(添加)。创建和格式化新分区已排队,因此当您点击绿色对勾以应用它们时,这些操作将运行。

安全擦除驱动器(可选)

如果您要将驱动器赠送他人或处理掉它,可以覆盖驱动器以减少恢复旧文件的可能性。此步骤对于正常的重新格式化并非必要。

警告:覆盖 USB 驱动器和 SD 卡并不能保证安全擦除。磨损均衡和重映射的块可能会在闪存中留下 dd 无法覆盖的旧数据。不要仅依赖零填充来清理包含敏感数据的闪存存储。

使用 dd 用零覆盖整个驱动器:

终端

sudo dd if=/dev/zero of=/dev/sdb bs=4096 status=progress

该过程所需的时间取决于驱动器的大小。完成后,dd 会打印“No space left on device”(设备上没有空间)消息,这是预期的:

输出

15455776768 bytes (15 GB, 14 GiB) copied, 780 s, 19.8 MB/sdd: error writing '/dev/sdb': No space left on device

擦除后,按照上述说明继续创建新的分区表并进行格式化。

故障排除

格式化时出现“Device or resource busy”(设备或资源忙)
设备仍然已挂载。在格式化之前,使用 sudo umount /dev/sdb* 卸载设备上的所有分区。

“Permission denied”(权限被拒绝)
格式化需要 root 权限。请确保在所有 parted、mkfs 和 dd 命令中使用 sudo。

插入后未检测到驱动器
尝试不同的 USB 端口。运行 dmesg | tail -20 检查内核是否识别了该设备。如果没有输出,驱动器或端口可能已损坏。

“Unable to satisfy all constraints on the partition”(无法满足分区的所有约束)
mkpart 命令中的对齐或大小值存在冲突。使用 1MiB 作为起始值,100% 作为结束值,让 parted 自动处理对齐。

格式化的驱动器为只读
一些 SD 卡侧面有一个物理写保护开关。请检查开关是否处于解锁位置。对于 USB 驱动器,检查 dmesg 输出以查看写保护消息。

FAT32 不允许大于 4 GB 的文件
FAT32 有 4 GB 的文件大小限制。改为将驱动器格式化为 exFAT,它支持几乎任何大小的文件,并且与 Linux、macOS 和 Windows 兼容。

常见问题解答 (FAQ)

我应该为 USB 驱动器使用哪种文件系统?
如果您需要大于 4 GB 文件的跨平台兼容性,请使用 exFAT。如需与旧设备实现最大兼容性,请使用 FAT32。如果驱动器仅用于 Linux 系统,请使用 EXT4。

我需要创建分区表,还是可以直接格式化原始设备?
从技术上讲,您可以没有分区表而直接格式化原始设备(sudo mkfs.ext4 /dev/sdb),但建议先创建分区表。某些操作系统和设备无法识别没有分区表的驱动器。

MBR 和 GPT 分区表有什么区别?
MBR(主引导记录)是旧标准,支持最多 4 个主分区,适用于 2 TB 及以下的驱动器。GPT(GUID 分区表)支持更多分区以及大于 2 TB 的驱动器。当您需要与旧设备和固件实现广泛兼容性时,请使用 MBR。对于现代系统和较大驱动器,请使用 GPT。parted 和 fdisk 命令都可以创建这两种类型。

如何使用图形工具格式化驱动器?
如需快速格式化单个分区,请使用 GNOME Disks;如果还需要更改分区布局,请使用 GParted。上述部分均涵盖了这两个工具。

格式化后我可以恢复数据吗?
标准格式化仅删除文件系统元数据,而非实际数据。testdisk 或 photorec 等工具可能恢复文件。使用 dd 覆盖会降低可恢复性,但在基于闪存的介质(USB 驱动器、SD 卡、SSD)上,由于磨损均衡的原因,安全擦除并不总是能保证。