web-dev-qa-db-ja.com

macOS High SierraでAPFS RAMディスクを作成

通常、RAMディスクを作成すると、次のコマンドで動作します

hdid -nomount ram://<blocksize>

を返します/ dev/disk2次に、ディスクをフォーマットします。

newfs_hfs /dev/disk2

続いてマウントします:

mount -t hfs /dev/disk2 /some/mount/target

この手順はAPFSでは機能しないようです。 High Sierraベータ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 disk s.t.を実際に作成する方法を教えてもらえますか?:p

PS:ボリュームをdiskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0bにマウントする/Volumes/myvolumenameのようなものも試しましたが、さらに別のディスク(この場合はdisk3)を作成します。

14
NameZero912

ソリューションを見つけました:

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と入力すると、two new disks、hdidが作成され、合成されたものが表示されます。

destroy the RAM disk again、call diskutil eject <output path of previous hdid command>、例:diskutil eject /dev/disk2

これによりすべての作業が行われ、/Volumes/<diskname>パスがアンマウントされ、2つのディスクが破壊され、メモリが解放されます。

<blocksize>の最小値/最大値は、選択した<format>に依存することに注意してください。また、<diskname>は常に任意に選択できるとは限りません。例として、FAT32では大文字で構成する必要があります!

乾杯!

11
NameZero912

@Glyphは 受け入れられた回答 へのコメントでベストアンサーを提供しましたが、独自の回答に値します。

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

ボリューム名を少し簡略化するためにGlyphの回答を更新しました。

15

また、RAMディスクを修正する必要があります。ramdiskはパス/ Volumes/'ramdisk'に作成されるため、コマンドは次のようになります。

diskutil eject /Volumes/'ramdisk'
0
sw.smayer97