笔者在VMWare虚拟机中安装了一个MacOS 10.15系统,VMware虚拟磁盘为160G,macOS中显示171.45G。随着使用时间的增长,虚拟磁盘占用的Windows的磁盘空间越来越大,导致使用挂起功能时,Windows的磁盘放不下了,但MacOS中的实际使用空间只有三分之一左右。于是就想重新建一个小点的虚拟磁盘,比如80G,然后把整个系统克隆过去。

这是磁盘工具中看到的磁盘信息:

一、新增磁盘
关闭虚拟机后,添加一块80G的新虚拟磁盘,再启动系统。

系统发现了新的磁盘,但是由于没有初始化,所以弹出提示:

初始化它,就可以在磁盘工具中看到它了:

分区:


格式选择与系统一致的APFS格式。
二、恢复
1. 使用磁盘工具恢复
尝试使用磁盘工具中的"恢复"功能,看能不能实现。
选中新磁盘,再点工具栏中的"恢复"按钮,弹出恢复对话框,"恢复来源"中系统会自动填写系统所在磁盘,最后点对话框中的"恢复"按钮。

很遗憾恢复失败:

看来MacOS 10.15中磁盘工具的恢复只能恢复HFS或者UFS格式的文件系统,而MacOS使用的APFS格式。
只能通过命令行的方式来操作了。
2. 使用命令行恢复
首先通过diskutil list列出磁盘列表:
bash
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *85.9 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk3 85.7 GB disk0s2
/dev/disk1 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *171.8 GB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_APFS Container disk2 171.5 GB disk1s2
/dev/disk2 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +171.5 GB disk2
Physical Store disk1s2
1: APFS Volume Data 42.9 GB disk2s1
2: APFS Volume Preboot 83.8 MB disk2s2
3: APFS Volume Recovery 529.9 MB disk2s3
4: APFS Volume VM 1.1 MB disk2s4
5: APFS Volume Root 11.2 GB disk2s5
/dev/disk3 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +85.7 GB disk3
Physical Store disk0s2
1: APFS Volume 未命名 712.7 KB disk3s1
可以看到/dev/disk0和/dev/disk1两个物理磁盘,/dev/disk0是新磁盘,/dev/disk1是原来的系统磁盘,/dev/disk2是/dev/disk1的容器磁盘,/dev/disk3是/dev/disk0的容器磁盘。
现在需要把/dev/disk2的内容克隆到/dev/disk3中,注意只能是克隆容器磁盘,不能克隆物理磁盘,因为两个物理磁盘的容量不相等,而且使用的命令专门设计用于在容器级别工作,它会智能地处理 APFS 容器的特殊结构。
使用下面的命令就可以克隆磁盘内容了:
bash
sudo asr restore --source /dev/disk2 --target /dev/disk3 --erase
输入命令后要求输入密码,再确认是否要清除目标磁盘的内容,等待完成操作。
bash
$ sudo asr restore --source /dev/disk2 --target /dev/disk3 --erase
Password:
Validating target...done
Validating source...done
Erase contents of /dev/disk3 ()? [ny]: y
Replicating ....10....20....30....40....50....60....70....80....90....100
Replicating ....10....20....30....40....50....60....70....80....90....100
Restored target device is /dev/disk3s1.
此时看虚拟磁盘并没立即写过去一样,我刷新了N次,都是这样:

关闭MacOS系统,才会真正把数据写过去:

三、移出老磁盘,重启系统

此时可能会出现这样的提示,可以先不管它,可以正常启动。

可以先将所有硬盘移除,再重新添加,也可以使用后面第四步修改启动顺序。强烈建议先将所有硬盘移除,再重新添加,让启动磁盘始终在SATA 0:0的位置。

启动系统后,磁盘工具查看情况:

再看存储空间的使用情况,与之前的比较文稿与应用程序完全一致,系统与其他可能因为临时数据有点小差异:

使用完全正常。
四、修改启动顺序
在VMWare的"虚拟机"菜单执行"电源"/"打开电源时进入固件":

可以看到启动设备的顺序,这里执行"Enter setup"进入设置,选择"Configure boot options":

再选择里面的"Change boot order":

把SATA硬盘驱动(2.0)放在最前面:

然后"Commit changes and exit",重启即可。
如果本文对你有帮助,欢迎点赞收藏!