Blog: add ramdisk guide

This commit is contained in:
Akemi Izuko 2023-12-29 18:46:04 -07:00
parent 0cb4ff33dd
commit b4bf3b6372
Signed by: akemi
GPG key ID: 8DE0764E1809E9FC
3 changed files with 112 additions and 2 deletions

View file

@ -0,0 +1,109 @@
---
title: 'Use a Ramdisk'
description: 'Why you should use ramdisks'
pubDate: 'Dec 29 2023'
heroImage: '/blog-placeholder-5.jpg'
---
# RAM Disks
Traditionally, storage is placed on an SSD or HDD, both of which are are types
of non-volatile storage. This means if your computer loses power or restarts,
the data will persist on the disk. In most cases, this is desired.
A RAM disk is a type of storage recorded in in RAM. The key difference is that
RAM is volatile storage.
Let's consider the pros and cons of using RAM for storage:
Pros:
- Very fast, faster than the best NVMe drives
- True uniform access
Cons:
- Limited to the size of your RAM, typically smaller than an SSD or HDD
- All data is lost on powerless and reboot
In short, if you have RAM to spare and aren't worried about losing power, a RAM
disk is far more performant. It's especially noticeable when you're doing a huge
amount of small reads/writes. In fact, the Chromium project [recommends using a
RAM disk](https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md#using-tmpfs)
to build the browser.
## Downloads Folder in RAM
Aside from the speedup, I personally use the RAM disk for its psychological
benefits. Knowing the storage is volatile motivates me to clean it up.
One example is when making changes to a git repository, I'll often clone the
repository onto a RAM disk. This reminds me to make *very* frequent commits,
since I'm constantly a bit concerned my work will be wiped via power outage or
crash. But the outcome is good atomic-committing in git.
I also put my Downloads folder in the RAM. For one thing, partial downloads from
Chromium and Firefox don't matter, since neither can pick up where they left
off. This you'll have to restart an interrupted download even if you are using
non-volatile storage. I've also found my Downloads folder gets really messy if I
don't do this. Wiping it on reboot reminds me to move files into their proper
folders.
The following command will symlink your Downloads folder to the RAM disk. Most
programs will never notice the difference:
```bash
rmdir ~/Downloads
ln -s /dev/shm/ ~/Downloads
```
## Setting Up a RAM Disk
### Shared Memory
If you're on Linux, you already have a RAM disk! The path `/dev/shm` is found on
all Linux system. It stands for "shared memory" and is indented as a space for
users and programs to "share" data. Very few programs and users actually do
this, but it means that directory is accessible for writing for all users
including you.
To verify a directory is mounted on a RAM disk, use the following command:
```bash
df -h .
# OR if you know the path
df -h /dev/shm
```
We care about what the `Filesystem` columns reports. It should be "tmpfs",
mains "temporary file system". For example mine looks like:
```
Filesystem Size Used Avail Use% Mounted on
tmpfs 16G 4.0G 12G 26% /dev/shm
```
We can also see the size of the RAM disk. In this case it's 16GB. By default,
Linux mounts half the system RAM for `/dev/shm`. This memory is only used if the
system needs to use it, so initially it takes up 0GB. The "size" is the maximum
amount of memory the file system can take up.
### Mount a RAM Disk
The particularly adventurous can also mount their own RAM disk. The `mount`
command bundled with Linux can do this. You will need root privileges.
The following mounts a 1GB RAM disk onto the directory `/home/emiliko/mnt`:
```bash
sudo mount -t tmpfs -o uid=1000,size=1g tmpfs /home/emiliko/mnt
```
## Advanced Notes
While in this article I implied all temporary file systems are RAM disks and
vise versa, neither is technically true. It's possible to run `tmpfs` on
non-volatile storage, and many servers choose to do this. Similarly, a RAM disk
can be used for a normal file system, like btrfs.
However, for personal use, you'll never want to disconnect the terms `tmpfs` and
RAM disk. Using one without the other doesn't make any sense on a personal
computer and is unusual on a shared computer too.

View file

@ -2,6 +2,7 @@
title: 'SSH Quick Start Guide'
description: 'The fastest way to get all the SSH essentials out of the way'
updateDate: 'December 26 2023'
heroImage: '/ssh-logo.png'
---
# SSH

View file

@ -1,8 +1,8 @@
---
title: 'Systemd Timers'
description: "Replacing Crontabs with Systemd's timer mechanism"
pubDate: 'Dec 25 2023'
heroImage: '/blog-placeholder-2.jpg'
updateDate: 'Dec 29 2023'
heroImage: '/systemd-dark.webp'
---
# Systemd Timers