ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Operate Configure precomputed IO properties

Caution

You're viewing documentation for an unstable version of ScyllaDB Operator. Switch to the latest stable version.

Configure precomputed IO properties¶

Provide precomputed IO properties to ScyllaDB to skip the automatic iotune benchmark that runs on first startup.

When to use this¶

By default, ScyllaDB runs an iotune benchmark when a node starts for the first time. The benchmark measures the IO capabilities of the underlying storage and writes the results to io_properties.yaml. The results are cached on the persistent volume, so subsequent startups reuse them.

Running the benchmark is appropriate for most deployments. However, you may want to provide precomputed values when:

  • You know the exact IO characteristics of your storage (e.g. cloud provider published IOPS/throughput specs).

  • You want to ensure consistent IO configuration across all nodes.

  • You want to skip the benchmark to speed up initial cluster bootstrap.

How it works¶

The Operator’s sidecar checks for /etc/scylla.d/io_properties.yaml before starting ScyllaDB. If the file exists, the sidecar passes --io-setup=0 --io-properties-file=/etc/scylla.d/io_properties.yaml to the ScyllaDB binary, which skips the iotune benchmark entirely. If the file does not exist, the sidecar creates a symlink to a cache location on the persistent volume, where iotune results are stored after the first run.

To provide precomputed values, mount a ConfigMap containing io_properties.yaml into /etc/scylla.d/ on the ScyllaDB container.

Procedure¶

Step 1: Create the IO properties ConfigMap¶

Create a ConfigMap containing your precomputed IO properties. Refer to the Seastar iotune source for the file format reference.

apiVersion: v1
kind: ConfigMap
metadata:
  name: scylla-io-properties
  namespace: scylla
data:
  io_properties.yaml: |
    disks:
      - mountpoint: /var/lib/scylla
        read_iops: 200000
        read_bandwidth: 1200000000
        write_iops: 100000
        write_bandwidth: 600000000
kubectl -n scylla apply -f io-properties-configmap.yaml

Step 2: Mount the ConfigMap into the ScyllaDB container¶

Use volumes and volumeMounts on the rack spec to mount the ConfigMap into the ScyllaDB container:

apiVersion: scylla.scylladb.com/v1
kind: ScyllaCluster
metadata:
  name: scylla
  namespace: scylla
spec:
  datacenter:
    name: us-east-1
    racks:
      - name: us-east-1a
        members: 3
        storage:
          capacity: 500Gi
        resources:
          limits:
            cpu: 4
            memory: 8Gi
        volumes:
          - name: io-properties
            configMap:
              name: scylla-io-properties
        volumeMounts:
          - name: io-properties
            mountPath: /etc/scylla.d/io_properties.yaml
            subPath: io_properties.yaml
            readOnly: true

Step 3: Apply and verify

Apply the cluster spec. After the pods start, verify that the IO properties are being used:

kubectl -n scylla exec -it scylla-us-east-1-us-east-1a-0 -c scylla -- cat /etc/scylla.d/io_properties.yaml

You should see your precomputed values. The ScyllaDB logs should show that iotune was skipped:

kubectl -n scylla logs scylla-us-east-1-us-east-1a-0 -c scylla | grep -i "io properties"

Caution

Providing incorrect IO properties can cause ScyllaDB to over-commit or under-utilise the disk subsystem, leading to performance degradation or instability. Ensure the values match the actual capabilities of your storage.

Key considerations

Consideration

Detail

Persistent cache

By default, iotune results are cached on the persistent volume. Precomputed values are only needed if you want to skip or override the benchmark.

Consistent values

All nodes sharing the same storage type should use the same IO properties. Mount the same ConfigMap across all racks that use the same storage class.

Rolling restart

Adding or changing the volume mount triggers a rolling restart. The Operator restarts nodes one at a time.

Storage class changes

If you change the storage class or move to a different disk type, update the IO properties ConfigMap to match the new storage.

Related pages

  • Pass additional ScyllaDB arguments — passing arbitrary command-line flags to ScyllaDB

  • Seastar iotune source — reference for the io_properties.yaml format

Was this page helpful?

PREVIOUS
Pass additional ScyllaDB arguments
NEXT
Upgrade
  • Create an issue
  • Edit this page

On this page

  • Configure precomputed IO properties
    • When to use this
    • How it works
    • Procedure
      • Step 1: Create the IO properties ConfigMap
      • Step 2: Mount the ConfigMap into the ScyllaDB container
ScyllaDB Operator
Search Ask AI
  • master
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2