BOS databases

Overview

BOS v1 and BOS v2 store data in two different databases. Session templates are common between both BOS versions; they are stored in the BOS v2 databases.

BOS v2 databases

(ncn-mw#) All BOS v2 data is stored in Redis databases running in a pod in the services namespace.

kubectl get pods -n services -l app.kubernetes.io/name=cray-bos-db

Example output:

NAME                           READY   STATUS    RESTARTS   AGE
cray-bos-db-58f4967657-rdj9l   2/2     Running   0          70d

Data organization

Within the Redis pod, the BOS v2 data is divided into 6 databases:

Database Key
Components Node xname
Boot artifacts (initrd, kernel, and kernel parameters) BSS token
Options options
Session templates Template name
Sessions Session name
Session statuses Session name

The options database has a single entry with a fixed key. This entry contains a dictionary of current BOS option values.

BOS v1 database

(ncn-mw#) All BOS v1 session data is stored in an etcd database running in pods in the services namespace.

kubectl get pods -n services -l app.kubernetes.io/instance=cray-bos,app.kubernetes.io/name=etcd

Example output:

NAME              READY   STATUS    RESTARTS   AGE
cray-bos-etcd-0   2/2     Running   0          4d
cray-bos-etcd-1   2/2     Running   0          4d
cray-bos-etcd-2   2/2     Running   0          4d

Access

All access to the BOS databases is done by the BOS API server, with a single exception; The power-on operator directly writes to the BOS v2 boot artifacts database.

Source

The Helm chart for the BOS database is located in the Cray-HPE/bos open source GitHub repository.