Cluster Commands
sbctl cluster --help
Cluster Commands
Creates a new cluster.
Created a new control plane cluster with the current node as the primary control plane node.
sbctl cluster create
--cap-warn=<CAP_WARN>
--cap-crit=<CAP_CRIT>
--prov-cap-warn=<PROV_CAP_WARN>
--prov-cap-crit=<PROV_CAP_CRIT>
--ifname=<IFNAME>
--mgmt-ip=<MGMT_IP>
--tls-secret-name=<TLS_SECRET_NAME>
--log-del-interval=<LOG_DEL_INTERVAL>
--metrics-retention-period=<METRICS_RETENTION_PERIOD>
--contact-point=<CONTACT_POINT>
--grafana-endpoint=<GRAFANA_ENDPOINT>
--data-chunks-per-stripe=<DATA_CHUNKS_PER_STRIPE>
--parity-chunks-per-stripe=<PARITY_CHUNKS_PER_STRIPE>
--ha-type=<HA_TYPE>
--is-single-node
--mode=<MODE>
--ingress-host-source=<INGRESS_HOST_SOURCE>
--dns-name=<DNS_NAME>
--enable-node-affinity
--fabric=<FABRIC>
--strict-node-anti-affinity
--enable-failure-domain
--device-mode=<DEVICE_MODE>
--enable-inline-checksum
--4k_atomic
--name=<NAME>
--qpair-count=<QPAIR_COUNT>
--client-qpair-count=<CLIENT_QPAIR_COUNT>
--client-data-nic=<CLIENT_DATA_NIC>
--use-backup=<USE_BACKUP>
--nvmf-base-port=<NVMF_BASE_PORT>
--rpc-base-port=<RPC_BASE_PORT>
--snode-api-port=<SNODE_API_PORT>
--max-subsys=<MAX_SUBSYS>
--hugepages-mem=<HUGEPAGES_MEM>
--vcpu-count=<VCPU_COUNT>
--hashicorp-vault-url=<HASHICORP_VAULT_URL>
--alerting-config-path=<ALERTING_CONFIG_PATH>
--cluster-vip=<CLUSTER_VIP>
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --cap-warn | The capacity warning level in percent. Default: 89. |
integer | False | 89 |
| --cap-crit | The capacity critical level in percent. Default: 99. |
integer | False | 99 |
| --prov-cap-warn | The capacity warning level in percent. Default: 250. |
integer | False | 250 |
| --prov-cap-crit | The capacity critical level in percent. Default: 500. |
integer | False | 500 |
| --ifname | Management interface name, e.g. eth0. | string | False | - |
| --mgmt-ip | Management IP address to use for the node (e.g., 192.168.1.10). | string | False | - |
| --tls-secret-name | Name of the Kubernetes TLS Secret to be used by the Ingress for HTTPS termination (e.g., my-tls-secret). | string | False | - |
| --log-del-interval | The logging retention policy. Default: 3d. |
string | False | 3d |
| --metrics-retention-period | Retention period for I/O statistics (Prometheus). Default: 7d. |
string | False | 7d |
| --contact-point | The email or slack webhook url to be used for alerting. | string | False | |
| --grafana-endpoint | The endpoint url for Grafana. | string | False | |
| --data-chunks-per-stripe | The erasure coding schema parameter k (distributed raid). Default: 1. |
integer | False | 1 |
| --parity-chunks-per-stripe | The erasure coding schema parameter n (distributed raid). Default: 1. |
integer | False | 1 |
| --ha-type | Logical volume HA type (single, ha), default is cluster ha type. Default: ha.Available Options: - single - ha |
string | False | ha |
| --is-single-node | For single-node clusters only. Default: false. |
marker | False | False |
| --mode | The environment to deploy management services. Default: docker.Available Options: - docker - kubernetes |
string | False | docker |
| --ingress-host-source | Ingress host source: 'hostip' for node IP, 'loadbalancer' for external LB, or 'dns' for custom domain. Default: hostip.Available Options: - hostip - loadbalancer - dns |
string | False | hostip |
| --dns-name | Fully qualified DNS name to use as the Ingress host (required if --ingress-host-source=dns). | string | False | |
| --enable-node-affinity | Enable node affinity for storage nodes. | marker | False | - |
| --fabric | The NVMe fabric to use (specify: tcp, rdma, tcp,rdma). Default: tcp.Available Options: - tcp - rdma - tcp,rdma |
string | False | tcp |
| --strict-node-anti-affinity | Enable strict node anti affinity for storage nodes. Never more than one chunk is placed on a node. This requires a minimum of data-chunks-in-stripe + parity-chunks-in-stripe + 1 nodes in the cluster. | marker | False | - |
| --enable-failure-domain | Enable failure-domain anti-affinity. Each storage node must then be added with a --failure-domain tag (rack/cabinet/DC); data, journal and secondary/tertiary copies are spread across distinct failure domains (best-effort). Deploy-time only: a cluster cannot be upgraded into this feature, it must be redeployed. | marker | False | - |
| --device-mode | Storage-device mode for the whole cluster. 'nvme' (default): NVMe PCIe devices auto-detected and attached via the SPDK nvme driver. 'lblk': arbitrary Linux block devices wrapped in SPDK AIO bdevs; devices are selected at 'sn configure' by name or serial number. Deploy-time only; inter-node fabric (nvme-tcp/rdma) is unaffected. Available Options: - nvme - lblk |
string | False | nvme |
| --enable-inline-checksum | Enable inline CRC checksum validation on every IO for silent-data-error protection. Cannot be enabled or disabled after cluster creation. Per-device alceml mode (md-on-device vs fallback) is auto-detected at add-node. | marker | False | - |
| --4k_atomic | Declare that devices guarantee 4K write atomicity even with a <4K logical block size (e.g. AWS NVMe is 512B but atomic at 4K). Allows fallback-mode inline checksum on such devices by skipping the data-plane 4K block-size requirement. Only meaningful with --enable-inline-checksum. Cannot be changed after cluster creation. | marker | False | - |
| --name, -n | Assigns a name to the newly created cluster. | string | False | - |
| --qpair-count | Increase for clusters with few but very large logical volumes or decrease for clusters with a large number of very small logical volumes. | range(0..128) | False | 32 |
| --client-qpair-count | Increase for clusters with few but very large logical volumes or decrease for clusters with a large number of very small logical volumes. | range(0..128) | False | 3 |
| --client-data-nic | Network interface name from client to use for logical volume connection. | string | False | - |
| --use-backup | The path to JSON file with S3/MinIO backup configuration. | string | False | - |
| --nvmf-base-port | Base port for all NVMe-oF listeners (lvol, hublvol, device). Default: 4420. |
integer | False | 4420 |
| --rpc-base-port | The base port for SPDK JSON-RPC. Default: 8080. |
integer | False | 8080 |
| --snode-api-port | The SNodeAPI/firewall port (one per host IP). Default: 50001. |
integer | False | 50001 |
| --max-subsys | Cluster-wide ceiling on nvmf subsystems per storage node. 75 is a hard product limit and larger values are rejected. Set here rather than per node so every node in the cluster is sized alike; a node adopts a change on its next restart. | integer | False | 0 |
| --hugepages-mem | Huge-page memory floor per storage node, e.g. 4G. Cluster-wide; a node adopts it on its next restart. | string | False | |
| --vcpu-count | Absolute core budget for SPDK on every storage node, replacing the old cores-percentage: a percentage meant different things on different hardware, a count does not. One core beyond this is required for the system, so a node with fewer than count+1 vCPUs is refused rather than silently under-provisioned. | integer | False | 0 |
| --hashicorp-vault-url | Hashicorp vault URL for storing encryption keys for this cluster | string | False | - |
| --alerting-config-path | Configures the Grafana contact points from a file, so that a cluster can notify Slack, Microsoft Teams, PagerDuty, Opsgenie and a generic webhook at once. The file has the same shape as the controlplane.observability.grafana.notifications block of the simplyblock-operator Helm chart values. When given, --contact-point is ignored. | string | False | - |
| --cluster-vip | Cluster Virtual IP, this is the load balancer IP or domain, would be used for the cluster logging ingress. | string | False | - |
Adds a new cluster.
Adds a new cluster.
sbctl cluster add
--cap-warn=<CAP_WARN>
--cap-crit=<CAP_CRIT>
--prov-cap-warn=<PROV_CAP_WARN>
--prov-cap-crit=<PROV_CAP_CRIT>
--data-chunks-per-stripe=<DATA_CHUNKS_PER_STRIPE>
--parity-chunks-per-stripe=<PARITY_CHUNKS_PER_STRIPE>
--ha-type=<HA_TYPE>
--enable-node-affinity
--fabric=<FABRIC>
--is-single-node
--qpair-count=<QPAIR_COUNT>
--client-qpair-count=<CLIENT_QPAIR_COUNT>
--strict-node-anti-affinity
--enable-failure-domain
--device-mode=<DEVICE_MODE>
--enable-inline-checksum
--4k_atomic
--name=<NAME>
--client-data-nic=<CLIENT_DATA_NIC>
--use-backup=<USE_BACKUP>
--nvmf-base-port=<NVMF_BASE_PORT>
--rpc-base-port=<RPC_BASE_PORT>
--snode-api-port=<SNODE_API_PORT>
--max-subsys=<MAX_SUBSYS>
--hugepages-mem=<HUGEPAGES_MEM>
--vcpu-count=<VCPU_COUNT>
--hashicorp-vault-url=<HASHICORP_VAULT_URL>
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --cap-warn | The capacity warning level in percent. Default: 89. |
integer | False | 89 |
| --cap-crit | The capacity critical level in percent. Default: 99. |
integer | False | 99 |
| --prov-cap-warn | The capacity warning level in percent. Default: 250. |
integer | False | 250 |
| --prov-cap-crit | The capacity critical level in percent. Default: 500. |
integer | False | 500 |
| --data-chunks-per-stripe | The erasure coding schema parameter k (distributed raid). Default: 1. |
integer | False | 1 |
| --parity-chunks-per-stripe | The erasure coding schema parameter n (distributed raid). Default: 1. |
integer | False | 1 |
| --ha-type | Logical volume HA type (single, ha), default is cluster single type. Default: ha.Available Options: - single - ha |
string | False | ha |
| --enable-node-affinity | Enables node affinity for storage nodes. | marker | False | - |
| --fabric | Fabric: tcp, rdma or both (specify: tcp, rdma). Default: tcp.Available Options: - tcp - rdma - tcp,rdma |
string | False | tcp |
| --is-single-node | For single-node clusters only. Default: false. |
marker | False | False |
| --qpair-count | Increase for clusters with few but very large logical volumes or decrease for clusters with a large number of very small logical volumes. | range(0..128) | False | 32 |
| --client-qpair-count | Increase for clusters with few but very large logical volumes or decrease for clusters with a large number of very small logical volumes. | range(0..128) | False | 3 |
| --strict-node-anti-affinity | Enable strict node anti affinity for storage nodes. Never more than one chunk is placed on a node. This requires a minimum of data-chunks-in-stripe + parity-chunks-in-stripe + 1 nodes in the cluster." | marker | False | - |
| --enable-failure-domain | Enable failure-domain anti-affinity. Each storage node must then be added with a --failure-domain tag (rack/cabinet/DC); data, journal and secondary/tertiary copies are spread across distinct failure domains (best-effort). Deploy-time only: a cluster cannot be upgraded into this feature, it must be redeployed. | marker | False | - |
| --device-mode | Storage-device mode for the whole cluster. 'nvme' (default): NVMe PCIe devices auto-detected and attached via the SPDK nvme driver. 'lblk': arbitrary Linux block devices wrapped in SPDK AIO bdevs; devices are selected at 'sn configure' by name or serial number. Deploy-time only; inter-node fabric (nvme-tcp/rdma) is unaffected. Available Options: - nvme - lblk |
string | False | nvme |
| --enable-inline-checksum | Enable inline CRC checksum validation on every IO for silent-data-error protection. Cannot be enabled or disabled after cluster creation. | marker | False | - |
| --4k_atomic | Declare that devices guarantee 4K write atomicity even with a <4K logical block size (e.g. AWS NVMe is 512B but atomic at 4K). Allows fallback-mode inline checksum on such devices by skipping the data-plane 4K block-size requirement. Only meaningful with --enable-inline-checksum. Cannot be changed after cluster creation. | marker | False | - |
| --name, -n | Assigns a name to the newly created cluster. | string | False | - |
| --client-data-nic | Network interface name from client to use for logical volume connection. | string | False | - |
| --use-backup | The path to JSON file with S3/MinIO backup configuration. | string | False | - |
| --nvmf-base-port | Base port for all NVMe-oF listeners (lvol, hublvol, device). Default: 4420. |
integer | False | 4420 |
| --rpc-base-port | The base port for SPDK JSON-RPC. Default: 8080. |
integer | False | 8080 |
| --snode-api-port | The SNodeAPI/firewall port (one per host IP). Default: 50001. |
integer | False | 50001 |
| --max-subsys | Cluster-wide ceiling on nvmf subsystems per storage node. 75 is a hard product limit and larger values are rejected. Set here rather than per node so every node in the cluster is sized alike; a node adopts a change on its next restart. | integer | False | 0 |
| --hugepages-mem | Huge-page memory floor per storage node, e.g. 4G. Cluster-wide; a node adopts it on its next restart. | string | False | |
| --vcpu-count | Absolute core budget for SPDK on every storage node, replacing the old cores-percentage: a percentage meant different things on different hardware, a count does not. One core beyond this is required for the system, so a node with fewer than count+1 vCPUs is refused rather than silently under-provisioned. | integer | False | 0 |
| --hashicorp-vault-url | Hashicorp vault URL for storing encryption keys for this cluster | string | False | - |
Stops the cluster accepting object lifecycle operations: creation, deletion and modification of volumes, snapshots, clones and pools. Read paths and the cluster's own maintenance are unaffected.
Stops the cluster accepting object lifecycle operations: creation, deletion and modification of volumes, snapshots, clones and pools. Read paths and the cluster's own maintenance are unaffected.
sbctl cluster op-stop
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Resumes object lifecycle operations on the cluster.
Resumes object lifecycle operations on the cluster.
sbctl cluster op-start
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Activates a cluster.
Once a cluster has sufficient nodes added, it needs to be activated. Can also be used to re-activate a suspended cluster.
sbctl cluster activate
<CLUSTER_ID>
--force
--force-lvstore-create
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --force | Force recreate distr and lv stores. | marker | False | - |
| --force-lvstore-create | Force recreate lv stores. | marker | False | - |
Shows the cluster list.
Shows the cluster list.
sbctl cluster list
--json
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --json | Print json output. | marker | False | - |
Shows a cluster's status.
Shows a cluster's status.
sbctl cluster status
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Create lvstore on newly added nodes to the cluster.
Create lvstore on newly added nodes to the cluster.
sbctl cluster complete-expand
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Shows a cluster's statistics.
Shows a cluster's statistics.
sbctl cluster show
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Gets a cluster's information.
Gets a cluster's information.
sbctl cluster get
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Gets a cluster's capacity.
Gets a cluster's capacity.
sbctl cluster get-capacity
<CLUSTER_ID>
--json
--history=<HISTORY>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --json | Print json output. | marker | False | - |
| --history | (XXdYYh), list history records (one for every 15 minutes) for XX days and YY hours (up to 10 days in total). | string | False | - |
Gets a cluster's I/O statistics.
Gets a cluster's I/O statistics.
sbctl cluster get-io-stats
<CLUSTER_ID>
--records=<RECORDS>
--history=<HISTORY>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --records | The number of records. Default: 20. |
integer | False | 20 |
| --history | (XXdYYh), list history records (one for every 15 minutes) for XX days and YY hours (up to 10 days in total). | string | False | - |
Returns a cluster's status logs.
Returns a cluster's status logs.
sbctl cluster get-logs
<CLUSTER_ID>
--json
--limit=<LIMIT>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --json | Return JSON formatted logs. | marker | False | - |
| --limit | Show last number of logs, default 50. Default: 50. |
integer | False | 50 |
Gets a cluster's secret.
Gets a cluster's secret.
sbctl cluster get-secret
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Updates a cluster's secret.
Updates a cluster's secret.
sbctl cluster update-secret
<CLUSTER_ID>
<SECRET>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| SECRET | The new 20 characters password. | unknown | True |
Updates a cluster's fabric.
Updates a cluster's fabric.
sbctl cluster update-fabric
<CLUSTER_ID>
<FABRIC>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| FABRIC | Fabric: tcp, rdma or both (specify: tcp, rdma). Default: tcp. |
string | True |
Checks a cluster's health.
Checks a cluster's health.
sbctl cluster check
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Updates a cluster to new version.
Updates a the control plane to a new version. To update the storage nodes, they have to be shutdown and restarted. This can be done in a rolling manner. Attention: verify that an upgrade path is available and has been tested!"
sbctl cluster update
<CLUSTER_ID>
--cp-only=<CP_ONLY>
--spdk-image=<SPDK_IMAGE>
--mgmt-image=<MGMT_IMAGE>
--max-subsys=<MAX_SUBSYS>
--hugepages-mem=<HUGEPAGES_MEM>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --cp-only | Update the control plane only. Default: false. |
boolean | False | False |
| --spdk-image | Restart the storage nodes using the provided image. | string | False | - |
| --mgmt-image | Restart the management services using the provided image. | string | False | - |
| --max-subsys | Change the cluster-wide max nvmf subsystems per storage node. Applied by each node on its next restart. Given alone, no image update runs. | integer | False | - |
| --hugepages-mem | Change the cluster-wide huge-page memory floor per storage node, e.g. 4G. Applied by each node on its next restart. Given alone, no image update runs. | string | False | - |
Completes a cluster upgrade.
Runs the completion step of a cluster upgrade started with cluster update: resumes JC compression on all storage nodes (deferred to a resume task on nodes with running data migrations) and stamps the installed release. All storage nodes must be online.
sbctl cluster upgrade-complete
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Backfills the database's secondary indices.
Walks every indexed table and fills in the index entries of records that predate their index declaration, then marks each index usable by reads. Idempotent, and safe to run against a live cluster: normal writes already maintain every index, and the backfill only adds entries. An upgrade runs this automatically; use the command after an interrupted run, or to fill an index that sbctl cluster index-state --set building has just put back into service.
sbctl cluster build-indices
Shows or switches the state of the database's secondary indices.
Without arguments, lists every declared index with its state (building, ready or disabled), its backfill cursor and when the state last changed. --set disabled takes one index out of service: writes stop maintaining it and reads fall back to a full scan, which is how a misbehaving index is switched off without touching the rest of its class. Its entries are left in place, so readers that have not seen the change yet still get right answers, and the command waits a few seconds before returning, until every process has seen it. --set building puts it back, waiting the same way before discarding those entries, after which sbctl cluster build-indices refills and re-enables it. An index reaches ready only by completing a backfill, so it cannot be set here.
sbctl cluster index-state
<INDEX>
--set=<SET>
--json
| Argument | Description | Data Type | Required |
|---|---|---|---|
| INDEX | The index to act on, as |
string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --set | Switch the named index to this state. Available Options: - building - disabled |
string | False | - |
| --json | Print outputs in json format. | marker | False | - |
Verifies the database's secondary indices.
Walks every index in both directions - each record's derived keys must exist, and each index key must resolve to a live record that still carries the indexed value - and reports what does not match. Read-only unless --repair is given, and takes nothing offline. Fails while anything is left unresolved: every finding of a read-only run, and the one thing a repair cannot settle - a unique value that two live records both carry, which has to be resolved in the data itself.
sbctl cluster check-indices
--repair
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --repair | Write back the entries that can be derived from the records, and clear orphaned ones, instead of only reporting them. | marker | False | - |
Initiates a graceful shutdown of a cluster's storage nodes.
Initiates a graceful shutdown of a cluster's storage nodes.
sbctl cluster graceful-shutdown
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Performs a full cluster restart: shuts down every node that is not offline, restarts all nodes in parallel and reactivates the cluster.
Performs a full cluster restart: shuts down every node that is not offline, restarts all nodes in parallel and reactivates the cluster.
sbctl cluster restart
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Initiates a graceful startup of a cluster's storage nodes.
Initiates a graceful startup of a cluster's storage nodes.
sbctl cluster graceful-startup
<CLUSTER_ID>
--clear-data
--spdk-image=<SPDK_IMAGE>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --clear-data | Clear Alceml data. | marker | False | - |
| --spdk-image | The SPDK image URI. | string | False | - |
Lists tasks of a cluster.
Lists tasks of a cluster.
sbctl cluster list-tasks
<CLUSTER_ID>
--limit=<LIMIT>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --limit | Show last number of tasks, default 50. Default: 50. |
integer | False | 50 |
Cancels task by task id.
Cancels task by task id.
sbctl cluster cancel-task
<TASK_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| TASK_ID | The cluster task id. | string | True |
Get rebalancing subtasks list.
Get rebalancing subtasks list.
sbctl cluster get-subtasks
<TASK_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| TASK_ID | The cluster task id. | string | True |
Deletes a cluster.
This is only possible, if no storage nodes and pools are attached to the cluster
sbctl cluster delete
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Enable cluster-wide per-chunk data placement-binding for distrib bdevs (forward-only upgrade; --disable is reserved for debug).
Preflight: every storage node must be ONLINE; the cluster must be ACTIVE and not rebalancing. The runtime distr_shared_placement RPC is dispatched to every online node, then the flag is persisted on the cluster row and on every node's lvstore_stack distrib entries so subsequent restarts re-create with the new mode.
sbctl cluster set-shared-placement
<CLUSTER_ID>
--disable
--force
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --disable | Reverse transition (per-chunk -> per-page). Debug only; only safe on a balanced or empty bdev. Requires --force. | marker | False | - |
| --force | Bypass the rebalancing / non-online-node guards. Required when --disable is passed. | marker | False | - |
Provisions the Grafana alert rules read from the cluster event log.
Adds eight alert rules that read the cluster event log through /api/v2/clusters/
sbctl cluster event-alerts
<CLUSTER_ID>
--disable
--log-limit=<LOG_LIMIT>
--interval=<INTERVAL>
--pending-period=<PENDING_PERIOD>
--plugin-url=<PLUGIN_URL>
--plugin-preinstalled
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --disable | Remove the event log alert rules and the data source. | marker | False | - |
| --log-limit | Too low on a cluster that produces events quickly and an alert heals itself as soon as the transition that opened it scrolls out of the window. | integer | False | - |
| --interval | How often the rules run, as a Grafana duration. Default: 1m. |
string | False | - |
| --pending-period | How long a condition must hold before it notifies, as a Grafana duration. Default: 1m. |
string | False | - |
| --plugin-url | Where to fetch the Infinity data source plugin from. | string | False | - |
| --plugin-preinstalled | The data source plugin is already in the Grafana image; do not download it. | marker | False | - |
Activate v2 distrib write protection cluster-wide.
Needed once after upgrading a cluster from a release without v2; new clusters are created on v2 already. Sends the runtime distr_write_protection_v2 RPC to every ONLINE storage node -- the only way an already-created distrib gains v2, since a create parameter cannot retrofit an existing bdev. Only if every online node succeeds is the generation recorded, on the cluster row and on every node's lvstore_stack distrib entries, so later (re-)creations use the v2 parameter. Partial success records nothing, so a retry is a plain re-run. Offline nodes are not an error: they have no running bdev to migrate and come back on v2 at their next restart.
sbctl cluster switch-write-protection
<CLUSTER_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
Assigns or changes a name to a cluster
Assigns or changes a name to a cluster
sbctl cluster change-name
<CLUSTER_ID>
<NAME>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | The cluster id. | string | True |
| NAME | The new cluster name. | string | True |
DEPRECATED: use replication-target-add and replication-policy-add. Assigns the single snapshot replication target cluster.
DEPRECATED: use replication-target-add and replication-policy-add. Assigns the single snapshot replication target cluster.
sbctl cluster add-replication
<CLUSTER_ID>
<TARGET_CLUSTER_ID>
--timeout=<TIMEOUT>
--target-pool=<TARGET_POOL>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | Cluster id | string | True |
| TARGET_CLUSTER_ID | Target Cluster id | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --timeout | Snapshot replication network timeout | integer | False | 3600 |
| --target-pool | Target cluster pool ID or name | string | False | - |
Adds a named replication destination to a cluster (several are allowed)
Adds a named replication destination to a cluster (several are allowed)
sbctl cluster replication-target-add
<CLUSTER_ID>
<NAME>
<TARGET_CLUSTER_ID>
--target-pool=<TARGET_POOL>
--timeout=<TIMEOUT>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | Source cluster id | string | True |
| NAME | Name of the replication target, unique per source cluster | string | True |
| TARGET_CLUSTER_ID | Destination cluster id | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --target-pool | Pool on the destination cluster (ID or name). Stored as a UUID. | string | False | - |
| --timeout | Replication network timeout in seconds. Default: 600. |
integer | False | - |
Lists the replication targets of a cluster
Lists the replication targets of a cluster
sbctl cluster replication-target-list
--cluster-id=<CLUSTER_ID>
--json
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --cluster-id | Source cluster id | string | False | - |
| --json | Print outputs in json format. | marker | False | - |
Removes a replication target. Refused while a policy still uses it.
Removes a replication target. Refused while a policy still uses it.
sbctl cluster replication-target-remove
<TARGET_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| TARGET_ID | Replication target id | string | True |
Fails over EVERY volume replicating to this target (site loss)
Fails over EVERY volume replicating to this target (site loss)
sbctl cluster replication-target-failover
<TARGET_ID>
--json
| Argument | Description | Data Type | Required |
|---|---|---|---|
| TARGET_ID | Replication target id | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --json | Print outputs in json format. | marker | False | - |
Adds a replication policy on a target, defining the replication cadence
Adds a replication policy on a target, defining the replication cadence
sbctl cluster replication-policy-add
<CLUSTER_ID>
<NAME>
--target=<TARGET>
--interval-min=<INTERVAL_MIN>
--mode=<MODE>
--keep=<KEEP>
--retention-schedule=<RETENTION_SCHEDULE>
--rpo-target-sec=<RPO_TARGET_SEC>
--consistency-group
| Argument | Description | Data Type | Required |
|---|---|---|---|
| CLUSTER_ID | Source cluster id | string | True |
| NAME | Name of the policy, unique per source cluster | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --target | Replication target id or name | string | True | - |
| --interval-min | Cadence: minutes between internal replication snapshots. 0 replicates user snapshots only. Default: 1. |
integer | False | - |
| --mode | Replication mode. Default: failover.Available Options: - failover - migration |
string | False | - |
| --keep | Replicated internal snapshots to retain on each side. Minimum (and default): 2. |
integer | False | - |
| --retention-schedule | Tiered retention, e.g. 15m:2h,1h:11h,1d:7d - one snapshot every 15 minutes for the last 2 hours, then hourly for 11 hours, then daily for 7 days. Snapshots older than the total span are pruned. Empty (default) keeps the flat --keep behaviour. |
string | False | - |
| --rpo-target-sec | Declared recovery point objective in seconds. RPO compliance is computed against this target instead of the derived lag budget. Unset means no declared objective. | integer | False | - |
| --consistency-group | All volumes attached to this policy form ONE consistency group: they must share an LVS (creation pins them to it), cadence snapshots are taken as one frozen group, and fail-over generations resolve group-wide. | marker | False | - |
Lists the replication policies of a cluster
Lists the replication policies of a cluster
sbctl cluster replication-policy-list
--cluster-id=<CLUSTER_ID>
--json
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --cluster-id | Source cluster id | string | False | - |
| --json | Print outputs in json format. | marker | False | - |
Removes a replication policy. Refused while a volume still follows it.
Removes a replication policy. Refused while a volume still follows it.
sbctl cluster replication-policy-remove
<POLICY_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| POLICY_ID | Replication policy id | string | True |
Fails over EVERY volume following this policy
Fails over EVERY volume following this policy
sbctl cluster replication-policy-failover
<POLICY_ID>
--json
| Argument | Description | Data Type | Required |
|---|---|---|---|
| POLICY_ID | Replication policy id | string | True |
| Parameter | Description | Data Type | Required | Default |
|---|---|---|---|---|
| --json | Print outputs in json format. | marker | False | - |
Takes ONE crash-consistent snapshot of every volume in the policy's consistency group, as a new group generation
Takes ONE crash-consistent snapshot of every volume in the policy's consistency group, as a new group generation
sbctl cluster replication-policy-snapshot
<POLICY_ID>
| Argument | Description | Data Type | Required |
|---|---|---|---|
| POLICY_ID | Replication policy id (must be a consistency-group policy) | string | True |