在 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% |
| 格式化为 FAT32 | sudo mkfs.vfat -F32 /dev/sdb1 |
| 格式化为 exFAT | sudo mkfs.exfat /dev/sdb1 |
| 格式化为 EXT4 | sudo mkfs.ext4 -F /dev/sdb1 |
| 格式化为 NTFS | sudo 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如果设备有多个分区,请卸载每个分区。
选择文件系统
在格式化之前,选择适合您用例的文件系统:
| 文件系统 | 最大文件大小 | 跨平台 | 最佳用途 |
|---|---|---|---|
| FAT32 | 4 GB | Linux、macOS、Windows | 小型 USB 驱动器、启动介质、最大兼容性 |
| exFAT | 16 EB | Linux、macOS、Windows | 大型 USB 驱动器、大于 4 GB 的文件、跨平台使用 |
| EXT4 | 16 TB | 仅限 Linux | 仅限 Linux 的驱动器、Linux 系统的外部存储 |
| NTFS | 16 TB | Windows、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(格式化磁盘)。

使用 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)上,由于磨损均衡的原因,安全擦除并不总是能保证。