SSD Management

SSD Operations

The SSD Operations Custom Resource File supports a number of different options for working with SSDs. This section will explain how to use the CRD to:

  • Add an SSD to an SSD group (pool),
  • Remove an SSD from an SSD group (pool),
  • Remove an SSD that is missing,
  • Migrate data on one SSD to another,
  • Upgrade firmware on an SSD,
  • SSD enable allocation support.

SSD Operations Custom Resource

KumoScale software provides an SSD Operations CRD file to modify the configuration of an SSD. The following table shows the parameters you should specify when working with SSDs.

  • Make a copy of kioxia.com_v1_ssdoperation_cr.yaml for editing, and save to a separate directory (e.g., deploy/crds/myapp_ssdoperation_cr.yaml).
  • Update myapp_yaml with values for the parameters listed below:

SSD Operations
Parameter Name

Description

Optional/Required

storageNode

The name of the storage node the SSD is on. The name of storageNode obtained by issuing the command
kubectl get storagenodes.

Required

ssd

The name of the SSD returned in the SSD section when issuing the command
kubectl describe storagenodes.

Required

operation

The operation to perform. It should be equal to one of the following: AddToGroup, EnableAllocation, Evict, FirmwareUpgrade, RemoveFromGroup, RemoveMissing.

Required

firmwareSecret

The name of the secret file.

Optional

To modify an existing SSD using the CRD myapp_ssdoperation_cr.yaml, enter the following:

kubectl edit -f myapp_ssdoperation_cr.yaml

Change the settings as needed and enter the command:

kubectl create -f myapp_ssdoperation_cr.yaml

To validate the changes were successful, enter one of the following commands:

kubectl get ssdoperations myapp_ssdoperation_cr -o wide

kubectl describe ssdoperations myapp_ssdoperation_cr

The following sections explain how to use the CRD for the supported operations and show examples of each.

Adding an SSD to a Group

Specify the value of the operation parameter in myapp_ssdoperation_cr_ADDSSD1.yaml to AddToGroup, to add the SSD specified by the ssd parameter to the existing group. Then create the CRD with kubectl. The pool’s allocated volume will expand when needed. For example in the CRD file:

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: addssd1

spec:

storageNode: storagenode21

ssd: SSD1

operation: AddToGroup

Then add the SSD to a group with the following command:

kubectl create -f myapp_ssdoperation_cr_ADD_SSD1.yaml  

To validate the changes were successful, enter one of the following commands:

kubectl get ssdoperations addssd1 -o wide
kubectl describe ssdoperations addssd1

Remove the yaml file with:

kubectl delete -f myapp_ssdoperation_cr_ADD_SSD1.yaml  

Removing an SSD from a Group

To remove the SSD from the group to which it is currently attached, specify the value of the operation parameter in myapp_ssdoperation_cr_RemoveSSD1.yaml to RemoveFromGroup. Then create the CRD with kubectl. For example, in the CRD file:

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: removessd1

spec:

storageNode: storagenode21

ssd: SSD1

operation: RemoveFromGroup

Then remove the SSD from the group with the following command:

kubectl create -f myapp_ssdoperation_cr_Remove_SSD1.yaml

To validate the changes were successful, enter one of the following commands:

kubectl get ssdoperations removessd1 -o wide
kubectl describe ssdoperations removessd1

Remove the yaml file with:

kubectl delete -f myapp_ssdoperation_cr_Remove_SSD1.yaml

Removing an SSD with the state of Missing

When the state of an SSD is equal to MISSING, you will need to remove it from the storage node. This can happen after ejecting an SSD from a server’s drive bay or a tray of SSDs. To remove the missing SSD, specify the value of the operation parameter in: myapp_ssdoperation_cr_RemoveMissing_SSD1.yaml to RemoveMissing and create the CRD with kubectl. For example, in the CRD file:

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: removemiss1

spec:

storageNode: storagenode21

ssd: SSD1

operation: RemoveMissing

Then remove the SSD with the state of missing with:

kubectl create -f myapp_ssdoperation_cr_RemoveMissing_SSD1.yaml

To validate the changes were successful, enter one of the following commands:

kubectl get ssdoperations removemiss1 -o wide
kubectl describe ssdoperations removemiss1

Remove the yaml file with:

kubectl delete -f myapp_ssdoperation_cr_RemoveMissing_SSD1.yaml

Migrating data from one SSD to another

In cases where you need to evict an SSD from a group, you will need to migrate volumes to another SSD. To do this, follow the steps below to apply the Evict operation. This will stop allocation on the first SSD, and then use the EnableAllocation operation to enable allocation on the second SSD:

1)     Evict the SSD which initiators the data, by modifying myapp_ssdoperation_cr.yaml with:

a.     SSD to be the name of the SSD supporting the data, and

b.     Set operation to Evict.

c.     Create the CRD using kubectl.

For example,

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: evictssd1

spec:

storageNode: storagenode21

ssd: SSD1

  operation: Evict

2)    Specify the value of the operations parameter in myapp_ssdoperation_cr.yaml to EnableAllocation then apply the change. This will enable allocation on the specified SSD. Set Allocation to True. For example in the CRD file,

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: enablealloc1

spec:

storageNode: storagenode21

ssd: SSD2

  operation: EnableAllocation

Upgrading Firmware on an SSD

To update firmware on an SSD you will need to first Configure the firmware secret using the firmwareupgrade-cret CRD. Then you will use the SSD Operations CRD. Complete the steps in the next sections.

Configure the Firmware Secret CR

  • Make a copy of kioxia.com_v1_firmwareupgrade-secret_cr.yaml for editing, and save to a separate directory (e.g., deploy/crds/myapp_firmwareupgrade-secret_cr.yaml).
  • Update myapp_firmwareupgrade-secretyaml with values for the parameters listed below.

Firmware Secret
Parameter Name

Description

Optional/Required

URL

The path (ftp, http, https) where the firmware is located.

Required

Username

Username for the ftp site.

Required for ftp

Password

Password for the ftp site.

Required for ftp

For example, using http,

apiVersion: v1

kind: Secret

metadata:

name: secret-httpfw-####

namespace: default

type: Opaque

stringData:

url: http://##.###.##.###/ks-upgrades/CM5-STD-####.ftd

## name is secret name which we will using in FirmwareUpgrade CRD.

## url is either FTP or http or https path for firmware file.

For example, using ftp,

apiVersion: v1

kind: Secret

metadata:

name: secret-ftpfw-####

namespace: default

type: Opaque

stringData:

url: ftp://##.###.###.###/ftp/upload/CM5-STD-####.ftd

data:

username: <base64 encoded my_username>

password: <base64 encoded superstrongpassword>

Configure and Apply the SSD Operations CR

Modify the SSD Operations CRD by setting the value of

  • operation to FirmwareUpgrade, and
  • firmwareSecret to the name of the firmwareupgrade -secret file,

For example, in the CRD file:

apiVersion: kumoscale.kioxia.com/v1

kind: SSDOperation

metadata:

name: fwupgradehttp17

spec:

storageNode: storagenode21

ssd: SSD3

operation: FirmwareUpgrade

parameters:

   firmwareSecretName: secret-httpfw-####

Then use kubectl to

  • Create the firmware upgrade secret CRD.
  • Create the Firmware Upgrade CRD.

For example:

kubectl create -f myapp_firmwareupgrade-secret_cr.yaml

kubectl create -f  fwupgrade-secret-FTP_CR_0107.yaml
kubectl create -f  fwupgrade-FTP_CR0107.yaml

To validate the changes were successful:

kubectl get ssdoperations fwupgradessd11 -o wide
kubectl describe ssdoperations fwupgradessd11

To remove the yaml files:

kubectl delete -f fwupgrade-FTP_CR0107.yaml
kubectl delete -f fwupgrade-secret-FTP_CR_0107.yaml

 

 

Next: Volume Management