在 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'
通常使用以下命令创建 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'