在macOS High Sierra上创建APFS RAM磁盘

时间:2017-09-14 16:23:19

标签: macos terminal apfs

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

SqlDataAdapter da = new SqlDataAdapter("SELECT Pname FROM product", con);

DataSet ds = new DataSet();
da.Fill(ds);

DataRow row = ds.Tables[0].NewRow();
row["Pname"] = -1;
row["Pname"] = "select Product";
ds.Tables[0].Rows.InsertAt(row, 0);
AutoCompleteStringCollection mycol = new AutoCompleteStringCollection();
DataTableReader dr = ds.Tables[0].CreateDataReader();
while(dr.Read())
{ mycol.Add(dr.GetString(0));
}
comboBox1.AutoCompleteCustomSource = mycol;
con.Close();

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

hdid -nomount ram://<blocksize>

然后安装它:

newfs_hfs /dev/disk2

此过程似乎不适用于APFS。我在High Sierra beta 9. mount命令不输出任何错误,但路径未安装。

在我的情况下,mount -t hfs /dev/disk2 /some/mount/target 命令完成后,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命令似乎工作2秒,不提供任何输出,并且挂载不成功。

有谁能告诉我如何实际制作APFS RAM磁盘s.t.有用? :P

PS:我也试过类似mount -t apfs /dev/disk2 /some/target/path的东西,它将卷装到diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b但是创建了另一个磁盘(在这种情况下是/Volumes/myvolumename),这对我来说很奇怪! / p>

3 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:9)

找到解决方案:

hdid -nomount ram://<blocksize>
diskutil erasedisk <format> <diskname> <output path of previous hdid command>

其中<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要求它由大写字母组成!

干杯!

答案 2 :(得分:0)

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

diskutil eject /Volumes/'ramdisk'