Repository: fluid-cloudnative/fluid
Pull request #4126 (2024-05-24 02:27:36)

upgrade jindocache to 6.4.0 version
<!-- 
Please make sure you have read and understood the contributing guidelines;
https://github.com/fluid-cloudnative/fluid/blob/master/CONTRIBUTING.md-->

### Ⅰ. Describe what this PR does


### Ⅱ. Does this pull request fix one issue?
<!--If so, add "fixes #xxxx" so that the issue will be closed when this PR is merged (for example, "fixes #15" to close Issue #15). Otherwise, add "NONE" -->
fixes #XXXX

### Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.


### Ⅳ. Describe how to verify it


### Ⅴ. Special notes for reviews

fluid-e2e-bot[bot]: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
**Once this PR has been reviewed and has the lgtm label**, please assign ronggu for approval by writing `/assign @ronggu` in a comment. For more information see:[The Kubernetes Code Review Process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process).

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=fluid-cloudnative%2Ffluid).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/fluid-cloudnative/fluid/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["ronggu"]} -->
sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=fluid-cloudnative_fluid&pullRequest=4126) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=fluid-cloudnative_fluid&pullRequest=4126&resolved=false&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=fluid-cloudnative_fluid&pullRequest=4126&resolutions=WONTFIX)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=fluid-cloudnative_fluid&pullRequest=4126&resolved=false&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/no-data-16px.png '') No data about Coverage  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [24.5% Duplication on New Code](https://sonarcloud.io/component_measures?id=fluid-cloudnative_fluid&pullRequest=4126&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=fluid-cloudnative_fluid&pullRequest=4126)



Patch:
diff --git a/api/v1alpha1/openapi_generated.go b/api/v1alpha1/openapi_generated.go
index b45c5488..9819695e 100644
--- a/api/v1alpha1/openapi_generated.go
+++ b/api/v1alpha1/openapi_generated.go
@@ -120,11 +120,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore":                schema_fluid_cloudnative_fluid_api_v1alpha1_TieredStore(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.User":                       schema_fluid_cloudnative_fluid_api_v1alpha1_User(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VersionSpec":                schema_fluid_cloudnative_fluid_api_v1alpha1_VersionSpec(ref),
+		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec":   schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardClientSocketSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec":   schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardCompTemplateSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntime":            schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntime(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntimeList":        schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeList(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntimeSpec":        schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref),
-		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec":           schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardSockSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VolumeSource":               schema_fluid_cloudnative_fluid_api_v1alpha1_VolumeSource(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.WaitingStatus":              schema_fluid_cloudnative_fluid_api_v1alpha1_WaitingStatus(ref),
 	}
@@ -6497,6 +6497,102 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VersionSpec(ref common.Referenc
 	}
 }
 
+func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardClientSocketSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "VineyardClientSocketSpec holds the configurations for vineyard client socket",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"image": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"imageTag": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image Tag for Vineyard Fuse Default is `v0.21.5`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"imagePullPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"env": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Environment variables that will be used by Vineyard Fuse. Default is not set.",
+							Type:        []string{"object"},
+							AdditionalProperties: &spec.SchemaOrBool{
+								Allows: true,
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"cleanPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"resources": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
+							Default:     map[string]interface{}{},
+							Ref:         ref("k8s.io/api/core/v1.ResourceRequirements"),
+						},
+					},
+					"networkMode": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Whether to use hostnetwork or not Default is HostNetwork",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"podMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
+							Default:     map[string]interface{}{},
+							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata"),
+						},
+					},
+					"options": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Options for configuring vineyardd parameters. Supported options are as follows.\n  reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.\n                  Default is true.\n  allocator: (String) The allocator used by vineyardd, could be \"dlmalloc\" or \"mimalloc\".\n             Default is \"dlmalloc\".\n  compression: (Bool) Compress before migration or spilling.\n               Default is true.\n  coredump: (Bool) Enable coredump core dump when been aborted.\n            Default is false.\n  meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds\n\t\t\t\t   Default is 60.\n  etcd_endpoint: (String) The endpoint of etcd.\n                 Default is same as the etcd endpoint of vineyard worker.\n  etcd_prefix: (String) Metadata path prefix in etcd.\n               Default is \"/vineyard\".\n  size: (String) shared memory size for vineyardd.\n                 1024M, 1024000, 1G, or 1Gi.\n                 Default is \"0\", which means no cache.\n                 When the size is not set to \"0\", it should be greater than the 2048 bytes(2K).\n  spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.\n              Default is \"\".\n  spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.\n\t\t\t\t\t   Default is 0.3.\n  spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.\n\t\t\t\t\t   Default is 0.8.\nDefault is as follows. fuse:\n  options:\n    size: \"0\"\n    etcd_endpoint: \"http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}\"\n\t   etcd_prefix: \"/vineyard\"",
+							Type:        []string{"object"},
+							AdditionalProperties: &spec.SchemaOrBool{
+								Allows: true,
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+		Dependencies: []string{
+			"github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "k8s.io/api/core/v1.ResourceRequirements"},
+	}
+}
+
 func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardCompTemplateSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -6767,7 +6863,7 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref common.
 						SchemaProps: spec.SchemaProps{
 							Description: "Fuse holds the configurations for Vineyard client socket. Note that the \"Fuse\" here is kept just for API consistency, VineyardRuntime mount a socket file instead of a FUSE filesystem to make data cache available. Applications can connect to the vineyard runtime components through IPC or RPC. IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC. If the socket file is not mounted, the connection will fall back to RPC.",
 							Default:     map[string]interface{}{},
-							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec"),
+							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec"),
 						},
 					},
 					"tieredstore": {
@@ -6809,87 +6905,7 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref common.
 			},
 		},
 		Dependencies: []string{
-			"github.com/fluid-cloudnative/fluid/api/v1alpha1.MasterSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec", "k8s.io/api/core/v1.Volume"},
-	}
-}
-
-func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardSockSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
-	return common.OpenAPIDefinition{
-		Schema: spec.Schema{
-			SchemaProps: spec.SchemaProps{
-				Description: "VineyardSockSpec holds the configurations for vineyard client socket",
-				Type:        []string{"object"},
-				Properties: map[string]spec.Schema{
-					"image": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"imageTag": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image Tag for Vineyard Fuse Default is `v0.21.5`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"imagePullPolicy": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"env": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Environment variables that will be used by Vineyard Fuse. Default is not set.",
-							Type:        []string{"object"},
-							AdditionalProperties: &spec.SchemaOrBool{
-								Allows: true,
-								Schema: &spec.Schema{
-									SchemaProps: spec.SchemaProps{
-										Default: "",
-										Type:    []string{"string"},
-										Format:  "",
-									},
-								},
-							},
-						},
-					},
-					"cleanPolicy": {
-						SchemaProps: spec.SchemaProps{
-							Description: "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"resources": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
-							Default:     map[string]interface{}{},
-							Ref:         ref("k8s.io/api/core/v1.ResourceRequirements"),
-						},
-					},
-					"networkMode": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Whether to use hostnetwork or not Default is HostNetwork",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"podMetadata": {
-						SchemaProps: spec.SchemaProps{
-							Description: "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
-							Default:     map[string]interface{}{},
-							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata"),
-						},
-					},
-				},
-			},
-		},
-		Dependencies: []string{
-			"github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "k8s.io/api/core/v1.ResourceRequirements"},
+			"github.com/fluid-cloudnative/fluid/api/v1alpha1.MasterSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec", "k8s.io/api/core/v1.Volume"},
 	}
 }
 
diff --git a/api/v1alpha1/swagger.json b/api/v1alpha1/swagger.json
index e159aa0d..0b1a3e35 100644
--- a/api/v1alpha1/swagger.json
+++ b/api/v1alpha1/swagger.json
@@ -3604,6 +3604,58 @@
         }
       }
     },
+    ".VineyardClientSocketSpec": {
+      "description": "VineyardClientSocketSpec holds the configurations for vineyard client socket",
+      "type": "object",
+      "properties": {
+        "cleanPolicy": {
+          "description": "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
+          "type": "string"
+        },
+        "env": {
+          "description": "Environment variables that will be used by Vineyard Fuse. Default is not set.",
+          "type": "object",
+          "additionalProperties": {
+            "type": "string",
+            "default": ""
+          }
+        },
+        "image": {
+          "description": "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
+          "type": "string"
+        },
+        "imagePullPolicy": {
+          "description": "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
+          "type": "string"
+        },
+        "imageTag": {
+          "description": "Image Tag for Vineyard Fuse Default is `v0.21.5`",
+          "type": "string"
+        },
+        "networkMode": {
+          "description": "Whether to use hostnetwork or not Default is HostNetwork",
+          "type": "string"
+        },
+        "options": {
+          "description": "Options for configuring vineyardd parameters. Supported options are as follows.\n  reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.\n                  Default is true.\n  allocator: (String) The allocator used by vineyardd, could be \"dlmalloc\" or \"mimalloc\".\n             Default is \"dlmalloc\".\n  compression: (Bool) Compress before migration or spilling.\n               Default is true.\n  coredump: (Bool) Enable coredump core dump when been aborted.\n            Default is false.\n  meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds\n\t\t\t\t   Default is 60.\n  etcd_endpoint: (String) The endpoint of etcd.\n                 Default is same as the etcd endpoint of vineyard worker.\n  etcd_prefix: (String) Metadata path prefix in etcd.\n               Default is \"/vineyard\".\n  size: (String) shared memory size for vineyardd.\n                 1024M, 1024000, 1G, or 1Gi.\n                 Default is \"0\", which means no cache.\n                 When the size is not set to \"0\", it should be greater than the 2048 bytes(2K).\n  spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.\n              Default is \"\".\n  spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.\n\t\t\t\t\t   Default is 0.3.\n  spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.\n\t\t\t\t\t   Default is 0.8.\nDefault is as follows. fuse:\n  options:\n    size: \"0\"\n    etcd_endpoint: \"http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}\"\n\t   etcd_prefix: \"/vineyard\"",
+          "type": "object",
+          "additionalProperties": {
+            "type": "string",
+            "default": ""
+          }
+        },
+        "podMetadata": {
+          "description": "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
+          "default": {},
+          "$ref": "#/definitions/.PodMetadata"
+        },
+        "resources": {
+          "description": "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
+          "default": {},
+          "$ref": "#/definitions/v1.ResourceRequirements"
+        }
+      }
+    },
     ".VineyardCompTemplateSpec": {
       "description": "VineyardCompTemplateSpec is the common configurations for vineyard components including Master and Worker.",
       "type": "object",
@@ -3747,7 +3799,7 @@
         "fuse": {
           "description": "Fuse holds the configurations for Vineyard client socket. Note that the \"Fuse\" here is kept just for API consistency, VineyardRuntime mount a socket file instead of a FUSE filesystem to make data cache available. Applications can connect to the vineyard runtime components through IPC or RPC. IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC. If the socket file is not mounted, the connection will fall back to RPC.",
           "default": {},
-          "$ref": "#/definitions/.VineyardSockSpec"
+          "$ref": "#/definitions/.VineyardClientSocketSpec"
         },
         "master": {
           "description": "Master holds the configurations for Vineyard Master component Represents the Etcd component in Vineyard",
@@ -3784,50 +3836,6 @@
         }
       }
     },
-    ".VineyardSockSpec": {
-      "description": "VineyardSockSpec holds the configurations for vineyard client socket",
-      "type": "object",
-      "properties": {
-        "cleanPolicy": {
-          "description": "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
-          "type": "string"
-        },
-        "env": {
-          "description": "Environment variables that will be used by Vineyard Fuse. Default is not set.",
-          "type": "object",
-          "additionalProperties": {
-            "type": "string",
-            "default": ""
-          }
-        },
-        "image": {
-          "description": "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
-          "type": "string"
-        },
-        "imagePullPolicy": {
-          "description": "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
-          "type": "string"
-        },
-        "imageTag": {
-          "description": "Image Tag for Vineyard Fuse Default is `v0.21.5`",
-          "type": "string"
-        },
-        "networkMode": {
-          "description": "Whether to use hostnetwork or not Default is HostNetwork",
-          "type": "string"
-        },
-        "podMetadata": {
-          "description": "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
-          "default": {},
-          "$ref": "#/definitions/.PodMetadata"
-        },
-        "resources": {
-          "description": "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
-          "default": {},
-          "$ref": "#/definitions/v1.ResourceRequirements"
-        }
-      }
-    },
     ".VolumeSource": {
       "description": "VolumeSource defines volume source and volume claim template.",
       "type": "object",
diff --git a/api/v1alpha1/vineyardruntime_types.go b/api/v1alpha1/vineyardruntime_types.go
index cb2ad0ca..c63cf955 100644
--- a/api/v1alpha1/vineyardruntime_types.go
+++ b/api/v1alpha1/vineyardruntime_types.go
@@ -151,8 +151,8 @@ type MasterSpec struct {
 	ExternalEndpoint ExternalEndpointSpec `json:"endpoint,omitempty"`
 }
 
-// VineyardSockSpec holds the configurations for vineyard client socket
-type VineyardSockSpec struct {
+// VineyardClientSocketSpec holds the configurations for vineyard client socket
+type VineyardClientSocketSpec struct {
 	// Image for Vineyard Fuse
 	// Default is `vineyardcloudnative/vineyard-fluid-fuse`
 	// +optional
@@ -196,6 +196,42 @@ type VineyardSockSpec struct {
 	// PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.
 	// +optional
 	PodMetadata PodMetadata `json:"podMetadata,omitempty"`
+
+	// Options for configuring vineyardd parameters.
+	// Supported options are as follows.
+	//   reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+	//                   Default is true.
+	//   allocator: (String) The allocator used by vineyardd, could be "dlmalloc" or "mimalloc".
+	//              Default is "dlmalloc".
+	//   compression: (Bool) Compress before migration or spilling.
+	//                Default is true.
+	//   coredump: (Bool) Enable coredump core dump when been aborted.
+	//             Default is false.
+	//   meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+	//				   Default is 60.
+	//   etcd_endpoint: (String) The endpoint of etcd.
+	//                  Default is same as the etcd endpoint of vineyard worker.
+	//   etcd_prefix: (String) Metadata path prefix in etcd.
+	//                Default is "/vineyard".
+	//   size: (String) shared memory size for vineyardd.
+	//                  1024M, 1024000, 1G, or 1Gi.
+	//                  Default is "0", which means no cache.
+	//                  When the size is not set to "0", it should be greater than the 2048 bytes(2K).
+	//   spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+	//               Default is "".
+	//   spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+	//					   Default is 0.3.
+	//   spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+	//					   Default is 0.8.
+	// Default is as follows.
+	// fuse:
+	//   options:
+	//     size: "0"
+	//     etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+	//	   etcd_prefix: "/vineyard"
+	//
+	// +optional
+	Options map[string]string `json:"options,omitempty"`
 }
 
 // VineyardRuntimeSpec defines the desired state of VineyardRuntime
@@ -220,7 +256,7 @@ type VineyardRuntimeSpec struct {
 	// IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC.
 	// If the socket file is not mounted, the connection will fall back to RPC.
 	// +optional
-	Fuse VineyardSockSpec `json:"fuse,omitempty"`
+	Fuse VineyardClientSocketSpec `json:"fuse,omitempty"`
 
 	// Tiered storage used by vineyardd
 	// The MediumType can only be `MEM` and `SSD`
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index 52e1a9c9..e1aae252 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -2831,6 +2831,37 @@ func (in *VersionSpec) DeepCopy() *VersionSpec {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VineyardClientSocketSpec) DeepCopyInto(out *VineyardClientSocketSpec) {
+	*out = *in
+	if in.Env != nil {
+		in, out := &in.Env, &out.Env
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+	in.Resources.DeepCopyInto(&out.Resources)
+	in.PodMetadata.DeepCopyInto(&out.PodMetadata)
+	if in.Options != nil {
+		in, out := &in.Options, &out.Options
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VineyardClientSocketSpec.
+func (in *VineyardClientSocketSpec) DeepCopy() *VineyardClientSocketSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(VineyardClientSocketSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *VineyardCompTemplateSpec) DeepCopyInto(out *VineyardCompTemplateSpec) {
 	*out = *in
@@ -2969,30 +3000,6 @@ func (in *VineyardRuntimeSpec) DeepCopy() *VineyardRuntimeSpec {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *VineyardSockSpec) DeepCopyInto(out *VineyardSockSpec) {
-	*out = *in
-	if in.Env != nil {
-		in, out := &in.Env, &out.Env
-		*out = make(map[string]string, len(*in))
-		for key, val := range *in {
-			(*out)[key] = val
-		}
-	}
-	in.Resources.DeepCopyInto(&out.Resources)
-	in.PodMetadata.DeepCopyInto(&out.PodMetadata)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VineyardSockSpec.
-func (in *VineyardSockSpec) DeepCopy() *VineyardSockSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(VineyardSockSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *VolumeSource) DeepCopyInto(out *VolumeSource) {
 	*out = *in
diff --git a/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml b/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
index 07dc3055..c724b36f 100644
--- a/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
+++ b/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
@@ -122,6 +122,32 @@ spec:
                     - ""
                     - ContainerNetwork
                     type: string
+                  options:
+                    additionalProperties:
+                      type: string
+                    description: 'Options for configuring vineyardd parameters. Supported
+                      options are as follows. reserve_memory: (Bool) Whether to reserving
+                      enough physical memory pages for vineyardd. Default is true.
+                      allocator: (String) The allocator used by vineyardd, could be
+                      "dlmalloc" or "mimalloc". Default is "dlmalloc". compression:
+                      (Bool) Compress before migration or spilling. Default is true.
+                      coredump: (Bool) Enable coredump core dump when been aborted.
+                      Default is false. meta_timeout: (Int) Timeout period before
+                      waiting the metadata service to be ready, in seconds Default
+                      is 60. etcd_endpoint: (String) The endpoint of etcd. Default
+                      is same as the etcd endpoint of vineyard worker. etcd_prefix:
+                      (String) Metadata path prefix in etcd. Default is "/vineyard".
+                      size: (String) shared memory size for vineyardd. 1024M, 1024000,
+                      1G, or 1Gi. Default is "0", which means no cache. When the size
+                      is not set to "0", it should be greater than the 2048 bytes(2K).
+                      spill_path: (String) Path to spill temporary files, if not set,
+                      spilling will be disabled. Default is "". spill_lower_rate:
+                      (Double) The lower rate of memory usage to trigger spilling.
+                      Default is 0.3. spill_upper_rate: (Double) The upper rate of
+                      memory usage to stop spilling. Default is 0.8. Default is as
+                      follows. fuse: options: size: "0" etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+                      etcd_prefix: "/vineyard"'
+                    type: object
                   podMetadata:
                     description: PodMetadata defines labels and annotations that will
                       be propagated to Vineyard's pods.
diff --git a/charts/fluid/fluid/values.yaml b/charts/fluid/fluid/values.yaml
index 7641e225..7e2145ae 100644
--- a/charts/fluid/fluid/values.yaml
+++ b/charts/fluid/fluid/values.yaml
@@ -81,9 +81,9 @@ runtime:
     engine: jindocache
     queryUfsTotal: true
     smartdata:
-      image: registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0
+      image: registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0
     fuse:
-      image: registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.2.0
+      image: registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.4.0
     controller:
       image: fluidcloudnative/jindoruntime-controller:v1.0.1-1be5869
     init:
diff --git a/charts/jindocache/CHANGELOG.md b/charts/jindocache/CHANGELOG.md
index 915b8673..27738c0e 100644
--- a/charts/jindocache/CHANGELOG.md
+++ b/charts/jindocache/CHANGELOG.md
@@ -108,3 +108,8 @@ Fix worker's annotations for pod spec overwrites master's annotations
 1.0.2
 Delete runtime's fsGroup
 Mount ufs volumes according to dataset's accessModes
+
+1.0.3
+Fix random read cache block error problem with small probability
+Support write cache to different node with one iostream
+Support rdma network
\ No newline at end of file
diff --git a/charts/jindocache/Chart.yaml b/charts/jindocache/Chart.yaml
index 40744b91..c169ffd4 100755
--- a/charts/jindocache/Chart.yaml
+++ b/charts/jindocache/Chart.yaml
@@ -1,5 +1,5 @@
 apiVersion: v2
-appVersion: 6.2.0
+appVersion: 6.4.0
 version: 1.0.0
 description: FileSystem on the cloud based on Aliyun Object Storage aimed for data
   acceleration.
diff --git a/charts/jindocache/values.yaml b/charts/jindocache/values.yaml
index ab52049d..97229fee 100644
--- a/charts/jindocache/values.yaml
+++ b/charts/jindocache/values.yaml
@@ -4,7 +4,7 @@
 
 
 image: registry-vpc.__ACK_REGION_ID__.aliyuncs.com/jindo/smartdata
-imageTag: "6.2.0"
+imageTag: "6.4.0"
 imagePullPolicy: Always
 
 initPortCheck:
@@ -15,7 +15,7 @@ initPortCheck:
   portsToCheck: ""
 
 fuseImage: registry-vpc.__ACK_REGION_ID__.aliyuncs.com/jindo/jindo-fuse
-fuseImageTag: "6.2.0"
+fuseImageTag: "6.4.0"
 fuseImagePullPolicy: "Always"
 
 user: 0
diff --git a/charts/vineyard/templates/fuse/daemonset.yaml b/charts/vineyard/templates/fuse/daemonset.yaml
index e6c9b5a0..f2b533b7 100644
--- a/charts/vineyard/templates/fuse/daemonset.yaml
+++ b/charts/vineyard/templates/fuse/daemonset.yaml
@@ -90,6 +90,10 @@ spec:
             value: {{ .Values.fuse.targetPath }}/rpc-conf
           - name: PRESTOP_MARKER
             value: /tmp/prestop-marker
+          {{- range $key, $value := .Values.fuse.options }}
+          - name: "{{ upper $key }}"
+            value: "{{ $value }}"
+          {{- end }}
           {{- range $key, $value := .Values.fuse.env }}
           - name: "{{ $key }}"
             value: "{{ $value }}"
diff --git a/charts/vineyard/templates/worker/statefulset.yaml b/charts/vineyard/templates/worker/statefulset.yaml
index ff85855d..6189503d 100644
--- a/charts/vineyard/templates/worker/statefulset.yaml
+++ b/charts/vineyard/templates/worker/statefulset.yaml
@@ -86,7 +86,7 @@ spec:
           command:
             - /usr/local/bin/vineyardd
             - --socket
-            - /var/run/vineyard/vineyard.sock
+            - /var/run/vineyard/vineyard-worker.sock
             - --size
             - "{{ include "vineyard.worker.size" . }}"
             {{- if eq (toString (index .Values.worker.options "vineyardd.reserve.memory")) "true" }}
@@ -111,6 +111,10 @@ spec:
             - --log_dir
             - /var/log/vineyard
             {{- end }}
+          lifecycle:
+            preStop:
+              exec:
+                command: ["sh", "-c", "rm -f /var/run/vineyard/vineyard-worker.sock"]
           env:
           - name: VINEYARDD_NAME
             value: {{ template "vineyard.fullname" . }}-vineyardd
@@ -163,7 +167,7 @@ spec:
             exec:
               command:
               - ls
-              - /var/run/vineyard/vineyard.sock
+              - /var/run/vineyard/vineyard-worker.sock
             initialDelaySeconds: 15
             periodSeconds: 10
             failureThreshold: 10
diff --git a/charts/vineyard/values.yaml b/charts/vineyard/values.yaml
index 4ff5a773..f395ff73 100644
--- a/charts/vineyard/values.yaml
+++ b/charts/vineyard/values.yaml
@@ -133,6 +133,8 @@ fuse:
   targetPath: ""
   nodeSelector: {}
   hostPID: false
+  options:
+    size: "0"
 
 owner:
   enabled: false
diff --git a/config/crd/bases/data.fluid.io_vineyardruntimes.yaml b/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
index 07dc3055..c724b36f 100644
--- a/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
+++ b/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
@@ -122,6 +122,32 @@ spec:
                     - ""
                     - ContainerNetwork
                     type: string
+                  options:
+                    additionalProperties:
+                      type: string
+                    description: 'Options for configuring vineyardd parameters. Supported
+                      options are as follows. reserve_memory: (Bool) Whether to reserving
+                      enough physical memory pages for vineyardd. Default is true.
+                      allocator: (String) The allocator used by vineyardd, could be
+                      "dlmalloc" or "mimalloc". Default is "dlmalloc". compression:
+                      (Bool) Compress before migration or spilling. Default is true.
+                      coredump: (Bool) Enable coredump core dump when been aborted.
+                      Default is false. meta_timeout: (Int) Timeout period before
+                      waiting the metadata service to be ready, in seconds Default
+                      is 60. etcd_endpoint: (String) The endpoint of etcd. Default
+                      is same as the etcd endpoint of vineyard worker. etcd_prefix:
+                      (String) Metadata path prefix in etcd. Default is "/vineyard".
+                      size: (String) shared memory size for vineyardd. 1024M, 1024000,
+                      1G, or 1Gi. Default is "0", which means no cache. When the size
+                      is not set to "0", it should be greater than the 2048 bytes(2K).
+                      spill_path: (String) Path to spill temporary files, if not set,
+                      spilling will be disabled. Default is "". spill_lower_rate:
+                      (Double) The lower rate of memory usage to trigger spilling.
+                      Default is 0.3. spill_upper_rate: (Double) The upper rate of
+                      memory usage to stop spilling. Default is 0.8. Default is as
+                      follows. fuse: options: size: "0" etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+                      etcd_prefix: "/vineyard"'
+                    type: object
                   podMetadata:
                     description: PodMetadata defines labels and annotations that will
                       be propagated to Vineyard's pods.
diff --git a/docs/en/dev/api_doc.md b/docs/en/dev/api_doc.md
index a8a98c29..fa854f51 100644
--- a/docs/en/dev/api_doc.md
+++ b/docs/en/dev/api_doc.md
@@ -2392,8 +2392,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -5293,7 +5293,7 @@ string
 <a href="#data.fluid.io/v1alpha1.JindoFuseSpec">JindoFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>)
 </p>
 <p>
 </p>
@@ -7516,8 +7516,8 @@ bool
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinCompTemplateSpec">ThinCompTemplateSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>)
 </p>
 <p>
 </p>
@@ -7806,9 +7806,9 @@ Kubernetes core/v1.NodeAffinity
 <a href="#data.fluid.io/v1alpha1.JuiceFSRuntimeSpec">JuiceFSRuntimeSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.Metadata">Metadata</a>, 
 <a href="#data.fluid.io/v1alpha1.Processor">Processor</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
 </p>
 <p>
 <p>PodMetadata defines subgroup properties of metav1.ObjectMeta</p>
@@ -9977,6 +9977,183 @@ string
 </tr>
 </tbody>
 </table>
+<h3 id="data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
+</p>
+<p>
+<p>VineyardClientSocketSpec holds the configurations for vineyard client socket</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image for Vineyard Fuse
+Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imageTag</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image Tag for Vineyard Fuse
+Default is <code>v0.21.5</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullPolicy</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image pull policy for Vineyard Fuse
+Default is <code>IfNotPresent</code>
+Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>env</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Environment variables that will be used by Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>cleanPolicy</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
+FuseCleanPolicy
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>CleanPolicy decides when to clean Vineyard Fuse pods.
+Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
+OnDemand cleans fuse pod once th fuse pod on some node is not needed
+OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
+Defaults to OnRuntimeDeleted</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>resources</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
+Kubernetes core/v1.ResourceRequirements
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>networkMode</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.NetworkMode">
+NetworkMode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Whether to use hostnetwork or not
+Default is HostNetwork</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>podMetadata</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.PodMetadata">
+PodMetadata
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>options</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Options for configuring vineyardd parameters.
+Supported options are as follows.
+reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+Default is true.
+allocator: (String) The allocator used by vineyardd, could be &ldquo;dlmalloc&rdquo; or &ldquo;mimalloc&rdquo;.
+Default is &ldquo;dlmalloc&rdquo;.
+compression: (Bool) Compress before migration or spilling.
+Default is true.
+coredump: (Bool) Enable coredump core dump when been aborted.
+Default is false.
+meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+Default is 60.
+etcd_endpoint: (String) The endpoint of etcd.
+Default is same as the etcd endpoint of vineyard worker.
+etcd_prefix: (String) Metadata path prefix in etcd.
+Default is &ldquo;/vineyard&rdquo;.
+size: (String) shared memory size for vineyardd.
+1024M, 1024000, 1G, or 1Gi.
+Default is &ldquo;0&rdquo;, which means no cache.
+When the size is not set to &ldquo;0&rdquo;, it should be greater than the 2048 bytes(2K).
+spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+Default is &ldquo;&rdquo;.
+spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+Default is 0.3.
+spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+Default is 0.8.
+Default is as follows.
+fuse:
+options:
+size: &ldquo;0&rdquo;
+etcd_endpoint: &ldquo;http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}&rdquo;
+etcd_prefix: &ldquo;/vineyard&rdquo;</p>
+</td>
+</tr>
+</tbody>
+</table>
 <h3 id="data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec
 </h3>
 <p>
@@ -10243,8 +10420,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -10337,140 +10514,6 @@ Default is null.</p>
 </tr>
 </tbody>
 </table>
-<h3 id="data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec
-</h3>
-<p>
-(<em>Appears on:</em>
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
-</p>
-<p>
-<p>VineyardSockSpec holds the configurations for vineyard client socket</p>
-</p>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>image</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image for Vineyard Fuse
-Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imageTag</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image Tag for Vineyard Fuse
-Default is <code>v0.21.5</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imagePullPolicy</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image pull policy for Vineyard Fuse
-Default is <code>IfNotPresent</code>
-Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>env</code></br>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Environment variables that will be used by Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>cleanPolicy</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
-FuseCleanPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>CleanPolicy decides when to clean Vineyard Fuse pods.
-Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
-OnDemand cleans fuse pod once th fuse pod on some node is not needed
-OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
-Defaults to OnRuntimeDeleted</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code></br>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>networkMode</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.NetworkMode">
-NetworkMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Whether to use hostnetwork or not
-Default is HostNetwork</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>podMetadata</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.PodMetadata">
-PodMetadata
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
-</td>
-</tr>
-</tbody>
-</table>
 <h3 id="data.fluid.io/v1alpha1.VolumeSource">VolumeSource
 </h3>
 <p>
diff --git a/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md b/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md
new file mode 100644
index 00000000..3a377d49
--- /dev/null
+++ b/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md
@@ -0,0 +1,218 @@
+## How to configure the cache size of Vineyard Fuse
+
+Before you begin, we'd better have a basic understanding of the [Vineyard Fuse](https://github.com/v6d-io/v6d/tree/main/docker/vineyard-fluid-fuse). It mainly creates the vineyard client configurations in the application pod and defines the priority of different vineyard sockets.
+
+For example, suppose we have enabled the cache of vineyard fuse, a local vineyardd will be started in the fuse container, and it will connect to the vineyard master. The new vineyardd will create a vineyard socket named `vineyard-local.sock` in the pod, and the vineyard fuse will also create the symbolic link `vineyard-worker.sock` to pod if the fuse pod runs on the same node as the vineyard worker. In this case, we will put the vineyard socket `vineyard-local.sock` in the first place in the vineyard client configurations YAML. When the application connects to the vineyard, it will first try to put and get data from the local vineyardd. If it's out of memory, it will fall back to the vineyard worker. Thus, we can regard the vineyard fuse as a local cache of the external vineyard workers.
+
+## Install fluid
+
+Refer to the [Installation Documentation](../../userguide/install.md) to complete the installation.
+
+## Create Vineyard Runtime and set the fuse cache size to 0
+
+If you don't set the cache size of vineyard fuse, the default value is 0. To make it
+clear, we set the cache size to 0 explicitly.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: data.fluid.io/v1alpha1
+kind: VineyardRuntime
+metadata:
+  name: vineyard
+spec:
+  replicas: 2
+  tieredstore:
+    levels:
+    - mediumtype: MEM
+      quota: 20Gi
+  fuse:
+    options:
+      # Not to start the local vineyardd in the vineyard fuse container
+      size: "0"
+---
+apiVersion: data.fluid.io/v1alpha1
+kind: Dataset
+metadata:
+  name: vineyard
+EOF
+```
+
+Check if the `Vineyard Runtime` is created successfully:
+
+```shell
+$ kubectl get vineyardRuntime vineyard 
+NAME       MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
+vineyard   Ready          PartialReady   Ready        59s
+```
+
+Then look at the status of the `Vineyard Dataset` and notice that it has been bound to the `Vineyard Runtime`:
+
+```shell
+$ kubectl get dataset vineyard
+NAME       UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
+vineyard                                                                  Bound   73s
+```
+
+### [Serverful Mode] Create an Application Pod and Mount the Vineyard Dataset
+
+Add the label `fuse.serverful.fluid.io/inject: "true"` to make the pod scheduled to the node where the vineyard worker is running.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: demo-app
+  labels:
+    fuse.serverful.fluid.io/inject: "true"
+spec:
+  containers:
+    - name: demo
+      image: python:3.10
+      command:
+        - /bin/bash
+        - -c
+        - |
+          pip3 install vineyard;
+          sleep infinity
+      volumeMounts:
+        - mountPath: /var/run/vineyard
+          name: client-configuration
+  volumes:
+    - name: client-configuration
+      persistentVolumeClaim:
+        claimName: vineyard
+EOF
+```
+
+Then we can check the client configurations in the pod, and notice there is only one vineyard socket named `vineyard-worker.sock`.
+
+```shell
+$ kubectl exec -it demo-app -- ls /var/run/vineyard
+rpc-conf  vineyard-config.yaml  vineyard-worker.sock
+
+$ kubectl exec -it demo-app -- cat /var/run/vineyard/vineyard-config.yaml                    
+Vineyard:
+  IPCSocket: vineyard-worker.sock
+  RPCEndpoint: vineyard-worker-0.vineyard-worker.default:9600,vineyard-worker-1.vineyard-worker.default:9600
+```
+
+Connect to the vineyard worker in the pod.
+
+```shell
+$  kubectl exec -it demo-app -- python
+Python 3.10.14 (main, Mar 25 2024, 21:45:25) [GCC 12.2.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import vineyard
+>>> client = vineyard.connect()
+>>> client.status
+{
+    instance_id: 0,
+    deployment: local,
+    memory_usage: 0,
+    memory_limit: 21474836480,
+    deferred_requests: 0,
+    ipc_connections: 0,
+    rpc_connections: 1
+}
+```
+
+## Create Vineyard Runtime and set the fuse cache size to 1Gi
+
+Add the option `size: "1Gi"` to enable the cache of vineyard fuse and set the cache size to 1Gi.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: data.fluid.io/v1alpha1
+kind: VineyardRuntime
+metadata:
+  name: vineyard-with-fuse-cache
+spec:
+  replicas: 2
+  tieredstore:
+    levels:
+    - mediumtype: MEM
+      quota: 20Gi
+  fuse:
+    options:
+      # Start the local vineyardd with 1Gi memory in the vineyard fuse container
+      size: "1Gi"
+---
+apiVersion: data.fluid.io/v1alpha1
+kind: Dataset
+metadata:
+  name: vineyard-with-fuse-cache
+EOF
+```
+
+### [Serverful Mode] Create an Application Pod and Mount the Vineyard Dataset
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: demo-app
+  labels:
+    fuse.serverful.fluid.io/inject: "true"
+spec:
+  containers:
+    - name: demo
+      image: python:3.10
+      command:
+        - /bin/bash
+        - -c
+        - |
+          pip3 install vineyard;
+          sleep infinity
+      volumeMounts:
+        - mountPath: /var/run/vineyard
+          name: client-configuration
+  volumes:
+    - name: client-configuration
+      persistentVolumeClaim:
+        claimName: vineyard-with-fuse-cache
+EOF
+```
+
+Check the status of Vineyard FUSE:
+
+```shell
+$ kubectl get po | grep vineyard-with-fuse-cache-fuse
+vineyard-with-fuse-cache-fuse-chd9w   1/1     Running   0          110s
+```
+
+Then we can check the client configurations in the pod, and notice there are two vineyard sockets named `vineyard-local.sock` and `vineyard-worker.sock`. In the client
+configurations YAML, the `vineyard-local.sock` is in the first place, which means the application will first try to put and get data from the local vineyardd.
+
+```shell
+$ kubectl exec -it demo-app -- ls /var/run/vineyard
+rpc-conf  vineyard-config.yaml  vineyard-local.sock  vineyard-worker.sock
+
+# Check the vineyard client configurations
+$ kubectl exec -it demo-app -- cat /var/run/vineyard/vineyard-config.yaml                    
+Vineyard:
+  IPCSocket: vineyard-local.sock
+  RPCEndpoint: vineyard-with-fuse-cache-worker-0.vineyard-with-fuse-cache-worker.default:9600,vineyard-with-fuse-cache-worker-1.vineyard-with-fuse-cache-worker.default:9600
+```
+
+We can find if we connect to the vineyard with the default configurations, the local
+vineyardd will be used first.
+
+```shell
+$  kubectl exec -it demo-app -- python
+Python 3.10.14 (main, Mar 25 2024, 21:45:25) [GCC 12.2.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import vineyard
+>>> client = vineyard.connect()
+>>> client.status
+{
+    instance_id: 2,
+    deployment: local,
+    memory_usage: 0,
+    memory_limit: 1073741824, # 1Gi, not 20Gi in vineyard worker
+    deferred_requests: 0,
+    ipc_connections: 1,
+    rpc_connections: 0
+}
+```
diff --git a/docs/zh/dev/api_doc.md b/docs/zh/dev/api_doc.md
index a8a98c29..fa854f51 100644
--- a/docs/zh/dev/api_doc.md
+++ b/docs/zh/dev/api_doc.md
@@ -2392,8 +2392,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -5293,7 +5293,7 @@ string
 <a href="#data.fluid.io/v1alpha1.JindoFuseSpec">JindoFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>)
 </p>
 <p>
 </p>
@@ -7516,8 +7516,8 @@ bool
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinCompTemplateSpec">ThinCompTemplateSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>)
 </p>
 <p>
 </p>
@@ -7806,9 +7806,9 @@ Kubernetes core/v1.NodeAffinity
 <a href="#data.fluid.io/v1alpha1.JuiceFSRuntimeSpec">JuiceFSRuntimeSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.Metadata">Metadata</a>, 
 <a href="#data.fluid.io/v1alpha1.Processor">Processor</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
 </p>
 <p>
 <p>PodMetadata defines subgroup properties of metav1.ObjectMeta</p>
@@ -9977,6 +9977,183 @@ string
 </tr>
 </tbody>
 </table>
+<h3 id="data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
+</p>
+<p>
+<p>VineyardClientSocketSpec holds the configurations for vineyard client socket</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image for Vineyard Fuse
+Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imageTag</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image Tag for Vineyard Fuse
+Default is <code>v0.21.5</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullPolicy</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image pull policy for Vineyard Fuse
+Default is <code>IfNotPresent</code>
+Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>env</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Environment variables that will be used by Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>cleanPolicy</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
+FuseCleanPolicy
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>CleanPolicy decides when to clean Vineyard Fuse pods.
+Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
+OnDemand cleans fuse pod once th fuse pod on some node is not needed
+OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
+Defaults to OnRuntimeDeleted</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>resources</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
+Kubernetes core/v1.ResourceRequirements
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>networkMode</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.NetworkMode">
+NetworkMode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Whether to use hostnetwork or not
+Default is HostNetwork</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>podMetadata</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.PodMetadata">
+PodMetadata
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>options</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Options for configuring vineyardd parameters.
+Supported options are as follows.
+reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+Default is true.
+allocator: (String) The allocator used by vineyardd, could be &ldquo;dlmalloc&rdquo; or &ldquo;mimalloc&rdquo;.
+Default is &ldquo;dlmalloc&rdquo;.
+compression: (Bool) Compress before migration or spilling.
+Default is true.
+coredump: (Bool) Enable coredump core dump when been aborted.
+Default is false.
+meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+Default is 60.
+etcd_endpoint: (String) The endpoint of etcd.
+Default is same as the etcd endpoint of vineyard worker.
+etcd_prefix: (String) Metadata path prefix in etcd.
+Default is &ldquo;/vineyard&rdquo;.
+size: (String) shared memory size for vineyardd.
+1024M, 1024000, 1G, or 1Gi.
+Default is &ldquo;0&rdquo;, which means no cache.
+When the size is not set to &ldquo;0&rdquo;, it should be greater than the 2048 bytes(2K).
+spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+Default is &ldquo;&rdquo;.
+spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+Default is 0.3.
+spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+Default is 0.8.
+Default is as follows.
+fuse:
+options:
+size: &ldquo;0&rdquo;
+etcd_endpoint: &ldquo;http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}&rdquo;
+etcd_prefix: &ldquo;/vineyard&rdquo;</p>
+</td>
+</tr>
+</tbody>
+</table>
 <h3 id="data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec
 </h3>
 <p>
@@ -10243,8 +10420,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -10337,140 +10514,6 @@ Default is null.</p>
 </tr>
 </tbody>
 </table>
-<h3 id="data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec
-</h3>
-<p>
-(<em>Appears on:</em>
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
-</p>
-<p>
-<p>VineyardSockSpec holds the configurations for vineyard client socket</p>
-</p>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>image</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image for Vineyard Fuse
-Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imageTag</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image Tag for Vineyard Fuse
-Default is <code>v0.21.5</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imagePullPolicy</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image pull policy for Vineyard Fuse
-Default is <code>IfNotPresent</code>
-Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>env</code></br>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Environment variables that will be used by Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>cleanPolicy</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
-FuseCleanPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>CleanPolicy decides when to clean Vineyard Fuse pods.
-Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
-OnDemand cleans fuse pod once th fuse pod on some node is not needed
-OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
-Defaults to OnRuntimeDeleted</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code></br>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>networkMode</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.NetworkMode">
-NetworkMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Whether to use hostnetwork or not
-Default is HostNetwork</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>podMetadata</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.PodMetadata">
-PodMetadata
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
-</td>
-</tr>
-</tbody>
-</table>
 <h3 id="data.fluid.io/v1alpha1.VolumeSource">VolumeSource
 </h3>
 <p>
diff --git a/pkg/ddc/base/volume.go b/pkg/ddc/base/volume.go
index 2480450a..621a3a41 100644
--- a/pkg/ddc/base/volume.go
+++ b/pkg/ddc/base/volume.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2022 The Fluid Authors.
+Copyright 2020 The Fluid Authors.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/ddc/jindocache/const.go b/pkg/ddc/jindocache/const.go
index 659e1409..4904e399 100644
--- a/pkg/ddc/jindocache/const.go
+++ b/pkg/ddc/jindocache/const.go
@@ -52,7 +52,7 @@ const (
 
 	jindoFuseMountpath = "/jfs/jindofs-fuse"
 
-	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0"
+	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0"
 
 	engineType = "jindocache"
 
diff --git a/pkg/ddc/jindocache/transform.go b/pkg/ddc/jindocache/transform.go
index 784661b6..1833f94e 100644
--- a/pkg/ddc/jindocache/transform.go
+++ b/pkg/ddc/jindocache/transform.go
@@ -947,7 +947,7 @@ func (e *JindoCacheEngine) getSmartDataConfigs(runtime *datav1alpha1.JindoRuntim
 	// Apply defaults
 	config := smartdataConfig{
 		image:           "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata",
-		imageTag:        "6.2.0",
+		imageTag:        "6.4.0",
 		imagePullPolicy: "Always",
 		dnsServer:       "1.1.1.1",
 	}
@@ -985,7 +985,7 @@ func (e *JindoCacheEngine) getSmartDataConfigs(runtime *datav1alpha1.JindoRuntim
 func (e *JindoCacheEngine) parseFuseImage(runtime *datav1alpha1.JindoRuntime) (image, tag, imagePullPolicy string) {
 	// Apply defaults
 	image = "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse"
-	tag = "6.2.0"
+	tag = "6.4.0"
 	imagePullPolicy = "Always"
 
 	// Override with global-scoped configs
diff --git a/pkg/ddc/vineyard/const.go b/pkg/ddc/vineyard/const.go
index 962a40c3..18b0550b 100644
--- a/pkg/ddc/vineyard/const.go
+++ b/pkg/ddc/vineyard/const.go
@@ -41,4 +41,17 @@ const (
 	WorkerEtcdPrefix = "etcd.prefix"
 
 	DefaultWorkerEtcdPrefixValue = "/vineyard"
+
+	// the size of vineyardd in vineyard-fuse
+	VineyarddSize = "size"
+
+	// the etcd endpoint of vineyardd in vineyard-fuse
+	EtcdEndpoint = "etcd_endpoint"
+
+	// the etcd prefix of vineyardd in vineyard-fuse
+	EtcdPrefix = "etcd_prefix"
+
+	DefaultSize = "0"
+
+	DefaultEtcdPrefix = "/vineyard"
 )
diff --git a/pkg/ddc/vineyard/transform.go b/pkg/ddc/vineyard/transform.go
index 8c715873..77df3b15 100644
--- a/pkg/ddc/vineyard/transform.go
+++ b/pkg/ddc/vineyard/transform.go
@@ -191,6 +191,10 @@ func (e *VineyardEngine) transformFuse(runtime *datav1alpha1.VineyardRuntime, va
 	// parse fuse pod network mode
 	value.Fuse.HostNetwork = datav1alpha1.IsHostNetwork(runtime.Spec.Fuse.NetworkMode)
 
+	options := e.transformFuseOptions(runtime, value)
+	if len(options) != 0 {
+		value.Fuse.Options = options
+	}
 	e.transformResourcesForFuse(runtime, value)
 }
 
@@ -237,6 +241,21 @@ func (e *VineyardEngine) transformWorkerOptions(runtime *datav1alpha1.VineyardRu
 	return options
 }
 
+func (e *VineyardEngine) transformFuseOptions(runtime *datav1alpha1.VineyardRuntime, value *Vineyard) map[string]string {
+	options := map[string]string{
+		VineyarddSize: DefaultSize,
+		EtcdEndpoint:  fmt.Sprintf("http://%s-master-0.%s-master.%s:%d", value.FullnameOverride, value.FullnameOverride, e.namespace, value.Master.Ports[MasterClientName]),
+		EtcdPrefix:    DefaultEtcdPrefix,
+	}
+
+	if len(runtime.Spec.Fuse.Options) > 0 {
+		for key, value := range runtime.Spec.Fuse.Options {
+			options[key] = value
+		}
+	}
+	return options
+}
+
 func (e *VineyardEngine) transformWorkerPorts(runtime *datav1alpha1.VineyardRuntime) map[string]int {
 	ports := map[string]int{
 		WorkerRPCName:      WorkerRPCPort,
diff --git a/pkg/ddc/vineyard/type.go b/pkg/ddc/vineyard/type.go
index 2f422862..f5f9ee18 100644
--- a/pkg/ddc/vineyard/type.go
+++ b/pkg/ddc/vineyard/type.go
@@ -93,6 +93,7 @@ type Fuse struct {
 	NodeSelector    map[string]string            `json:"nodeSelector,omitempty"`
 	Resources       common.Resources             `json:"resources,omitempty"`
 	HostPID         bool                         `json:"hostPID,omitempty"`
+	Options         map[string]string            `json:"options,omitempty"`
 }
 
 type TieredStore struct {
diff --git a/pkg/utils/jindo/jindo.go b/pkg/utils/jindo/jindo.go
index 4c15f413..130216dd 100644
--- a/pkg/utils/jindo/jindo.go
+++ b/pkg/utils/jindo/jindo.go
@@ -29,7 +29,7 @@ const (
 
 	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:4.6.8"
 
-	defaultJindoCacheRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0"
+	defaultJindoCacheRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0"
 )
 
 // GetDefaultEngineImpl gets the runtime type for Jindo


Test patch:
diff --git a/pkg/ddc/jindocache/transform_fuse_test.go b/pkg/ddc/jindocache/transform_fuse_test.go
index bc0bf442..bbbf4630 100644
--- a/pkg/ddc/jindocache/transform_fuse_test.go
+++ b/pkg/ddc/jindocache/transform_fuse_test.go
@@ -188,7 +188,7 @@ func TestParseFuseImage(t *testing.T) {
 					}},
 				}},
 			jindoValue:            &Jindo{},
-			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.2.0",
+			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.4.0",
 			expectImagePullPolicy: "Always",
 		},
 		{
diff --git a/pkg/ddc/jindocache/transform_test.go b/pkg/ddc/jindocache/transform_test.go
index 670438bc..74fae227 100644
--- a/pkg/ddc/jindocache/transform_test.go
+++ b/pkg/ddc/jindocache/transform_test.go
@@ -131,7 +131,7 @@ func TestParseSmartDataImage(t *testing.T) {
 					}},
 				}},
 			jindoValue:            &Jindo{},
-			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0",
+			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0",
 			expectImagePullPolicy: "Always",
 			expectDnsServer:       "1.1.1.1",
 		},
diff --git a/pkg/ddc/vineyard/transform_resources_test.go b/pkg/ddc/vineyard/transform_resources_test.go
index 78ab46d6..9006b0ca 100644
--- a/pkg/ddc/vineyard/transform_resources_test.go
+++ b/pkg/ddc/vineyard/transform_resources_test.go
@@ -523,7 +523,7 @@ func TestTransformResourcesForFuseWithValue(t *testing.T) {
 	}{
 		{&datav1alpha1.VineyardRuntime{
 			Spec: datav1alpha1.VineyardRuntimeSpec{
-				Fuse: datav1alpha1.VineyardSockSpec{
+				Fuse: datav1alpha1.VineyardClientSocketSpec{
 					Resources: resources,
 				},
 				TieredStore: datav1alpha1.TieredStore{
diff --git a/pkg/ddc/vineyard/transform_test.go b/pkg/ddc/vineyard/transform_test.go
index f29adfe7..fa1aeac4 100755
--- a/pkg/ddc/vineyard/transform_test.go
+++ b/pkg/ddc/vineyard/transform_test.go
@@ -51,7 +51,7 @@ func TestTransformFuse(t *testing.T) {
 		"test image, imageTag and pullPolicy": {
 			runtime: &datav1alpha1.VineyardRuntime{
 				Spec: datav1alpha1.VineyardRuntimeSpec{
-					Fuse: datav1alpha1.VineyardSockSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
 						Image:           "dummy-fuse-image",
 						ImageTag:        "dummy-tag",
 						ImagePullPolicy: "IfNotPresent",
@@ -67,7 +67,7 @@ func TestTransformFuse(t *testing.T) {
 		"test image, imageTag and pullPolicy from env": {
 			runtime: &datav1alpha1.VineyardRuntime{
 				Spec: datav1alpha1.VineyardRuntimeSpec{
-					Fuse: datav1alpha1.VineyardSockSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
 						ImagePullPolicy: "IfNotPresent",
 						Env:             map[string]string{"TEST_ENV": "true"},
 						CleanPolicy:     "OnRuntimeDeleted",
@@ -473,6 +473,78 @@ func TestTransformWorkerOptions(t *testing.T) {
 	}
 }
 
+func TestTransformFuseOptions(t *testing.T) {
+	tests := []struct {
+		name     string
+		runtime  *datav1alpha1.VineyardRuntime
+		value    *Vineyard
+		expected map[string]string
+	}{
+		{
+			name: "NoFuseOptions",
+			runtime: &datav1alpha1.VineyardRuntime{
+				Spec: datav1alpha1.VineyardRuntimeSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
+						Options: map[string]string{},
+					},
+				},
+			},
+			value: &Vineyard{
+				FullnameOverride: "vineyard",
+				Master: Master{
+					Ports: map[string]int{
+						"client": 2379,
+					},
+				},
+			},
+			expected: map[string]string{
+				"size":          "0",
+				"etcd_endpoint": "http://vineyard-master-0.vineyard-master.default:2379",
+				"etcd_prefix":   "/vineyard",
+			},
+		},
+		{
+			name: "WithFuseOptions",
+			runtime: &datav1alpha1.VineyardRuntime{
+				Spec: datav1alpha1.VineyardRuntimeSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
+						Options: map[string]string{
+							"size":           "10Gi",
+							"etcd_endpoint":  "http://vineyard-master-0.vineyard-master.default:12379",
+							"reserve_memory": "true",
+						},
+					},
+				},
+			},
+			value: &Vineyard{
+				Master: Master{
+					Ports: map[string]int{
+						"client": 12379,
+					},
+				},
+			},
+			expected: map[string]string{
+				"size":           "10Gi",
+				"etcd_endpoint":  "http://vineyard-master-0.vineyard-master.default:12379",
+				"etcd_prefix":    "/vineyard",
+				"reserve_memory": "true",
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			engine := &VineyardEngine{
+				namespace: "default",
+			}
+			actual := engine.transformFuseOptions(tt.runtime, tt.value)
+			if !reflect.DeepEqual(actual, tt.expected) {
+				t.Errorf("%s: expected %v, got %v", tt.name, tt.expected, actual)
+			}
+		})
+	}
+}
+
 func TestTransformWorkerPorts(t *testing.T) {
 	tests := []struct {
 		name     string