在 macOS High Sierra 上创建 APFS RAM 磁盘

Create APFS RAM disk on macOS High Sierra

通常使用以下命令创建 RAM 磁盘

hdid -nomount ram://<blocksize>

Returns 例如/dev/disk2 然后我会格式化磁盘,比如

newfs_hfs /dev/disk2

接着安装它:

mount -t hfs /dev/disk2 /some/mount/target

此过程似乎不适用于 APFS。我在 High Sierra beta 9 上。mount 命令没有输出任何错误,但是路径没有挂载。

在我的例子中,在 hdid 命令完成后,newfs_apfs -i /dev/disk2 产生

nx_kernel_mount:1364: checkpoint search: largest xid 1, best xid 1 @ 1
nx_kernel_mount:1422: sanity checking all nx state... please be patient.
spaceman_metazone_init:278: no metazone for device 0, of size 209715200 bytes, block_size 4096
apfs_newfs:18075: FS will NOT be encrypted.

然后当我输入 mount -t apfs /dev/disk2 /some/target/path 时,挂载命令似乎工作了 2 秒,没有给出任何输出并且挂载没有成功。

谁能告诉我如何实际制作 APFS RAM 磁盘 s.t。有用? :p

PS:我也尝试过类似 diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b 的方法,它确实将卷挂载到 /Volumes/myvolumename 但又创建了另一个磁盘(在本例中为 disk3)我觉得很奇怪!

找到解决方案:

hdid -nomount ram://<blocksize>
diskutil erasedisk <format> <diskname> <output path of previous hdid command>

其中 <format> 取自 "Personality" 列的 diskutil listFilesystems。是的,您可能必须引用此参数对我来说也很奇怪,例如在指定区分大小写的变体时,但是哦...

<blocksize> 是 2048 * desired size in megabytes

最后一条命令格式化RAM盘并挂载到/Volumes/<diskname>

现在输入 diskutil list 时,您似乎会看到 两个 个新磁盘,一个 hdid 创建的,以及一个合成的一.

要再次销毁 RAM 盘,请调用diskutil eject <output path of previous hdid command>,例如diskutil eject /dev/disk2

这将为您完成所有工作,卸载 /Volumes/<diskname> 路径并销毁两个磁盘,释放您的内存。

请记住,<blocksize> 的 minimum/maximum 值取决于所选的 <format>。此外,<diskname> 不能总是任意选择。例如,FAT32要求它由大写字母组成!

干杯!

@Glyph 在对 的评论中提供了最佳答案,但它值得拥有自己的答案:

diskutil partitionDisk $(hdiutil attach -nomount ram://$((2048*sizeInMB))) 1 GPTFormat APFS 'Ramdisk' '100%'

sizeInMB 更改为您想要的尺寸。

我更新了 Glyph 的答案以稍微简化卷名。

此外,delete/destroy RAM 磁盘的信息需要更正。 ramdisk 将创建在路径/Volumes/'ramdisk',所以命令是:

diskutil eject /Volumes/'ramdisk'