Skip to content

A *very mild* contingency plan for servers that run out of space.

License

Notifications You must be signed in to change notification settings

ceiphr/reserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reserver

CI Script Version BASH Version MIT License

The server space reserver. Intended for Linux systems. Tested on Ubuntu 20.04, 21.10 and Fedora Workstation 35.

About The Project

A very mild contingency plan for servers that run out of space. Based on this great article by Brian Schrader: Why All My Servers Have An 8gb Empty File.

Just like Schrader does in the article, this script will reserve space on a server, so, you can delete it later.

Specifically, when your server runs out of space, you can remove the reservation file this script produces so that the server will hopefully have enough space to function again while you try to fix whatever caused the issue.

You should always use monitoring software and or SaaS offerings such as Datadog to monitor disk usage on your servers. That is the tool that will really help you mitigate this potential problem. Think of reserver as a sidekick. It's simple to use and is there if your primary tools somehow fail. It is a mild contingency plan if you can spare the disk space.

Built and Tested With

Installation

Run the following in the terminal of your server:

sh -c "$(curl -sL https://ceiphr.io/reserver/install)"

The installation script uses curl or wget to get reserver.sh from this repository and makes it executable with chmod +x reserver.sh. It then moves the script to /usr/local/bin/reserver to make it available in your $PATH. This operation does require root access.

Usage

Simply running the command will produce a 5GB reservation file located at $HOME/.reservation:

$ reserver
Reserving 5GB of space...
Reservation complete!

Rerunning the script will ask if you'd like to delete the reservation:

$ reserver
Reservation file already exists. Delete? [y/N]: y
Reservation removed. Good luck!

Arguments

You can provide a custom directory, file name or size:

$ reserver -d /tmp -f foo -s 10
Reservation size set to 10GB.
Reserving 10GB of space...
Reservation complete!

The above command will create a reservation file foo in /tmp that is 10GB in size.

Note: The largest reservation size allowed is 50% of the unallocated space on the disk.

When supplying custom arguments, reserver will create $HOME/.reserver.conf that contains the configured directory and file name. Do not edit this file. It is for the script to keep track of your reservation.

When running the command again without arguments:

$ reserver
Reservation file already exists. Delete? [y/N]: y
Reservation removed. Good luck!

reserver will read .reserver.conf to find where your reservation is. The script will ask if you'd like to delete the reservation, just like with the default configuration.

reserver ensures that only one reservation exists on a system anytime the script is executed. To prevent multiple instances of the script from causing a race condition, /tmp/reserver.lock is created when the script is running. Other instances of the script will be blocked from running.

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgments

This project both leveraged and took inspiration from the following products and projects:

(back to top)