2020-06-19 20:52:48 +00:00
|
|
|
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fopenebs%2Frawfile-localpv.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fopenebs%2Frawfile-localpv?ref=badge_shield)
|
|
|
|
|
2020-04-23 13:48:35 +00:00
|
|
|
RawFilePV
|
|
|
|
===
|
|
|
|
|
|
|
|
Kubernetes LocalPVs on Steroids
|
|
|
|
|
2020-04-28 13:22:32 +00:00
|
|
|
Install
|
|
|
|
---
|
|
|
|
`helm install -n kube-system rawfile-csi ./deploy/charts/rawfile-csi/`
|
|
|
|
|
|
|
|
Usage
|
|
|
|
---
|
|
|
|
|
|
|
|
Create a `StorageClass` with your desired options:
|
|
|
|
|
|
|
|
```
|
|
|
|
apiVersion: storage.k8s.io/v1
|
|
|
|
kind: StorageClass
|
|
|
|
metadata:
|
|
|
|
name: my-sc
|
|
|
|
provisioner: rawfile.hamravesh.com
|
|
|
|
reclaimPolicy: Delete
|
|
|
|
volumeBindingMode: WaitForFirstConsumer
|
Support online volume expansion
Summary:
Online volume expansion is a 2 phase process:
1. The backing storage, in this case the raw file, needs to be resized. (i.e. `truncate -s`)
2. The node should be notified, so that it can both refresh its device capacity (i.e. `losetup -c`) and resize the filesystem (`resize2fs`) accordingly.
Although in our case both steps could be performed on the node itself, for the sake of following the semantics of how volume expansion works, we perform step 1 from the controller, and step 2 from the node.
Also, the `external-resizer` component is added which watches for PVC size updates, and notifies the CSI controller about it.
Test Plan:
Setup:
- Deploy
- Create a rawfile-backed pvc, and attach a Deployment to it
- Keep an eye on `rawfile` pod logs in `kube-system` namespace to see if any errors pop out during all scenarios
Scenario 1:
- Increase the size of the pvc
- Exec into the pod and verify that the volume is resized indeed (using `df`)
Scenario 2:
- Decrease deployment's replica to 0
- Increase the size of the pvc. Wait for a couple of minutes.
- Increase deployment's replica to 1
- Exec into the pod and verify that the volume is resized indeed.
Reviewers: bghadiri, mhyousefi, h.marvi, sina_rad
Reviewed By: bghadiri, mhyousefi, sina_rad
Differential Revision: https://phab.hamravesh.ir/D817
2020-06-12 12:12:49 +00:00
|
|
|
allowVolumeExpansion: true
|
2020-04-28 13:22:32 +00:00
|
|
|
```
|
|
|
|
|
2020-04-23 13:48:35 +00:00
|
|
|
Features
|
|
|
|
---
|
|
|
|
|
2020-04-25 21:31:23 +00:00
|
|
|
- [x] Direct I/O: Near-zero disk performance overhead
|
2020-04-23 13:48:35 +00:00
|
|
|
- [x] Dynamic provisioning
|
|
|
|
- [x] Enforced volume size limit
|
|
|
|
- [x] Thin provisioned
|
|
|
|
- [x] Access Modes
|
|
|
|
- [x] ReadWriteOnce
|
|
|
|
- ~~ReadOnlyMany~~
|
|
|
|
- ~~ReadWriteMany~~
|
|
|
|
- [ ] Volume modes
|
|
|
|
- [x] `Filesystem` mode
|
|
|
|
- [ ] `Block` mode
|
2020-04-25 19:39:16 +00:00
|
|
|
- [x] Volume metrics
|
2020-04-23 13:48:35 +00:00
|
|
|
- [ ] Supports fsTypes
|
Support online volume expansion
Summary:
Online volume expansion is a 2 phase process:
1. The backing storage, in this case the raw file, needs to be resized. (i.e. `truncate -s`)
2. The node should be notified, so that it can both refresh its device capacity (i.e. `losetup -c`) and resize the filesystem (`resize2fs`) accordingly.
Although in our case both steps could be performed on the node itself, for the sake of following the semantics of how volume expansion works, we perform step 1 from the controller, and step 2 from the node.
Also, the `external-resizer` component is added which watches for PVC size updates, and notifies the CSI controller about it.
Test Plan:
Setup:
- Deploy
- Create a rawfile-backed pvc, and attach a Deployment to it
- Keep an eye on `rawfile` pod logs in `kube-system` namespace to see if any errors pop out during all scenarios
Scenario 1:
- Increase the size of the pvc
- Exec into the pod and verify that the volume is resized indeed (using `df`)
Scenario 2:
- Decrease deployment's replica to 0
- Increase the size of the pvc. Wait for a couple of minutes.
- Increase deployment's replica to 1
- Exec into the pod and verify that the volume is resized indeed.
Reviewers: bghadiri, mhyousefi, h.marvi, sina_rad
Reviewed By: bghadiri, mhyousefi, sina_rad
Differential Revision: https://phab.hamravesh.ir/D817
2020-06-12 12:12:49 +00:00
|
|
|
- [x] Online expansion: If fs supports it (e.g. ext4, btrfs)
|
2020-04-23 13:48:35 +00:00
|
|
|
- [ ] Online shrinking: If fs supports it (e.g. btrfs)
|
|
|
|
- [ ] Offline expansion/shrinking
|
|
|
|
- [ ] Ephemeral inline volume
|
|
|
|
- [ ] Snapshots: If the fs supports it (e.g. btrfs)
|
2020-06-19 20:52:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fopenebs%2Frawfile-localpv.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fopenebs%2Frawfile-localpv?ref=badge_large)
|