繁体   English   中英

在 macOS High Sierra 上创建 APFS RAM 磁盘

[英]Create APFS RAM disk on macOS High Sierra

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

hdid -nomount ram://<blocksize>

返回例如 /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 磁盘它可以工作? :p

PS:我也尝试过类似diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b ,它确实将卷挂载到/Volumes/myvolumename但创建了另一个磁盘(在这种情况下为disk3 ),这对我来说似乎很奇怪!

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

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

sizeInMB更改为您想要的大小。

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

找到了解决办法:

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>的最小值/最大值取决于所选的<format> 此外,不能总是任意选择<diskname> 例如,FAT32 要求它由大写字母组成!

干杯!

此外,需要更正删除/销毁 RAM 磁盘的信息。 ramdisk 将在路径 /Volumes/'ramdisk' 处创建,因此命令是:

diskutil eject /Volumes/'ramdisk'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM