diff options
| author | bingoohuang <bingoo.huang@gmail.com> | 2021-04-27 10:37:24 +0800 |
|---|---|---|
| committer | bingoohuang <bingoo.huang@gmail.com> | 2021-04-27 10:37:24 +0800 |
| commit | cf552417a7a422d1313c53972fd1175684e758e0 (patch) | |
| tree | 621d6f4f432cefe75c455939e084193eb7462001 /weed/command | |
| parent | 31f1cdeac281fb88a3d03743f9796f81e1d74378 (diff) | |
| download | seaweedfs-cf552417a7a422d1313c53972fd1175684e758e0.tar.xz seaweedfs-cf552417a7a422d1313c53972fd1175684e758e0.zip | |
minFreeSpace refactored
Diffstat (limited to 'weed/command')
| -rw-r--r-- | weed/command/server.go | 9 | ||||
| -rw-r--r-- | weed/command/volume.go | 26 |
2 files changed, 12 insertions, 23 deletions
diff --git a/weed/command/server.go b/weed/command/server.go index 6eb3bf97c..d0020d33b 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -58,7 +58,8 @@ var ( serverDisableHttp = cmdServer.Flag.Bool("disableHttp", false, "disable http requests, only gRPC operations are allowed.") volumeDataFolders = cmdServer.Flag.String("dir", os.TempDir(), "directories to store data files. dir[,dir]...") volumeMaxDataVolumeCounts = cmdServer.Flag.String("volume.max", "8", "maximum numbers of volumes, count[,count]... If set to zero, the limit will be auto configured.") - volumeMinFreeSpacePercent = cmdServer.Flag.String("volume.minFreeSpacePercent", "1", "minimum free disk space (default to 1%). Low disk space will mark all volumes as ReadOnly.") + volumeMinFreeSpacePercent = cmdServer.Flag.String("volume.minFreeSpacePercent", "1", "minimum free disk space (default to 1%). Low disk space will mark all volumes as ReadOnly (deprecated, use minFreeSpace instead).") + volumeMinFreeSpace = cmdServer.Flag.String("volume.minFreeSpace", "", "min free disk space (value<=100 as percentage like 1, other as human readable bytes, like 10GiB). Low disk space will mark all volumes as ReadOnly.") serverMetricsHttpPort = cmdServer.Flag.Int("metricsPort", 0, "Prometheus metrics listen port") // pulseSeconds = cmdServer.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats") @@ -244,8 +245,8 @@ func runServer(cmd *Command, args []string) bool { // start volume server if *isStartingVolumeServer { - go serverOptions.v.startVolumeServer(*volumeDataFolders, *volumeMaxDataVolumeCounts, *serverWhiteListOption, *volumeMinFreeSpacePercent) - + minFreeSpaces := util.MustParseMinFreeSpace(*minFreeSpace, *minFreeSpacePercent) + go serverOptions.v.startVolumeServer(*volumeDataFolders, *volumeMaxDataVolumeCounts, *serverWhiteListOption, minFreeSpaces) } if *isStartingMasterServer { @@ -253,6 +254,4 @@ func runServer(cmd *Command, args []string) bool { } select {} - - return true } diff --git a/weed/command/volume.go b/weed/command/volume.go index 93a19102d..139a3791e 100644 --- a/weed/command/volume.go +++ b/weed/command/volume.go @@ -57,7 +57,6 @@ type VolumeServerOptions struct { compactionMBPerSecond *int fileSizeLimitMB *int concurrentUploadLimitMB *int - minFreeSpaces []float32 pprof *bool preStopSeconds *int metricsHttpPort *int @@ -121,13 +120,13 @@ func runVolume(cmd *Command, args []string) bool { go stats_collect.StartMetricsServer(*v.metricsHttpPort) - v.startVolumeServer(*volumeFolders, *maxVolumeCounts, *volumeWhiteListOption, - util.EmptyTo(*minFreeSpace, *minFreeSpacePercent)) + minFreeSpaces := util.MustParseMinFreeSpace(*minFreeSpace, *minFreeSpacePercent) + v.startVolumeServer(*volumeFolders, *maxVolumeCounts, *volumeWhiteListOption, minFreeSpaces) return true } -func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, volumeWhiteListOption, minFreeSpace string) { +func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, volumeWhiteListOption string, minFreeSpaces []util.MinFreeSpace) { // Set multiple folders and each folder's max volume count limit' v.folders = strings.Split(volumeFolders, ",") @@ -155,22 +154,13 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v glog.Fatalf("%d directories by -dir, but only %d max is set by -max", len(v.folders), len(v.folderMaxLimits)) } - // set minFreeSpacePercent - minFreeSpaceStrings := strings.Split(minFreeSpace, ",") - for _, freeString := range minFreeSpaceStrings { - if vv, e := util.ParseMinFreeSpace(freeString); e == nil { - v.minFreeSpaces = append(v.minFreeSpaces, vv) - } else { - glog.Fatalf("The value specified in -minFreeSpace not a valid value %s", freeString) - } - } - if len(v.minFreeSpaces) == 1 && len(v.folders) > 1 { + if len(minFreeSpaces) == 1 && len(v.folders) > 1 { for i := 0; i < len(v.folders)-1; i++ { - v.minFreeSpaces = append(v.minFreeSpaces, v.minFreeSpaces[0]) + minFreeSpaces = append(minFreeSpaces, minFreeSpaces[0]) } } - if len(v.folders) != len(v.minFreeSpaces) { - glog.Fatalf("%d directories by -dir, but only %d minFreeSpacePercent is set by -minFreeSpacePercent", len(v.folders), len(v.minFreeSpaces)) + if len(v.folders) != len(minFreeSpaces) { + glog.Fatalf("%d directories by -dir, but only %d minFreeSpacePercent is set by -minFreeSpacePercent", len(v.folders), len(minFreeSpaces)) } // set disk types @@ -233,7 +223,7 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v volumeServer := weed_server.NewVolumeServer(volumeMux, publicVolumeMux, *v.ip, *v.port, *v.publicUrl, - v.folders, v.folderMaxLimits, v.minFreeSpaces, diskTypes, + v.folders, v.folderMaxLimits, minFreeSpaces, diskTypes, *v.idxFolder, volumeNeedleMapKind, strings.Split(masters, ","), 5, *v.dataCenter, *v.rack, |
