12

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?

3
  • Use a symbolic link to make it appear where you desire.
    – martineau
    Commented Aug 2, 2012 at 17:21
  • 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
    Commented Aug 2, 2012 at 18:12
  • You can accept your own answer here (and share the details with the rest of us in the process ;-).
    – martineau
    Commented Aug 3, 2012 at 17:32

1 Answer 1

18
#!/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}"
}
3
  • For macOS Sierra it didn't work
    – Sasho
    Commented Jul 7, 2017 at 9:49
  • 1
    The code snippet does work on Sierra. Commented Jan 4, 2018 at 15:56
  • 1
    One 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
    Commented Feb 23, 2018 at 5:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .