Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.
This walks through binding two pre-existing local NVMe devices to a single RDB replica end to end (spec.rdb.replicas: 1, spec.rdb.devices: 2). See Choosing dynamic or static RDB storage for when to use static provisioning.
Identify the two raw block devices to dedicate to RDB, for example /dev/nvme1n1 and /dev/nvme2n1 on Kubernetes node worker-1. Do not format or mount them; RegattaDB manages them directly as raw block devices.
A Kubernetes local volume needs no CSI driver or provisioner for static binding: Kubernetes mounts the given path directly on the node named in nodeAffinity. Because both PersistentVolumes are pinned to worker-1, Kubernetes also schedules the RDB Pod on worker-1, since that is the only node where both devices exist.
capacity.storage is required by the Kubernetes PersistentVolume API itself; it is Kubernetes’ own bookkeeping value for matching PersistentVolumeClaims to PersistentVolumes, and does not resize or limit the underlying device - RegattaDB uses the raw device directly regardless of this value.
If you have raw devices on more than one Kubernetes node, repeat this pattern once per node: one pair of PersistentVolumes (pinned through nodeAffinity) for every node that has its own local devices.
Apply the PersistentVolumes, then apply your RegattaCluster resource. With replicas: 1 and devices: 2, the operator expects 1 * 2 = 2 matching PersistentVolumes, exactly the two you created. Kubernetes binds one PVC to each PersistentVolume; which one binds to which device index is not something a shared selector lets you control directly, but for two identically sized devices on the same StorageClass this makes no difference to RegattaDB, since every device is used the same way. Both end up mounted in the single RDB Pod, as /dev/rdb0 and /dev/rdb1.If you need deterministic control over which physical device becomes /dev/rdb0 versus /dev/rdb1, pre-bind each PersistentVolume to its expected PVC name with claimRef instead of relying only on the selector; see Multiple RDB Devices: Naming And Readiness for the exact generated PVC names./dev/rdb0 and /dev/rdb1 are fixed, operator-assigned paths inside the container; they do not depend on how the host enumerates its own raw devices, so they stay stable across Pod restarts and node reboots.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Regatta","colors":{"primary":"#ff6600","light":"#FF6600","dark":"#ff6600"},"logo":{"light":"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_Black_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=80ecf4af831aaabfecd51ca1c1dab7a7","dark":"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_White_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=1be4bc683939b389d14aa1eeda3216d9"},"favicon":"https://mintcdn.com/regatta/xrn8wIqTNfsgHe4O/images/favicon.svg?fit=max\u0026auto=format\u0026n=xrn8wIqTNfsgHe4O\u0026q=85\u0026s=c025dcbef503c87e965049f809c4a3c4","background":{"color":{"light":"#f7f8fa","dark":"#041225"}},"navbar":{"links":[{"href":"https://rdbproject.atlassian.net/servicedesk/customer/portals","label":"Support"}],"primary":{"type":"button","label":"Start Coding","href":"https://regatta.dev/"}},"footer":{"socials":{"x":"https://twitter.com/regatta_data","linkedin":"https://www.linkedin.com/company/regatta-data"}},"fonts":{"family":"Inter"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"regatta","hasAudioNarration":false,"actualSubdomain":"regatta","customDomains":["docs.regatta.dev"],"gitSource":{"type":"github","owner":"regattadata","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af1eeb6572291321c9713bb","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"SQL","count":84},{"language":"default","tag":"Self-Hosted Deployment","count":38},{"language":"default","tag":"Tuning Performance","count":20},{"language":"default","tag":"Regatta Deployment Tool","count":19},{"language":"default","tag":"Quickstart","count":18},{"language":"default","tag":"System Monitoring","count":18},{"language":"default","tag":"Drivers \u0026 Clients","count":16},{"language":"default","tag":"SQL Functions and Operators","count":15},{"language":"default","tag":"Kubernetes Deployment","count":13},{"language":"default","tag":"Hints","count":12}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"body::-webkit-scrollbar{width:5px}body::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px}body::-webkit-scrollbar-track{background-color:#f1f1f1}#sidebar-content::-webkit-scrollbar{display:none}table td:first-child,table th:first-child{max-width:16rem}table code{white-space:normal;overflow-wrap:break-word;word-break:break-word}"}],"page":{"pagePath":"self-hosted-deployment/kubernetes/examples/static-storage-local-nvme","slug":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme","pageMetadata":{"title":"Example: Two Local NVMe Devices, One RDB Replica","description":"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.","href":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This walks through binding two pre-existing local NVMe devices to a single RDB replica end to end (`,_jsx(_components.code,{children:`spec.rdb.replicas: 1`}),`, `,_jsx(_components.code,{children:`spec.rdb.devices: 2`}),`). See `,_jsx(_components.a,{href:`/self-hosted-deployment/kubernetes/configuration/storage#choosing-dynamic-or-static-rdb-storage`,children:`Choosing dynamic or static RDB storage`}),` for when to use static provisioning.`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-identify-the-devices`,children:`1. Identify the devices`}),`\n`,_jsxs(_components.p,{children:[`Identify the two raw block devices to dedicate to RDB, for example `,_jsx(_components.code,{children:`/dev/nvme1n1`}),` and `,_jsx(_components.code,{children:`/dev/nvme2n1`}),` on Kubernetes node `,_jsx(_components.code,{children:`worker-1`}),`. Do not format or mount them; RegattaDB manages them directly as raw block devices.`]}),`\n`,_jsxs(Heading,{level:`2`,id:`2-create-a-persistentvolume-per-device`,children:[`2. Create a `,_jsx(_components.code,{children:`PersistentVolume`}),` per device`]}),`\n`,_jsxs(_components.p,{children:[`Create one `,_jsx(_components.code,{children:`PersistentVolume`}),` per device, each pinned to the node that has the device attached:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`49`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`49`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`apiVersion`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`v1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kind`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PersistentVolume`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`rdb-nvme-0`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` labels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` regatta.dev/cluster`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-regattadb`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` capacity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` storage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`2Ti`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` volumeMode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Block`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` accessModes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ReadWriteOnce`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` persistentVolumeReclaimPolicy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Retain`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` storageClassName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`local-nvme`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/dev/nvme1n1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` nodeAffinity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` required`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` nodeSelectorTerms`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`matchExpressions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`kubernetes.io/hostname`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` operator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`In`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` values`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`worker-1`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`---`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`apiVersion`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`v1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kind`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PersistentVolume`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`rdb-nvme-1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` labels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` regatta.dev/cluster`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-regattadb`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` capacity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` storage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`2Ti`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` volumeMode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Block`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` accessModes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ReadWriteOnce`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` persistentVolumeReclaimPolicy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Retain`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` storageClassName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`local-nvme`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/dev/nvme2n1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` nodeAffinity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` required`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` nodeSelectorTerms`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`matchExpressions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`kubernetes.io/hostname`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` operator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`In`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` values`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`worker-1`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A Kubernetes `,_jsx(_components.code,{children:`local`}),` volume needs no CSI driver or provisioner for static binding: Kubernetes mounts the given `,_jsx(_components.code,{children:`path`}),` directly on the node named in `,_jsx(_components.code,{children:`nodeAffinity`}),`. Because both `,_jsx(_components.code,{children:`PersistentVolumes`}),` are pinned to `,_jsx(_components.code,{children:`worker-1`}),`, Kubernetes also schedules the RDB Pod on `,_jsx(_components.code,{children:`worker-1`}),`, since that is the only node where both devices exist.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`capacity.storage`}),` is required by the Kubernetes `,_jsx(_components.code,{children:`PersistentVolume`}),` API itself; it is Kubernetes’ own bookkeeping value for matching `,_jsx(_components.code,{children:`PersistentVolumeClaims`}),` to `,_jsx(_components.code,{children:`PersistentVolumes`}),`, and does not resize or limit the underlying device - RegattaDB uses the raw device directly regardless of this value.`]})}),`\n`,_jsxs(_components.p,{children:[`If you have raw devices on more than one Kubernetes node, repeat this pattern once per node: one pair of `,_jsx(_components.code,{children:`PersistentVolumes`}),` (pinned through `,_jsx(_components.code,{children:`nodeAffinity`}),`) for every node that has its own local devices.`]}),`\n`,_jsxs(Heading,{level:`2`,id:`3-point-your-regattacluster-resource-at-these-persistentvolumes`,children:[`3. Point your RegattaCluster resource at these `,_jsx(_components.code,{children:`PersistentVolumes`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`rdb`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` replicas`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` devices`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` blockStorage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provisioning`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Static`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` size`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`2Ti`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` storageClassName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`local-nvme`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` selector`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` matchLabels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` regatta.dev/cluster`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-regattadb`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`4-apply-and-verify`,children:`4. Apply and verify`}),`\n`,_jsxs(_components.p,{children:[`Apply the `,_jsx(_components.code,{children:`PersistentVolumes`}),`, then apply your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource. With `,_jsx(_components.code,{children:`replicas: 1`}),` and `,_jsx(_components.code,{children:`devices: 2`}),`, the operator expects `,_jsx(_components.code,{children:`1 * 2 = 2`}),` matching `,_jsx(_components.code,{children:`PersistentVolumes`}),`, exactly the two you created. Kubernetes binds one PVC to each `,_jsx(_components.code,{children:`PersistentVolume`}),`; which one binds to which device index is not something a shared selector lets you control directly, but for two identically sized devices on the same `,_jsx(_components.code,{children:`StorageClass`}),` this makes no difference to RegattaDB, since every device is used the same way. Both end up mounted in the single RDB Pod, as `,_jsx(_components.code,{children:`/dev/rdb0`}),` and `,_jsx(_components.code,{children:`/dev/rdb1`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If you need deterministic control over which physical device becomes `,_jsx(_components.code,{children:`/dev/rdb0`}),` versus `,_jsx(_components.code,{children:`/dev/rdb1`}),`, pre-bind each `,_jsx(_components.code,{children:`PersistentVolume`}),` to its expected PVC name with `,_jsx(_components.code,{children:`claimRef`}),` instead of relying only on the selector; see `,_jsx(_components.a,{href:`/self-hosted-deployment/kubernetes/configuration/storage#multiple-rdb-devices-naming-and-readiness`,children:`Multiple RDB Devices: Naming And Readiness`}),` for the exact generated PVC names.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`/dev/rdb0`}),` and `,_jsx(_components.code,{children:`/dev/rdb1`}),` are fixed, operator-assigned paths inside the container; they do not depend on how the host enumerates its own raw devices, so they stay stable across Pod restarts and node reboots.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Example: Two Local NVMe Devices, One RDB Replica","description":"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.","href":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Identify the devices","slug":"1-identify-the-devices","depth":2,"children":[]},{"title":"2. Create a PersistentVolume per device","slug":"2-create-a-persistentvolume-per-device","depth":2,"children":[]},{"title":"3. Point your RegattaCluster resource at these PersistentVolumes","slug":"3-point-your-regattacluster-resource-at-these-persistentvolumes","depth":2,"children":[]},{"title":"4. Apply and verify","slug":"4-apply-and-verify","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"regatta","siteName":"Regatta","title":"Example: Two Local NVMe Devices, One RDB Replica - Regatta","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T14:37:08.886Z","originalFileLocation":"self-hosted-deployment/kubernetes/examples/static-storage-local-nvme.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Regatta\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Example: Two Local NVMe Devices, One RDB Replica - Regatta\">\u003cmeta data-mint-head property=\"og:description\" content=\"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Regatta\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://regatta.mintlify.site/_mintlify/api/og/v2?division=Examples\u0026amp;title=Example%3A+Two+Local+NVMe+Devices%2C+One+RDB+Replica\u0026amp;description=Bind+pre-existing+local+NVMe+devices+to+RDB+using+static+RDB+storage+provisioning.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=b883f378d7be216cab980a767c4dd292908d25763c9d8259f0c69c872e7d7f46\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Example: Two Local NVMe Devices, One RDB Replica - Regatta\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://regatta.mintlify.site/_mintlify/api/og/v2?division=Examples\u0026amp;title=Example%3A+Two+Local+NVMe+Devices%2C+One+RDB+Replica\u0026amp;description=Bind+pre-existing+local+NVMe+devices+to+RDB+using+static+RDB+storage+provisioning.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=b883f378d7be216cab980a767c4dd292908d25763c9d8259f0c69c872e7d7f46\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Regatta\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff6600\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.regatta.dev/#organization\",\"name\":\"Regatta\",\"url\":\"https://docs.regatta.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_Black_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=80ecf4af831aaabfecd51ca1c1dab7a7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.regatta.dev#website\",\"name\":\"Regatta\",\"url\":\"https://docs.regatta.dev\",\"publisher\":{\"@id\":\"https://docs.regatta.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme#webpage\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme\",\"name\":\"Example: Two Local NVMe Devices, One RDB Replica\",\"description\":\"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\",\"dateModified\":\"2026-09-28T14:37:08.886Z\",\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kubernetes Deployment\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Examples\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/quickstart-single-node\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Example: Two Local NVMe Devices, One RDB Replica\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme#article\",\"headline\":\"Example: Two Local NVMe Devices, One RDB Replica\",\"name\":\"Example: Two Local NVMe Devices, One RDB Replica\",\"description\":\"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme\",\"mainEntityOfPage\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme#webpage\"},\"dateModified\":\"2026-09-28T14:37:08.886Z\",\"publisher\":{\"@id\":\"https://docs.regatta.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"}}]}\u003c/script>","agentPointerHref":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme.md","siteName":"Regatta","nav":{"global":null,"anchors":[{"anchor":"Docs Home","icon":"house","pages":[{"title":"Docs Home","href":"/home"}]},{"anchor":"Quickstart","pages":[{"title":"Quickstart","href":"/getting-started/getting-started-using-regatta-cloud"}]},{"anchor":"SQL","icon":"code","pages":[{"title":"SQL","href":"/sql/introduction"}]},{"anchor":"Regatta Cloud","icon":"cloud","pages":[{"title":"Regatta Cloud","href":"/regatta-cloud/regatta-cloud/regatta-cloud"}]},{"anchor":"Self-Hosted Deployment","icon":"server","groups":[{"group":"Self-Hosted Deployment","pages":[{"title":"Prerequisites","href":"/self-hosted-deployment/prerequisites"}]},{"group":"Manual Deployment","pages":[{"title":"RegattaDB Software Modules","href":"/self-hosted-deployment/manual-deployment/regattadb-software-modules"},{"title":"Prepare for Deployment","href":"/self-hosted-deployment/manual-deployment/prepare-for-deployment"},{"title":"High-Level Deployment Steps","href":"/self-hosted-deployment/manual-deployment/high-level-deployment-steps"},{"title":"Deployment Example","href":"/self-hosted-deployment/manual-deployment/deployment-example"}]},{"group":"Regatta Deployment Tool","pages":[{"title":"Introduction","href":"/self-hosted-deployment/rdt/introduction"},{"title":"Prerequisites","href":"/self-hosted-deployment/rdt/prerequisites"},{"title":"Installation","href":"/self-hosted-deployment/rdt/installation"},{"title":"Command Reference","href":"/self-hosted-deployment/rdt/command-reference"},{"group":"Configuration","pages":[{"title":"Configuration Overview","href":"/self-hosted-deployment/rdt/configuration/overview"},{"title":"Creating \u0026 Managing Configs","href":"/self-hosted-deployment/rdt/configuration/creating-and-managing-configs"}]},{"group":"System Setup","pages":[{"title":"System Setup Overview","href":"/self-hosted-deployment/rdt/system-setup/overview"},{"title":"RegattaDB Lifecycle","href":"/self-hosted-deployment/rdt/system-setup/lifecycle"}]},{"group":"Examples","pages":[{"title":"Quickstart: Single-Node RegattaDB","href":"/self-hosted-deployment/rdt/examples/quickstart-single-node"},{"title":"Example: Multi-Node Deployment","href":"/self-hosted-deployment/rdt/examples/multi-node-deployment"},{"title":"Config Recipes","href":"/self-hosted-deployment/rdt/examples/config-recipes"},{"title":"Example: Collecting Debug Information","href":"/self-hosted-deployment/rdt/examples/collecting-debug-info"}]},{"group":"Advanced","pages":[{"title":"Global Options \u0026 Credentials","href":"/self-hosted-deployment/rdt/advanced/global-options-and-credentials"},{"title":"Running RDT in a Container","href":"/self-hosted-deployment/rdt/advanced/running-rdt-in-a-container"},{"title":"Offline Installation","href":"/self-hosted-deployment/rdt/advanced/offline-installation"},{"title":"What Changes on Your Nodes","href":"/self-hosted-deployment/rdt/advanced/node-system-changes"},{"title":"Module \u0026 NUMA Configuration","href":"/self-hosted-deployment/rdt/advanced/module-and-numa-configuration"}]},{"title":"Troubleshooting","href":"/self-hosted-deployment/rdt/troubleshooting"},{"title":"Release Notes","href":"/self-hosted-deployment/rdt/release-notes"}]},{"group":"Kubernetes Deployment","pages":[{"title":"Introduction","href":"/self-hosted-deployment/kubernetes/introduction"},{"title":"Prerequisites","href":"/self-hosted-deployment/kubernetes/prerequisites"},{"title":"Installation","href":"/self-hosted-deployment/kubernetes/installation"},{"group":"Configuration","pages":[{"title":"Configuration Overview","href":"/self-hosted-deployment/kubernetes/configuration/overview"},{"title":"Storage","href":"/self-hosted-deployment/kubernetes/configuration/storage"},{"title":"Networking","href":"/self-hosted-deployment/kubernetes/configuration/networking"},{"title":"Security \u0026 Lifecycle","href":"/self-hosted-deployment/kubernetes/configuration/security-and-lifecycle"},{"title":"Resources \u0026 Scheduling","href":"/self-hosted-deployment/kubernetes/configuration/resources-and-scheduling"}]},{"group":"Examples","pages":[{"title":"Quickstart: Single-Node RegattaCluster","description":"Install the operator and stand up a single-node RegattaDB deployment on Kubernetes end to end.","href":"/self-hosted-deployment/kubernetes/examples/quickstart-single-node"},{"title":"Example: Two Local NVMe Devices, One RDB Replica","href":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme"}]},{"title":"Operations","description":"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.","href":"/self-hosted-deployment/kubernetes/operations"},{"title":"Troubleshooting","href":"/self-hosted-deployment/kubernetes/troubleshooting"},{"title":"Release Notes","href":"/self-hosted-deployment/kubernetes/release-notes"}]},{"group":"Collecting Data","hidden":true,"pages":[{"title":"Installation","href":"/self-hosted-deployment/collecting-data/installation"},{"title":"Setup","href":"/self-hosted-deployment/collecting-data/setup"},{"title":"Execution","href":"/self-hosted-deployment/collecting-data/execution"}]}]},{"anchor":"Drivers \u0026 Clients","icon":"download","pages":[{"title":"Drivers \u0026 Clients","href":"/drivers-and-clients/connecting-applications-to-regatta"}]},{"anchor":"Tuning Performance","icon":"rocket","pages":[{"title":"Tuning Performance","href":"/tuning-performance/introduction/introduction"}]}]},"basePath":"","title":"Example: Two Local NVMe Devices, One RDB Replica - Regatta","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}