首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在macOS高山上创建APFS RAM磁盘

在macOS高山上创建APFS RAM磁盘
EN

Stack Overflow用户
提问于 2017-09-15 00:23:19
回答 3查看 10.6K关注 0票数 29

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

代码语言:javascript
复制
hdid -nomount ram://<blocksize>

返回例如/dev/disk2,然后我将格式化磁盘,如下所示

代码语言:javascript
复制
newfs_hfs /dev/disk2

然后挂载它:

代码语言:javascript
复制
mount -t hfs /dev/disk2 /some/mount/target

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

在我的示例中,在hdid命令完成后,newfs_apfs -i /dev/disk2会放弃

代码语言:javascript
复制
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磁盘s.t.它能工作吗?:p

PS:我也尝试过像diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b这样的东西,它确实将卷挂载到/Volumes/myvolumename上,但创建了另一个磁盘(本例中是disk3),这对我来说似乎很奇怪!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-18 14:36:12

找到了解决方案:

代码语言:javascript
复制
hdid -nomount ram://<blocksize>
diskutil erasedisk <format> <diskname> <output path of previous hdid command>

其中<format>取自diskutil listFilesystems的“个性”列。是的,这对我来说似乎也很奇怪,你可能需要引用这个参数,例如在指定区分大小写的变体时,但是哦……

<blocksize>为2048 * desired size in megabytes

最后一个命令格式化内存磁盘并将其挂载到/Volumes/<diskname>

似乎是这样的,现在进入diskutil list时,您将看到两个新磁盘,一个是hdid创建的,另一个是合成的。

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

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

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

干杯!

票数 20
EN

Stack Overflow用户

发布于 2017-11-18 00:12:49

@Glyph在给accepted answer的评论中提供了最好的答案,但它应该有自己的答案:

代码语言:javascript
复制
diskutil partitionDisk $(hdiutil attach -nomount ram://$((2048*sizeInMB))) 1 GPTFormat APFS 'Ramdisk' '100%'

sizeInMB更改为所需的大小。

我更新了Glyph的答案,简化了卷名。

票数 31
EN

Stack Overflow用户

发布于 2019-08-03 17:30:33

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

代码语言:javascript
复制
diskutil eject /Volumes/'ramdisk'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46224103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档