1.3. System Prerequisites
LOCKSS requires a Linux host (either a physical machine or a virtual machine), with at least some locally-attached storage. This section discusses the host (CPU, memory, Linux, etc.) and storage prerequisites for LOCKSS 2.0-beta2 NOT YET RELEASED, which vary depending on the scope of your application.
1.3.1. Host Prerequisites
1.3.1.1. CPU Prerequisites
LOCKSS 2.0-beta2 NOT YET RELEASED runs on a 64-bit CPU with at least 4 CPU cores, preferably 8, depending on how many Stack Components you choose to run.
1.3.1.2. Memory Prerequisites
Likewise, the memory requirements also depend on which Stack Components you choose to run. We recommend 32 GB of memory for typical applications, or more for hosts involved in computing-heavy applications like the Global LOCKSS Network (GLN) or CLOCKSS.
1.3.1.3. Operating System Prerequisites
LOCKSS requires a Linux distribution that is compatible with K3s, the Kubernetes distribution the LOCKSS stack runs on. More specifically, LOCKSS 2.0-beta2 NOT YET RELEASED uses K3s 1.31.
This prerequisite is met by operating systems listed in the Compatible Operating Systems appendix (with some adjustments for some versions), including AlmaLinux OS, Arch Linux, CentOS Stream, Debian, Fedora Linux, Linux Mint, OpenSUSE Leap, OpenSUSE Tumbleweed, Oracle Linux, Red Hat Enterprise Linux (RHEL), Rocky Linux, SUSE Linux Enterprise Server (SLES), and Ubuntu.
1.3.1.4. Linux Kernel Prerequisites
Most versions of Linux distributions in the Compatible Operating Systems appendix satisfy the Linux kernel prerequisites for LOCKSS 2.0-beta2 NOT YET RELEASED out of the box:
1.3.1.5. System Software Prerequisites
Installing LOCKSS and Upgrading LOCKSS uses the LOCKSS Downloader, which has basic system software prerequisites that are met by almost any Linux distribution:
1.3.2. Storage Prerequisites
The LOCKSS system makes use of three kinds of storage:
Storage type |
Primary use |
Prerequisites section |
|---|---|---|
Software and related assets |
||
Internal stack data (other than preserved content) |
||
Preserved content |
1.3.2.1. System Storage Prerequisites
The LOCKSS stack's system storage is the storage space needed for installed software, downloaded containers, data generated by K3s, etc.
The LOCKSS stack makes use of system storage in three ways:
System storage area |
Primary use |
Configuration step |
|---|---|---|
Downloaded containers, K3s configuration |
||
LOCKSS Installer software, LOCKSS stack configuration |
||
Miscellaneous system storage |
System software that may be installed as part of Installing LOCKSS |
n/a |
The most significant portion of system storage used by the LOCKSS stack is the K3s data directory.
System storage prerequisites are as follows:
1.3.2.2. Operating Storage Prerequisites
The LOCKSS stack's operating storage is the storage space devoted to its internal operating needs, such as database data, state files, log files, temporary files, etc.
Operating storage consists of three storage areas:
Operating storage area |
Primary use |
Configuration step |
|---|---|---|
Database data, state files |
||
Log files |
||
Temporary files and other working data |
Operating storage prerequisites are as follows:
1.3.2.3. Content Storage Prerequisites
The LOCKSS stack's content storage is the storage space devoted to the content being preserved by the system, consisting of one or more content storage areas.
Content storage can be backed by NFS or other non-local filesystems, although locally-attached storage is more performant.
In total, the content storage areas need to be large enough to hold all the content to be preserved in the node.
The list of content storage areas is configurable in Section 4.8.1 (Content Storage Area Settings).
1.3.3. Miscellaneous Prerequisites
1.3.3.1. Networking Considerations
Internally, K3s uses the private subnets 10.42.0.0/16 and 10.43.0.0/16 (the IP addresses from 10.42.0.0 through 10.43.255.255) to allocate IP addresses to containers. The networking infrastructure at some institutions may include host-based firewall rules that can inadvertently block K3s' internal communication mechanisms. If your institution does this, you will need to exclude 10.42.0.0/16 and 10.43.0.0/16 (or more succinctly, 10.42.0.0/15) from these rules. What to do will vary depending on your individual situation.
1.3.3.2. Configuration Management Considerations
Some firewall and iptables enforcement features of configuration management systems such as Puppet, Ansible, Chef, or Salt, are incompatible with K3s. For example, Puppet's puppetlabs-firewall module sometimes causes K3s to be non-functional after a reboot, requiring killing and restarting the K3s systemd service. What to do will vary depending on your individual situation.
What's the Minimum for Experimentation?
To review the installation instructions and test the installation of K3s in various operating systems, we routinely install and bring up minimal LOCKSS 2.0-beta2 NOT YET RELEASED, with no metadata services or Web replay engines, and with empty embedded PostgreSQL database, in Vagrant virtual machines with Virtualbox, using 2 CPU cores and 3 GB of memory. These minimal VMs would not support a production load, but it can be a useful tool to try out the installation instructions or evaluate the system.