Create ram disk mount to specific folder in OSX

11

8

I am using a command like so to create a ram disk:

diskutil erasevolume HFS+ "ram disk" `hdiutil attach -nomount ram://307200`

This works succesfully, and I get a /Volumes/ram disk mounted on my system that I can use that is mounted from /dev/disk5 or some such place.

I would like to be able to control where this goes, to be able to mount to /tmp/my_dir or where-ever. I have tried many combinations of changing parameters in hdiutil and diskutil without success. What is the right way to do this?

Derek

Posted 2012-08-02T15:55:33.567

Reputation: 605

Use a symbolic link to make it appear where you desire. – martineau – 2012-08-02T17:21:33.363

I figured out a way to get this done, but I had to do it in more than one step in a bash script – Derek – 2012-08-02T18:12:40.747

You can accept your own answer here (and share the details with the rest of us in the process ;-). – martineau – 2012-08-03T17:32:11.757

Answers

15

#!/bin/sh
ramfs_size_mb=2100
mount_point=/tmp/rdisk

mkramdisk() {
  ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))
  ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`

  newfs_hfs -v 'ram disk' ${ramdisk_dev}
  mkdir -p ${mount_point}
  mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}

  echo "remove with:"
  echo "umount ${mount_point}"
  echo "diskutil eject ${ramdisk_dev}"
}

Derek

Posted 2012-08-02T15:55:33.567

Reputation: 605

For macOS Sierra it didn't work – Sasho – 2017-07-07T09:49:24.420

The code snippet does work on Sierra. – Rafa – 2018-01-04T15:56:12.717

1One thing to be aware of is that hdiutil right-pads with spaces its output to a length of 54, so if you quote ${ramdisk_dev}, you'll run into issues. – zneak – 2018-02-23T05:26:29.917