https://github.com/mroth/ramdisk
:ram: Convenience wrapper for managing RAM disks
https://github.com/mroth/ramdisk
cli linux macos ramdisk
Last synced: 6 months ago
JSON representation
:ram: Convenience wrapper for managing RAM disks
- Host: GitHub
- URL: https://github.com/mroth/ramdisk
- Owner: mroth
- License: mit
- Created: 2019-01-08T01:51:26.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2022-12-19T02:09:09.000Z (over 3 years ago)
- Last Synced: 2025-06-21T08:40:41.647Z (10 months ago)
- Topics: cli, linux, macos, ramdisk
- Language: Go
- Homepage:
- Size: 23.4 KB
- Stars: 48
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ramdisk :ram:
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 []
ramdisk destroy
Options:
-h -help Show this screen.
-v Verbose output.
-size= 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](https://github.com/mroth/ramdisk/releases/).
* 🍺 Homebrew on macOS: `brew install mroth/tap/ramdisk`
* 📦 Compile via Go toolchain: `go install github.com/mroth/ramdisk/cmd/ramdisk@latest`
## Platform Support
### macOS :white_check_mark:
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 :white_check_mark:
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 :x:
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.
[ImDisk]: http://www.ltr-data.se/opencode.html/#ImDisk