Skip to content
/ ramdisk Public

🐏 Convenience wrapper for managing RAM disks

License

Notifications You must be signed in to change notification settings

mroth/ramdisk

Repository files navigation

ramdisk 🐏

Convenience wrapper for managing RAM disks across different operating systems with a consistent interface.

Usage

Help screen:

$ ramdisk -h
ramdisk 0.1.0 🐏

Usage:
  ramdisk [options] create [<mount-path>]
  ramdisk destroy <device-path>

Options:
  -h -help      Show this screen.
  -v            Verbose output.
  -size=<mb>    Size in megabytes [default: 32].

Creating a new ram disk with a specified size:

$ ramdisk -size=512 create
512MB ramdisk created as /dev/disk5, mounted at /tmp/ramdisk-401987900
To later remove do: `ramdisk destroy /dev/disk5`

Installation

  • πŸ’Ύ Download a precompiled binary.
  • 🍺 Homebrew on macOS: brew install mroth/tap/ramdisk
  • πŸ“¦ Compile via Go toolchain: go install github.com/mroth/ramdisk/cmd/ramdisk@latest

Platform Support

macOS βœ…

Works great and does not require superuser access.

The basic steps followed are:

  • Create an unmounted but attached device in RAM that consists of the appropriate number of device blocks via hdiutil.
  • Format a new uniquely named HFS+ volume on that device via newfs_hfs.
  • Mounts the volume at a uniquely generated path within the /tmp filesystem, via mount.

This normally requires a sequence of arcane commands on the macOS command line which I can never remember, and thus was the primary reason I created this wrapper.

Linux βœ…

Things are quite simple and work great via tmpfs on Linux! (But note that most Linux implementations unfortunately requires sudo access to mount new volumes.)

If you prefer a sudo-less route, most modern Linux on kernel 2.6+ often _already_ has `/dev/shm` mounted, which is memory backed, so you can also just use that without any initialization at all.

Windows ❌

This would be great, unfortunately there is no built-in support at the operating system level at current time. The standard solution seems to be to use ImDisk, but I haven't built support for that into this library yet because well, relying on third-party drivers to be installed on an end user system isn't going to work.

About

🐏 Convenience wrapper for managing RAM disks

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published