From 1976ca9160aa9b06c258d4afc3a03367584165e0 Mon Sep 17 00:00:00 2001 From: lfhy <821923589@qq.com> Date: Sun, 26 Feb 2023 01:48:59 +0800 Subject: [PATCH] add -disk to filer command (#4247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add -disk to filer command * add diskType to filer.grpc * use filer.disk when filerWebDavOptions.disk is empty * add filer.disk to weed server command. --------- Co-authored-by: 三千院羽 <3000y@MacBook-Pro.lan> --- weed/command/filer.go | 8 ++++++++ weed/command/server.go | 4 ++++ weed/server/filer_grpc_server.go | 4 ++++ weed/server/filer_server.go | 1 + weed/server/filer_server_handlers_write.go | 8 +++++++- 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/weed/command/filer.go b/weed/command/filer.go index 5a5a458d4..5bdf53455 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -60,6 +60,7 @@ type FilerOptions struct { localSocket *string showUIDirectoryDelete *bool downloadMaxMBps *int + diskType *string } func init() { @@ -89,6 +90,7 @@ func init() { f.localSocket = cmdFiler.Flag.String("localSocket", "", "default to /tmp/seaweedfs-filer-.sock") f.showUIDirectoryDelete = cmdFiler.Flag.Bool("ui.deleteDir", true, "enable filer UI show delete directory button") f.downloadMaxMBps = cmdFiler.Flag.Int("downloadMaxMBps", 0, "download max speed for each download request, in MB per second") + f.diskType = cmdFiler.Flag.String("disk", "", "[hdd|ssd|] hard drive or solid state drive or any tag") // start s3 on filer filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway") @@ -183,6 +185,11 @@ func runFiler(cmd *Command, args []string) bool { if *filerStartWebDav { filerWebDavOptions.filer = &filerAddress + + if *filerWebDavOptions.disk == "" { + filerWebDavOptions.disk = f.diskType + } + go func(delay time.Duration) { time.Sleep(delay * time.Second) filerWebDavOptions.startWebDav() @@ -243,6 +250,7 @@ func (fo *FilerOptions) startFiler() { ConcurrentUploadLimit: int64(*fo.concurrentUploadLimitMB) * 1024 * 1024, ShowUIDirectoryDelete: *fo.showUIDirectoryDelete, DownloadMaxBytesPs: int64(*fo.downloadMaxMBps) * 1024 * 1024, + DiskType: *fo.diskType, }) if nfs_err != nil { glog.Fatalf("Filer startup error: %v", nfs_err) diff --git a/weed/command/server.go b/weed/command/server.go index f66f95182..ba56d8897 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -115,6 +115,7 @@ func init() { filerOptions.localSocket = cmdServer.Flag.String("filer.localSocket", "", "default to /tmp/seaweedfs-filer-.sock") filerOptions.showUIDirectoryDelete = cmdServer.Flag.Bool("filer.ui.deleteDir", true, "enable filer UI show delete directory button") filerOptions.downloadMaxMBps = cmdServer.Flag.Int("filer.downloadMaxMBps", 0, "download max speed for each download request, in MB per second") + filerOptions.diskType = cmdServer.Flag.String("filer.disk", "", "[hdd|ssd|] hard drive or solid state drive or any tag") serverOptions.v.port = cmdServer.Flag.Int("volume.port", 8080, "volume server http listen port") serverOptions.v.portGrpc = cmdServer.Flag.Int("volume.port.grpc", 0, "volume server grpc listen port") @@ -253,6 +254,9 @@ func runServer(cmd *Command, args []string) bool { serverWhiteList := util.StringSplit(*serverWhiteListOption, ",") if *isStartingFiler { + if *filerOptions.diskType == "" && *serverOptions.v.diskType != "" { + filerOptions.diskType = serverOptions.v.diskType + } go func() { time.Sleep(1 * time.Second) filerOptions.startFiler() diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go index 05ebb31a8..d79df1d2e 100644 --- a/weed/server/filer_grpc_server.go +++ b/weed/server/filer_grpc_server.go @@ -295,6 +295,10 @@ func (fs *FilerServer) DeleteEntry(ctx context.Context, req *filer_pb.DeleteEntr func (fs *FilerServer) AssignVolume(ctx context.Context, req *filer_pb.AssignVolumeRequest) (resp *filer_pb.AssignVolumeResponse, err error) { + if req.DiskType == "" { + req.DiskType = fs.option.DiskType + } + so, err := fs.detectStorageOption(req.Path, req.Collection, req.Replication, req.TtlSec, req.DiskType, req.DataCenter, req.Rack, req.DataNode) if err != nil { glog.V(3).Infof("AssignVolume: %v", err) diff --git a/weed/server/filer_server.go b/weed/server/filer_server.go index 7b57c68c7..cc4b8e6b2 100644 --- a/weed/server/filer_server.go +++ b/weed/server/filer_server.go @@ -69,6 +69,7 @@ type FilerOption struct { ConcurrentUploadLimit int64 ShowUIDirectoryDelete bool DownloadMaxBytesPs int64 + DiskType string } type FilerServer struct { diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go index d2c296fad..11019c7d2 100644 --- a/weed/server/filer_server_handlers_write.go +++ b/weed/server/filer_server_handlers_write.go @@ -4,12 +4,13 @@ import ( "context" "errors" "fmt" - "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" "net/http" "os" "strings" "time" + "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" + "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/operation" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" @@ -97,6 +98,11 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request, conte return } + // When DiskType is empty,use filer's -disk + if so.DiskType == "" { + so.DiskType = fs.option.DiskType + } + if query.Has("mv.from") { fs.move(ctx, w, r, so) } else {