feat(ZFSPV): adding support for applications to create "zfs" flesystem (#15)

Application can now create a storageclass to create zfs filesystem

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-zfspv5
allowVolumeExpansion: true
parameters:
  blocksize: "4k"
  fstype: "zfs"
  poolname: "zfspv-pool"
provisioner: zfs.csi.openebs.io

ZFSPV was supporting ext2/3/4 and xfs filesystem only which
adds one extra filesystem layer on top of ZFS filesystem. So now
we can driectly write to the ZFS filesystem and get the optimal performance
by directly creating ZFS filesystem for storage.

Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
Pawan Prakash Sharma 2019-11-21 19:00:15 +05:30 committed by Kiran Mova
parent 4ffd857191
commit 68db6d2774
13 changed files with 428 additions and 176 deletions

View file

@ -82,31 +82,42 @@ type VolumeInfo struct {
// Capacity of the volume
Capacity string `json:"capacity"`
// BlockSize specifies the blocksize
// which we should use to create the zvol
BlockSize string `json:"blocksize"`
// RecordSize specifies the record size
// for the zfs dataset
RecordSize string `json:"recordsize,omitempty"`
// VolBlockSize specifies the block size for the zvol
VolBlockSize string `json:"volblocksize,omitempty"`
// Compression specifies if the it should
// enabled on the zvol
Compression string `json:"compression"`
Compression string `json:"compression,omitempty"`
// Dedup specifies the deduplication
// should be enabled on the zvol
Dedup string `json:"dedup"`
Dedup string `json:"dedup,omitempty"`
// Encryption specifies the encryption
// should be enabled on the zvol
Encryption string `json:"encryption"`
Encryption string `json:"encryption,omitempty"`
// KeyLocation is the location of key
// for the encryption
KeyLocation string `json:"keylocation"`
KeyLocation string `json:"keylocation,omitempty"`
// KeyFormat specifies format of the
// encryption key
KeyFormat string `json:"keyformat"`
KeyFormat string `json:"keyformat,omitempty"`
// Thinprovision specifies if we should
// thin provisioned the volume or not
ThinProvision string `json:"thinProvision"`
ThinProvision string `json:"thinProvision,omitempty"`
// VolumeType specifies whether the volume is
// zvol or a dataset
VolumeType string `json:"volumeType"`
// FsType specifies filesystem type for the
// zfs volume/dataset
FsType string `json:"fsType,omitempty"`
}