通常使用以下命令创建RAM磁盘
hdid -nomount ram://<blocksize>返回例如/dev/disk2,然后我将格式化磁盘,如下所示
newfs_hfs /dev/disk2然后挂载它:
mount -t hfs /dev/disk2 /some/mount/target此过程似乎不适用于APFS。我使用的是High Sierra beta9。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磁盘s.t.它能工作吗?:p
PS:我也尝试过像diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b这样的东西,它确实将卷挂载到/Volumes/myvolumename上,但创建了另一个磁盘(本例中是disk3),这对我来说似乎很奇怪!
发布于 2017-09-18 14:36:12
找到了解决方案:
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要求它由大写字母组成!
干杯!
发布于 2017-11-18 00:12:49
@Glyph在给accepted answer的评论中提供了最好的答案,但它应该有自己的答案:
diskutil partitionDisk $(hdiutil attach -nomount ram://$((2048*sizeInMB))) 1 GPTFormat APFS 'Ramdisk' '100%'将sizeInMB更改为所需的大小。
我更新了Glyph的答案,简化了卷名。
发布于 2019-08-03 17:30:33
此外,还需要更正删除/销毁RAM磁盘的信息。将在路径/Volumes/' ramdisk‘下创建ramdisk,因此命令为:
diskutil eject /Volumes/'ramdisk'https://stackoverflow.com/questions/46224103
复制相似问题