diskutil list 显示 /dev/disk2(整块磁盘)和 /dev/disk2s1(其上某一分区),格式化必须作用于带 sN 后缀的分区,否则会清空整个磁盘并破坏分区表。

diskutil list 能看到哪些设备,但为什么 /dev/disk2s1 和 /dev/disk2 不一样
执行 diskutil list 时,输出里会同时出现类似 /dev/disk2(整块物理/逻辑磁盘)和 /dev/disk2s1(某个分区),这是关键区分点。格式化操作对象必须是分区(s1, s2 等后缀),而不是整个磁盘(disk2),否则会清空所有分区表、丢失全部数据且无法直接恢复。
常见误操作:把 diskutil eraseVolume APFS "MyDrive" /dev/disk2 写成 /dev/disk2 而非 /dev/disk2s1 —— 这实际调用的是 eraseDisk 行为,等效于全盘重分区,不是“格式化单一分区”。
- 确认目标是分区(含
sN后缀):用diskutil info /dev/disk2s1查看是否显示Mounted: Yes或File System Personality: APFS - 若目标是空白磁盘且无任何分区,才需先用
diskutil partitionDisk创建分区表 + 分区,再格式化 -
diskutil list中带 * 号的行表示当前挂载点,可辅助定位活跃分区
diskutil eraseVolume 支持哪些文件系统,APFS 和 exFAT 的参数怎么写
diskutil eraseVolume 不接受任意字符串作为文件系统名,必须用它内置的“人格名”(Personality)。比如不能写 NTFS 或 FAT32,而要写 ExFAT(首字母大写)、APFS、JHFS+(即 HFS+)、MS-DOS FAT32(注意空格和大小写)。
典型命令示例:
diskutil eraseVolume APFS "Data" /dev/disk2s1 diskutil eraseVolume ExFAT "Backup" /dev/disk2s2 diskutil eraseVolume "MS-DOS FAT32" "EFI" /dev/disk2s3
- APFS 是 macOS 10.13+ 默认,支持加密、快照、空间共享;但 Windows/Linux 原生不识别,仅能读取(需第三方驱动)
- ExFAT 适合跨平台大文件传输(>4GB),但不支持权限、加密、日志,意外拔出易损坏
- “MS-DOS FAT32” 实际就是 FAT32,命名中空格和大小写必须完全匹配,写成
fat32或msdos会报错Error: -69877: Couldn't open device
格式化前没卸载会报什么错,怎么安全跳过挂载检查
如果目标分区已挂载(如桌面显示为一个卷图标),直接运行 eraseVolume 通常会失败,并提示类似 Error: -69888: Couldn't unmount disk 或 Volume is mounted, use force option。这不是权限问题,而是 macOS 阻止对活跃卷的破坏性操作。
- 推荐做法:先手动卸载
diskutil unmount /dev/disk2s1,再执行格式化 - 若卸载失败(例如进程正在使用该卷),可用
diskutil unmount force /dev/disk2s1强制断开,但需确保没有程序在读写它 - 不建议依赖
eraseVolume自动卸载 —— 它只在部分场景下尝试,失败后仍报错,不如主动控制 - 格式化完成后,系统通常自动重新挂载,无需额外命令
diskutil eraseVolume 和 diskutil apfs deleteContainer 有什么本质区别
当你面对一个 APFS 容器(Container)时,eraseVolume 只能擦除容器内的某个卷(Volume),不能删除容器本身。而一个物理分区(disk2s1)可能被初始化为 APFS 容器,里面又包含多个卷(如 “Macintosh HD”、“Preboot”)。此时若想彻底清空并改用其他文件系统(如 ExFAT),必须先销毁容器结构。
错误做法:diskutil eraseVolume ExFAT "New" /dev/disk2s1 → 报错 Error: -69842: Unable to find the specified volume(因为 disk2s1 是容器,不是普通卷)
- 先查类型:
diskutil list中若某行标注APFS Container,说明它是容器 - 销毁容器:
diskutil apfs deleteContainer /dev/disk2s1,这会把分区还原为“空闲空间”状态 - 再创建新分区:
diskutil eraseVolume ExFAT "New" /dev/disk2s1才能成功 - 注意:
deleteContainer不影响其他分区,但会清除该容器内所有卷及其数据
APFS 容器结构是 macOS 磁盘管理里最常被忽略的一层抽象,跳过它直接格式化,几乎必失败。

















