Skip to main content
Version: 3.3

Raw Block Devices

The Portworx CSI Driver supports both File and Block volume types in Kubernetes and OpenShift cluster PVCs.

Use cases for Raw Block Devices​

If your application has a requirement to consume a raw block device as opposed to a mounted filesystem, this is a perfect use case for Portworx CSI Raw Block devices.

note

Currently, only ReadWriteOnce PVCs can be created with the block volume mode.

Create and use raw block PVCs​

In this example we are using the px-csi-db storage class out of the box. Please refer CSI Enabled Storage Classes for list of available CSI enabled storage classes offered by Portworx.

  1. Create a PVC spec that references the portworx-csi-sc as seen below in a YAML file named raw-block-pvc.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
    name: px-csi-raw-block-pvc
    spec:
    volumeMode: Block
    storageClassName: px-csi-db
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 2Gi
  2. Apply the raw-block-pvc.yaml spec to create the raw block PVC:

    kubectl apply -f raw-block-pvc.yaml
  3. Create a deployment SPEC that references the above raw block PVC in raw-block-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: ioping
    spec:
    selector:
    matchLabels:
    app: ioping
    strategy:
    rollingUpdate:
    maxSurge: 1
    maxUnavailable: 1
    type: RollingUpdate
    replicas: 1
    template:
    metadata:
    labels:
    app: ioping
    version: "1"
    spec:
    containers:
    - name: ioping
    image: hpestorage/ioping
    command: [ "ioping" ]
    args: [ "/dev/xvda" ]
    volumeDevices:
    - name: raw-device
    devicePath: /dev/xvda
    volumes:
    - name: raw-device
    persistentVolumeClaim:
    claimName: px-csi-raw-block-pvc
  4. Apply the raw-block-deployment.yaml spec to create the deployment utilizing our raw block PVC:

    kubectl apply -f raw-block-deployment.yaml
In this topic: