OpenShift Data Foundation (ODF)  - Add OSDs (Disks)

### OpenShift Data Foundation (ODF) 

Red Hat OpenShift Data Foundation とは

Red Hat® OpenShift® Data Foundation (旧 Red Hat OpenShift Container Storage) は、コンテナ用ソフトウェア・デファインド・ストレージであり、Red Hat OpenShift に緊密に統合されたデータサービスを提供します。Red Hat OpenShift Data Foundation は、クラウド全体でアプリケーションを迅速かつ効率的に開発し、デプロイするのに役立ちます。

https://www.redhat.com/ja/technologies/cloud-computing/openshift-data-foundation

ここでは、以下のドキュメントに基づいて、AWS 上の OpenShift Container Platform (OCP) UPI 環境の ODF 4.16 に `Object Storage Device (OSD)` を追加する手順をご紹介します。

https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html-single/scaling_storage/index#proc_scaling-up-storage-by-adding-capacity-to-an-infrastructure_aws

※ 今回の手順のほかに、既存の OSD を Resise する手順もあります。

https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html-single/scaling_storage/index#proc_scaling-up-storage-capacity-on-an-aws-cluster-by-resizing-existing-osds_aws

### Scaling up storage capacity on a cluster by adding a new set of OSDs

OCP Console の Storage 配下 Data Foundation の Overview で現在の状況を確認します。ここでは `System Raw Capacity 12TiB (実効容量 4TiB)` で構成されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/0cf598dd-8f7f-4777-4897-87e6e4ad56c6.png)

oc コマンドでも確認してみます。`CAPACITY = 4Ti` の PVC が OSD に対応し、`4Ti x 3 = 12TiB`の構成になっていることが分かります。また、今回の構成の OSD Backing Storage は AWS EBS で、StorageClass に `gp3-csi` を使用しています。

```shell
$ oc project -q
openshift-storage

$ oc get pvc
NAME                                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  VOLUMEATTRIBUTESCLASS   AGE
db-noobaa-db-pg-0                     Bound    pvc-6297457e-d467-4237-90ac-oiweurijdb01   50Gi       RWO            ocs-storagecluster-ceph-rbd   <unset>                 18d
ocs-deviceset-gp3-csi-0-data-07bt2g   Bound    pvc-cc5e93f7-9265-4193-85a8-943e870d0195   4Ti        RWO            gp3-csi                       <unset>                 18d
ocs-deviceset-gp3-csi-1-data-0hmz7n   Bound    pvc-6465c907-1cf4-4bba-b42a-918372o8udbd   4Ti        RWO            gp3-csi                       <unset>                 18d
ocs-deviceset-gp3-csi-2-data-0sdlbh   Bound    pvc-e357a462-4c03-4147-9e64-ee721b3df42b   4Ti        RWO            gp3-csi                       <unset>                 18d
rook-ceph-mon-a                       Bound    pvc-6a1eab54-7e8d-4012-80a3-98721938798d   50Gi       RWO            gp3-csi                       <unset>                 18d
rook-ceph-mon-b                       Bound    pvc-d88c26c5-8451-4930-a2b5-872138763svv   50Gi       RWO            gp3-csi                       <unset>                 18d
rook-ceph-mon-c                       Bound    pvc-fe733a69-ae5a-4d6c-b2fc-871239872139   50Gi       RWO            gp3-csi                       <unset>                 18d

$ oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                   STORAGECLASS                  VOLUMEATTRIBUTESCLASS   REASO
pvc-6465c907-1cf4-4bba-b42a-918372o8udbd   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-1-data-0hmz7n   gp3-csi                       <unset>                          18d
pvc-cc5e93f7-9265-4193-85a8-943e870d0195   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-0-data-07bt2g   gp3-csi                       <unset>                          18d
pvc-e357a462-4c03-4147-9e64-ee721b3df42b   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-2-data-0sdlbh   gp3-csi                       <unset>                          18d
```

なお、ODF は 6 Nodes 構成です。
```shell
$ oc get node -l  cluster.ocs.openshift.io/openshift-storage
node/ip-33-555-14-118.us-westside-99.machine.external
node/ip-33-555-14-19.us-westside-99.machine.external
node/ip-33-555-14-72.us-westside-99.machine.external
node/ip-33-555-14-78.us-westside-99.machine.external
node/ip-33-555-14-94.us-westside-99.machine.external
node/ip-33-555-14-99.us-westside-99.machine.external
```

この構成に 4TiB x3 を追加して `System Raw Capacity 24TiB (実効容量 8TiB)` 構成にしてみます。

Installed Operator から OpenShift Data Foundation を選択し、StorageSystem Tab の StorageSystem 右端にある Action Menu から `Add Capacity` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/54fa9a47-d022-9999-73c9-c924bb8f83c8.png)

`Add Capacity` 画面が表示され、StorageClass を選択することが出来ます。ここでは、既存 OSD と同じ `gp3-csi` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/3f3a3c32-b977-b98e-331e-ab36399cc445.png)

次の画面の `Raw Capacity` では、既存 OSD の容量 `4` (TiB) が Gray Out された状態で表示されます。このまま `Add` ボタンで作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/5ee2507b-b3a3-fe46-30fe-b320c986150b.png)

 Data Foundation の Overview を再確認すると、System Raw Capacity 24TiB (実効容量 8TiB) に拡張された事が分かります。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/5d71e4f4-e068-1d19-0805-aa904377dbc5.png)

oc コマンドでも確認してみます。
```shell
$ oc project -q
openshift-storage

$ oc get pvc 
NAME                                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  VOLUMEATTRIBUTESCLASS   AGE
db-noobaa-db-pg-0                     Bound    pvc-6297457e-d467-4237-90ac-oiweurijdb01   50Gi       RWO            ocs-storagecluster-ceph-rbd   <unset>                 18d
ocs-deviceset-gp3-csi-0-data-07bt2g   Bound    pvc-cc5e93f7-9265-4193-85a8-943e870d0195   4Ti        RWO            gp3-csi                       <unset>                 18d
ocs-deviceset-gp3-csi-0-data-188jd6   Bound    pvc-e5af53d3-5e00-4acd-bc8e-987124vdnbaz   4Ti        RWO            gp3-csi                       <unset>                 4d3h
ocs-deviceset-gp3-csi-1-data-0hmz7n   Bound    pvc-6465c907-1cf4-4bba-b42a-918372o8udbd   4Ti        RWO            gp3-csi                       <unset>                 18d
ocs-deviceset-gp3-csi-1-data-1gss8k   Bound    pvc-bbd285cb-ae62-434b-a633-oiweurisdb12   4Ti        RWO            gp3-csi                       <unset>                 4d3h
ocs-deviceset-gp3-csi-2-data-0sdlbh   Bound    pvc-e357a462-4c03-4147-9e64-ee721b3df42b   4Ti        RWO            gp3-csi                       <unset>                 18d
ocs-deviceset-gp3-csi-2-data-1mbr7k   Bound    pvc-908e779f-c940-4e48-8b8b-218738723vad   4Ti        RWO            gp3-csi                       <unset>                 4d3h
rook-ceph-mon-a                       Bound    pvc-6a1eab54-7e8d-4012-80a3-98721938798d   50Gi       RWO            gp3-csi                       <unset>                 18d
rook-ceph-mon-b                       Bound    pvc-d88c26c5-8451-4930-a2b5-872138763svv   50Gi       RWO            gp3-csi                       <unset>                 18d
rook-ceph-mon-c                       Bound    pvc-fe733a69-ae5a-4d6c-b2fc-871239872139   50Gi       RWO            gp3-csi                       <unset>                 18d

$ oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                   STORAGECLASS                  VOLUMEATTRIBUTESCLASS   REASO
pvc-6465c907-1cf4-4bba-b42a-918372o8udbd   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-1-data-0hmz7n   gp3-csi                       <unset>                          18d
pvc-908e779f-c940-4e48-8b8b-218738723vad   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-2-data-1mbr7k   gp3-csi                       <unset>                          4d3h
pvc-bbd285cb-ae62-434b-a633-oiweurisdb12   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-1-data-1gss8k   gp3-csi                       <unset>                          4d3h
pvc-cc5e93f7-9265-4193-85a8-943e870d0195   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-0-data-07bt2g   gp3-csi                       <unset>                          18d
pvc-e357a462-4c03-4147-9e64-ee721b3df42b   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-2-data-0sdlbh   gp3-csi                       <unset>                          18d
pvc-e5af53d3-5e00-4acd-bc8e-987124vdnbaz   4Ti        RWO            Delete           Bound    openshift-storage/ocs-deviceset-gp3-csi-0-data-188jd6   gp3-csi                       <unset>                          4d3h
```

既存 OSDs (4TiB x3) は ODF 6 Nodes のうちの 3 Nodes に別々に配置されていました。この状態で新規 OSDs (4TiB x3) を追加すると、既存 OSDs が配置されていない 3 Nodes に別々に配置され、全体で 6 OSDs が 6 Nodes に均等に配置されます。 

なお、今回の構成で ODF Node が障害等で使用できないと判断された場合には、該当 Node の OSD が別の ODF Node に動的に再配置されます。