在macOS High Sierra上创建APFS RAM磁盘

Nam*_*912 20 macos terminal apfs

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

hdid -nomount ram://<blocksize>
Run Code Online (Sandbox Code Playgroud)

返回例如/ dev/disk2然后我会格式化磁盘,比方说

newfs_hfs /dev/disk2
Run Code Online (Sandbox Code Playgroud)

然后安装它:

mount -t hfs /dev/disk2 /some/mount/target
Run Code Online (Sandbox Code Playgroud)

此过程似乎不适用于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.
Run Code Online (Sandbox Code Playgroud)

当我然后输入mount -t apfs /dev/disk2 /some/target/path然后mount命令似乎工作2秒,不提供任何输出,并且挂载不成功.

任何人都可以告诉我如何实际制作APFS RAM磁盘吗?:p

PS:我也尝试了类似的方法diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b将卷装入/Volumes/myvolumename但创建了另一个磁盘(disk3在这种情况下),这对我来说似乎很奇怪!

unr*_*ons 20

@Glyph在对已接受答案的评论中提供了最佳答案,但它应该得到自己的答案:

diskutil partitionDisk $(hdiutil attach -nomount ram://2048000) 1 GPTFormat APFS 'ramdisk' '100%'
Run Code Online (Sandbox Code Playgroud)

我已经更新了Glyph的答案,以简化音量名称.


Nam*_*912 18

找到了解决方案:

hdid -nomount ram://<blocksize>
diskutil erasedisk <format> <diskname> <output path of previous hdid command>
Run Code Online (Sandbox Code Playgroud)

其中<format>取自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>取决于所选<format>.而且,<diskname>不能总是任意选择.示例性地,FAT32要求它由大写字母组成!

干杯!

  • `diskutil partitionDisk $(hdiutil attach -nomount ram:// 2097152)1 GPTFormat APFS'APFS RAM Disk''100%'`虽然为我工作:) (9认同)