diff options
| author | Viktor Kuzmin <kvaster@gmail.com> | 2022-09-05 16:58:53 +0300 |
|---|---|---|
| committer | Viktor Kuzmin <kvaster@gmail.com> | 2022-09-05 16:58:53 +0300 |
| commit | 413439589f08012a559eb6c11e4a51afdc636b35 (patch) | |
| tree | f0d61b04b565edc0952a6d149c766b70566f94bf | |
| parent | a5808d5f084cb0194bda12aa68ba1807ac213926 (diff) | |
| download | seaweedfs-csi-driver-413439589f08012a559eb6c11e4a51afdc636b35.tar.xz seaweedfs-csi-driver-413439589f08012a559eb6c11e4a51afdc636b35.zip | |
Allow per pv/pvc settings for cache, concurrent writes and uid/gid maps
| -rw-r--r-- | cmd/seaweedfs-csi-driver/main.go | 2 | ||||
| -rw-r--r-- | deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml | 5 | ||||
| -rw-r--r-- | pkg/driver/driver.go | 2 | ||||
| -rw-r--r-- | pkg/driver/mounter_seaweedfs.go | 36 |
4 files changed, 35 insertions, 10 deletions
diff --git a/cmd/seaweedfs-csi-driver/main.go b/cmd/seaweedfs-csi-driver/main.go index 76f5829..8eedce3 100644 --- a/cmd/seaweedfs-csi-driver/main.go +++ b/cmd/seaweedfs-csi-driver/main.go @@ -16,7 +16,7 @@ var ( nodeID = flag.String("nodeid", "", "node id") version = flag.Bool("version", false, "Print the version and exit.") concurrentWriters = flag.Int("concurrentWriters", 32, "limit concurrent goroutine writers if not 0") - cacheSizeMB = flag.Int64("cacheCapacityMB", 0, "local file chunk cache capacity in MB") + cacheSizeMB = flag.Int("cacheCapacityMB", 0, "local file chunk cache capacity in MB") cacheDir = flag.String("cacheDir", os.TempDir(), "local cache directory for file chunks and meta data") uidMap = flag.String("map.uid", "", "map local uid to uid on filer, comma-separated <local_uid>:<filer_uid>") gidMap = flag.String("map.gid", "", "map local gid to gid on filer, comma-separated <local_gid>:<filer_gid>") diff --git a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml index 8e768d3..7c47649 100644 --- a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml +++ b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml @@ -61,6 +61,7 @@ spec: - "--endpoint=$(CSI_ENDPOINT)" - "--filer=$(SEAWEEDFS_FILER)" - "--nodeid=$(NODE_ID)" + - "--cacheDir=/var/cache/seaweedfs" env: - name: CSI_ENDPOINT value: unix:///csi/csi.sock @@ -99,6 +100,8 @@ spec: - name: tls mountPath: /var/run/secrets/app/tls {{- end }} + - name: cache + mountPath: /var/cache/seaweedfs volumes: - name: registration-dir hostPath: @@ -119,6 +122,8 @@ spec: - name: device-dir hostPath: path: /dev + - name: cache + emptyDir: {} {{- if .Values.tlsSecret }} - name: tls secret: diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 55cf0a3..00ef2d9 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -39,7 +39,7 @@ type SeaweedFsDriver struct { filerIndex int grpcDialOption grpc.DialOption ConcurrentWriters int - CacheSizeMB int64 + CacheSizeMB int CacheDir string UidMap string GidMap string diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index 5cbca71..64af21a 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -34,6 +34,25 @@ func newSeaweedFsMounter(volumeID string, path string, collection string, readOn }, nil } +func (seaweedFs *seaweedFsMounter) getOrDefaultContext(key string, defaultValue string) string { + v, ok := seaweedFs.volContext[key] + if ok { + return v + } + return defaultValue +} + +func (seaweedFs *seaweedFsMounter) getOrDefaultContextInt(key string, defaultValue int) int { + v := seaweedFs.getOrDefaultContext(key, "") + if v != "" { + iv, err := strconv.Atoi(v) + if err != nil { + return iv + } + } + return defaultValue +} + func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { glog.V(0).Infof("mounting %v %s to %s", seaweedFs.driver.filers, seaweedFs.path, target) @@ -51,7 +70,7 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { fmt.Sprintf("-collection=%s", seaweedFs.collection), fmt.Sprintf("-filer=%s", strings.Join(filers, ",")), fmt.Sprintf("-filer.path=%s", seaweedFs.path), - fmt.Sprintf("-cacheCapacityMB=%d", seaweedFs.driver.CacheSizeMB), + fmt.Sprintf("-cacheCapacityMB=%d", seaweedFs.getOrDefaultContextInt("cacheSizeMB", seaweedFs.driver.CacheSizeMB)), fmt.Sprintf("-localSocket=%s", GetLocalSocket(seaweedFs.volumeID)), } @@ -78,17 +97,18 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { args = append(args, "-readOnly") } - if seaweedFs.driver.ConcurrentWriters > 0 { - args = append(args, fmt.Sprintf("-concurrentWriters=%d", seaweedFs.driver.ConcurrentWriters)) - } if seaweedFs.driver.CacheDir != "" { args = append(args, fmt.Sprintf("-cacheDir=%s", seaweedFs.driver.CacheDir)) } - if seaweedFs.driver.UidMap != "" { - args = append(args, fmt.Sprintf("-map.uid=%s", seaweedFs.driver.UidMap)) + + if cw := seaweedFs.getOrDefaultContextInt("concurrentWriters", seaweedFs.driver.ConcurrentWriters); cw > 0 { + args = append(args, fmt.Sprintf("-concurrentWriters=%d", cw)) + } + if uidMap := seaweedFs.getOrDefaultContext("uidMap", seaweedFs.driver.UidMap); uidMap != "" { + args = append(args, fmt.Sprintf("-map.uid=%s", uidMap)) } - if seaweedFs.driver.GidMap != "" { - args = append(args, fmt.Sprintf("-map.gid=%s", seaweedFs.driver.GidMap)) + if gidMap := seaweedFs.getOrDefaultContext("gidMap", seaweedFs.driver.GidMap); gidMap != "" { + args = append(args, fmt.Sprintf("-map.gid=%s", gidMap)) } u, err := fuseMount(target, seaweedFsCmd, args) |
