查看、分区、格式化、挂载和校验 macOS 磁盘与 APFS 卷。
diskutil 通过 Disk Arbitration 操作本地磁盘,既能查询(list、info、activity、listFilesystems),也能修改分区表、文件系统和挂载状态。磁盘标识分两层:disk2 是整块盘,disk2s1 是其中的分区或卷;擦除整盘和擦除单个卷是完全不同的破坏范围。Linux 没有同名工具,对应能力分散在 lsblk、parted、mkfs 等命令中。
APFS 使用容器(container)管理多个卷,容器内的卷共享空闲空间。diskutil apfs list 查看容器与卷的关系,diskutil apfs addVolume disk3 APFS "Work" 在现有容器中新增卷,diskutil apfs deleteVolume disk3s5 只删除指定卷。eraseVolume 只重建一个分区上的文件系统,eraseDisk 会重建整个分区表。
文件系统名称用 diskutil listFilesystems 查询:APFS、APFSX(区分大小写)、JHFS+、ExFAT、MS-DOS FAT32 等。分区方案常用 GPT,老式 Mac 启动盘才用 APM,跨 Windows 老设备可能用 MBR。
影响范围:
eraseDisk会清除目标整块盘上的所有分区、卷和本地快照;partitionDisk同样删除盘上全部卷;eraseVolume只清除指定分区,但仍不可逆。误操作会影响启动盘、Boot Camp 和外接备份盘。 先备份:执行前确认目标盘不是启动盘,拔掉无关外接盘,把重要数据复制到另一块盘并验证可读。 如何回滚:没有撤销。只能从 Time Machine 或其他备份恢复;没有备份时立即停止写入并寻求专业数据恢复,SSD 开启 TRIM 后成功率更低。
# 先列出所有磁盘,核对整盘与分区的标识和容量
% diskutil list
# 查看目标盘的型号、协议、挂载点与所有权状态
% diskutil info disk2
# 查看 APFS 容器、卷、角色与共享空间
% diskutil apfs list
# 安全卸载整块盘的所有卷,再物理拔出
% diskutil unmountDisk /dev/disk2
# 卸载后弹出外接盘
% diskutil eject /dev/disk2
# 在现有 APFS 容器中新增一个卷(不删除其他卷)
% sudo diskutil apfs addVolume disk3 APFS "Work"
# 擦除整块盘为 APFS/GPT;执行前务必再次 diskutil list 核对 disk2
% sudo diskutil eraseDisk APFS "Backup" GPT /dev/disk2
# 把整盘分成两个分区:50% APFS,剩余空间给 ExFAT
% sudo diskutil partitionDisk /dev/disk2 2 GPT APFS "Data" 50% ExFAT "Share" R
disk2s1 传给 eraseDisk、或把整盘 disk2 传给只接受卷的动词,都会报错或产生意外范围。执行前用 diskutil list 和 diskutil info 双重确认。disk2 今天可能是 disk4。不要保存 disk 编号到脚本,必须每次重新枚举。eraseDisk/partitionDisk 不弹确认,命令回车即执行。先卸载目标盘(diskutil unmountDisk),确认没有进程占用,并再次核对容量和型号。deleteContainer 删除容器内所有卷;eraseDisk 会连同 APFS 容器和快照一起销毁。只想清一个卷时用 eraseVolume。Resource busy 时,检查当前目录是否在卷内、是否有打开的文件、Finder/Spotlight 是否在索引。用 lsof | grep /Volumes/盘名 定位,force 只作为最后手段。diskutil info 查看 Owners,用 diskutil enableOwnership 修正。hdiutil — 创建和挂载磁盘镜像。mount — 查看和手动挂载文件系统。umount — 卸载卷并处理占用。diskpart — Windows 的分区工具对照。chkdsk — Windows 文件系统检查对照。df — 查看挂载后的空间使用。合上页面,先回答,再展开对照。
disk2、disk2s1 和 APFS 容器三者是什么关系?eraseDisk、eraseVolume、deleteVolume 的破坏范围分别是什么?disk2 是整块盘,disk2s1 是分区/卷,APFS 容器位于分区之上并可包含多个卷。eraseDisk 清整盘分区表,eraseVolume 清一个分区,deleteVolume 只删指定 APFS 卷。diskutil list 重新确认。
小程序版
微信扫码,随时查命令