#!/usr/bin/env bash -x # Creates RAM disk. # # SYNOPSIS # create_ramdisk [size [label]] # # OPTIONS # size: RAM disk size in megabytes. Default: 1024 # label: RAM disk volume label. Default: UUID # # RETURN VALUE # Created RAM disk device path. create_ramdisk() { # Digits after `ram://` denote amount of 512B sectors. local sectors=$((${1:-1024} * 1024 * 1024 / 512)) local ramdisk=$(hdiutil attach -nomount ram://$sectors) diskutil eraseVolume "HFS+" "${2:-$(uuidgen)}" "$ramdisk" echo "$ramdisk" } mount_ramdisk() { local ramdisk="$1" local mount_point="$2" diskutil unmount "$ramdisk" mkdir -p "$mount_point" mount -t hfs -o noatime "$ramdisk" "$mount_point" chflags hidden "$mount_point" } start_mongo() { sudo ifconfig lo0 alias 127.0.0.2 up sudo mongod --bind_ip "127.0.0.2" --dbpath "$1" } main() { local mount_point="/Users/${USER}/mongodb-ramdisk" local ramdisk=$(create_ramdisk 256) mount_ramdisk "$ramdisk" "$mount_point" start_mongo "$mount_point" } main