From 45ba112fa1a77734d4d6f68eee45b25def53bb18 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 11 Apr 2021 12:15:36 -0700 Subject: [PATCH] support configurable cache directory fix https://github.com/seaweedfs/seaweedfs-csi-driver/issues/20 --- cmd/seaweedfs-csi-driver/main.go | 2 ++ deploy/kubernetes/seaweedfs-csi.yaml | 6 ++++++ pkg/driver/driver.go | 1 + pkg/driver/mounter_seaweedfs.go | 3 +++ 4 files changed, 12 insertions(+) diff --git a/cmd/seaweedfs-csi-driver/main.go b/cmd/seaweedfs-csi-driver/main.go index e83b0b5..1320de0 100644 --- a/cmd/seaweedfs-csi-driver/main.go +++ b/cmd/seaweedfs-csi-driver/main.go @@ -17,6 +17,7 @@ var ( 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", 1000, "local file chunk cache capacity in MB (0 will disable cache)") + cacheDir = flag.String("cacheDir", os.TempDir(), "local cache directory for file chunks and meta data") ) func main() { @@ -37,5 +38,6 @@ func main() { drv := driver.NewSeaweedFsDriver(*filer, *nodeID, *endpoint) drv.ConcurrentWriters = *concurrentWriters drv.CacheSizeMB = *cacheSizeMB + drv.CacheDir = *cacheDir drv.Run() } diff --git a/deploy/kubernetes/seaweedfs-csi.yaml b/deploy/kubernetes/seaweedfs-csi.yaml index 2317fc4..6953482 100644 --- a/deploy/kubernetes/seaweedfs-csi.yaml +++ b/deploy/kubernetes/seaweedfs-csi.yaml @@ -298,6 +298,7 @@ spec: - "--filer=$(SEAWEEDFS_FILER)" - "--nodeid=$(NODE_ID)" - "--cacheCapacityMB=$(SEAWEEDFS_CACHE_CAPACITY_MB)" + - "--cacheDir=$(SEAWEEDFS_CACHE_DIR)" env: - name: CSI_ENDPOINT value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock @@ -309,6 +310,8 @@ spec: fieldPath: spec.nodeName - name: SEAWEEDFS_CACHE_CAPACITY_MB value: "1000" + - name: SEAWEEDFS_CACHE_DIR + value: /tmp imagePullPolicy: "Always" volumeMounts: - name: socket-dir @@ -369,6 +372,7 @@ spec: - "--filer=$(SEAWEEDFS_FILER)" - "--nodeid=$(NODE_ID)" - "--cacheCapacityMB=$(SEAWEEDFS_CACHE_CAPACITY_MB)" + - "--cacheDir=$(SEAWEEDFS_CACHE_DIR)" env: - name: CSI_ENDPOINT value: unix:///csi/csi.sock @@ -380,6 +384,8 @@ spec: fieldPath: spec.nodeName - name: SEAWEEDFS_CACHE_CAPACITY_MB value: "1000" + - name: SEAWEEDFS_CACHE_DIR + value: /tmp imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-dir diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 8307eb8..cad10b6 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -39,6 +39,7 @@ type SeaweedFsDriver struct { grpcDialOption grpc.DialOption ConcurrentWriters int CacheSizeMB int64 + CacheDir string } func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver { diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index 2ed1238..c46d8c4 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -51,6 +51,9 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) error { 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)) + } err := fuseMount(target, seaweedFsCmd, args) if err != nil { glog.Errorf("mount %s %s to %s: %s", seaweedFs.driver.filer, seaweedFs.bucketName, target, err)