OSD BlueStore RocksDB metadata and WAL placement

Starting with ODF 4.7 you can customize the deployment of your OSDs when it comes to what device to use for what part of BlueStore.

This is useful if you want to offload the OSD’s metadata onto a different disk for performance reasons.

Let’s consider a standard StorageCluster Custom Resource below:

---
apiVersion: ocs.openshift.io/v1
kind: StorageCluster
metadata:
  name: ocs-storagecluster
  namespace: openshift-storage
spec:
  manageNodes: false
  monDataDirHostPath: /var/lib/rook
  storageDeviceSets:
  - count: 1
    dataPVCTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: {size}
        storageClassName: {storageclass}
        volumeMode: Block
    name: {deviceset-prefix}
    portable: false
    replica: 3

This will deploy a cluster in a very standard way where every piece of the OSD is collocated on the PVC that will be provisioned using the storage class {storageclass}. The size of the PersistentVolume that will be provisioned is specified as {size}.

1. RocksDB metadata placement

This feature is Development Preview.

You can now add the following section to your storageDeviceSets parameter to customize the placement of RocksDB at deployment time.

    metadataPVCTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: {size}
        storageClassName: {storageclass}
        volumeMode: Block

When added to your storage cluster the following will happen:

  1. Each OSD data will claim a PVC as {deviceset-prefix-x-data-y}

  2. Each OSD RockDB metadata will claim a PVC as {deviceset-prefix-x-metadata-y}

The LSO discovery and subsequent provisioning will create new PVs using the entire disk and you cannot create partitions after this process. Make sure to configure your RocksDB metadata disk partitions before LSO discovery to create the data and metadata PVs to be used to deploy your storage cluster.

2. RocksDB WAL placement

This feature is Development Preview.

You can now add the following section to your storageDeviceSets parameter to customize the placement of the RocksDB Write Ahead Log (WAL) at deployment time.

    walPVCTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: {size}
        storageClassName: {storageclass}
        volumeMode: Block

When added to your storage cluster the following will happen:

  1. Each OSD data will claim a PVC as {deviceset-prefix-x-data-y}

  2. Each OSD RockDB WAL will claim a PVC as {deviceset-prefix-x-wal-y}

The WAL placement can be combined with the RocksDB metadata placement.
The LSO discovery and subsequent provisioning will create new PVs using the entire disk and you cannot create partitions after this process. Make sure to configure your RocksDB metadata disk partitions before LSO discovery to create the data and wal PVs to be used to deploy your storage cluster.