# Static Volumes ## Assigning PVs For security reasons, you might want to use a storage class that does not perform automatic provisioning of PVs. In that case, you want to reference a pre-created volume in the PVC. In nplus, you can do so by setting the volumeName in the values. Please review `values.yaml` as an example: ```yaml database: mounts: data: volumeName: "pv-{{ .component.fullName }}-data" nstl: mounts: data: volumeName: "pv-{{ .component.fullName }}-data" ``` You can also set the environment config volume. Please refer to the environment documentation for that. ``` helm install \ --values samples/environment/demo.yaml \ --values samples/static/values.yaml sample-static nplus/nplus-instance ``` ## Creating PVs https://github.com/ceph/ceph-csi/blob/devel/docs/static-pvc.md ### Data Disk: 1. Create a pool on your cep cluster ``` ceph osd pool create k-lab 64 64 ``` 2. Create a block device pool ``` rbd pool init k-lab ``` 3. Create an image ``` rbd create -s 50G k-lab/pv-sample-static-database-data rbd create -s 50G k-lab/pv-sample-static-nstl-data rbd ls k-lab | grep pv-sample-static- ``` Resize: ``` rbd resize --size 50G k-lab/pv-no-provisioner-database-data --allow-shrink ``` ### File Share: 1. Create a Subvolume (FS) ``` ceph fs subvolume create cephfs pv-no-provisioner-rs-file --size 53687091200 ``` 2. Get the path of the subvolume ``` ceph fs subvolume getpath cephfs pv-no-provisioner-rs-file ``` ### Troubleshooting ``` kubectl describe pv/pv-no-provisioner-rs-file pvc/no-provisioner-rs-file kubectl get volumeattachment ``` ### PV Manifests ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-no-provisioner-database-data spec: accessModes: - ReadWriteOnce capacity: storage: 50Gi csi: driver: rook-ceph.rbd.csi.ceph.com fsType: ext4 nodeStageSecretRef: # node stage secret name name: rook-csi-rbd-node # node stage secret namespace where above secret is created namespace: rook-ceph-external volumeAttributes: # Required options from storageclass parameters need to be added in volumeAttributes clusterID: rook-ceph-external pool: k-lab staticVolume: "true" imageFeatures: layering #mounter: rbd-nbd # volumeHandle should be same as rbd image name volumeHandle: pv-no-provisioner-database-data persistentVolumeReclaimPolicy: Retain # The volumeMode can be either `Filesystem` or `Block` if you are creating Filesystem PVC it should be `Filesystem`, if you are creating Block PV you need to change it to `Block` volumeMode: Filesystem storageClassName: ceph-rbd --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-no-provisioner-nstl-data spec: accessModes: - ReadWriteOnce capacity: storage: 50Gi csi: driver: rook-ceph.cephfs.csi.ceph.com fsType: ext4 nodeStageSecretRef: # node stage secret name name: rook-csi-rbd-node # node stage secret namespace where above secret is created namespace: rook-ceph-external volumeAttributes: # Required options from storageclass parameters need to be added in volumeAttributes clusterID: rook-ceph-external pool: k-lab staticVolume: "true" imageFeatures: layering #mounter: rbd-nbd # volumeHandle should be same as rbd image name volumeHandle: pv-no-provisioner-nstl-data persistentVolumeReclaimPolicy: Retain # The volumeMode can be either `Filesystem` or `Block` if you are creating Filesystem PVC it should be `Filesystem`, if you are creating Block PV you need to change it to `Block` volumeMode: Filesystem storageClassName: ceph-rbd --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-no-provisioner-rs-file spec: accessModes: - ReadWriteMany capacity: storage: 50Gi csi: driver: cephfs.csi.ceph.com nodeStageSecretRef: name: rook-csi-cephfs-secret #rook-csi-cephfs-node namespace: rook-ceph-external volumeAttributes: # Required options from storageclass parameters need to be added in volumeAttributes clusterID: rook-ceph-external fsName: cephfs pool: cephfs_data staticVolume: "true" # rootPath kriegt man per ceph fs subvolume getpath cephfs pv-no-provisioner-rs-file rootPath: "/volumes/_nogroup/pv-no-provisioner-rs-file/3016f512-bc19-4bfb-8eb2-5118430fbbe5" #mounter: rbd-nbd # volumeHandle should be same as rbd image name volumeHandle: pv-no-provisioner-rs-file persistentVolumeReclaimPolicy: Retain # The volumeMode can be either `Filesystem` or `Block` if you are creating Filesystem PVC it should be `Filesystem`, if you are creating Block PV you need to change it to `Block` volumeMode: Filesystem storageClassName: cephfs ```