MCPcopy
hub / github.com/seaweedfs/seaweedfs / startVolumeServer

Method startVolumeServer

weed/command/volume.go:291–504  ·  view source on GitHub ↗
(volumeFolders, maxVolumeCounts, volumeWhiteListOption string, minFreeSpaces []util.MinFreeSpace)

Source from the content-addressed store, hash-verified

289}
290
291func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, volumeWhiteListOption string, minFreeSpaces []util.MinFreeSpace) {
292 v.setDiskIOProbeDefaults()
293
294 // Set multiple folders and each folder's max volume count limit'
295 v.folders = strings.Split(volumeFolders, ",")
296 for i, folder := range v.folders {
297 v.folders[i] = util.ResolvePath(folder)
298 if err := util.TestFolderWritable(v.folders[i]); err != nil {
299 glog.Fatalf("Check Data Folder(-dir) Writable %s : %s", v.folders[i], err)
300 }
301 }
302
303 // set max
304 maxCountStrings := strings.Split(maxVolumeCounts, ",")
305 for _, maxString := range maxCountStrings {
306 if max, e := strconv.ParseInt(maxString, 10, 64); e == nil {
307 v.folderMaxLimits = append(v.folderMaxLimits, int32(max))
308 } else {
309 glog.Fatalf("The max specified in -max not a valid number %s", maxString)
310 }
311 }
312 if len(v.folderMaxLimits) == 1 && len(v.folders) > 1 {
313 for i := 0; i < len(v.folders)-1; i++ {
314 v.folderMaxLimits = append(v.folderMaxLimits, v.folderMaxLimits[0])
315 }
316 }
317 if len(v.folders) != len(v.folderMaxLimits) {
318 glog.Fatalf("%d directories by -dir, but only %d max is set by -max", len(v.folders), len(v.folderMaxLimits))
319 }
320
321 if len(minFreeSpaces) == 1 && len(v.folders) > 1 {
322 for i := 0; i < len(v.folders)-1; i++ {
323 minFreeSpaces = append(minFreeSpaces, minFreeSpaces[0])
324 }
325 }
326 if len(v.folders) != len(minFreeSpaces) {
327 glog.Fatalf("%d directories by -dir, but only %d minFreeSpacePercent is set by -minFreeSpacePercent", len(v.folders), len(minFreeSpaces))
328 }
329
330 // set disk types
331 var diskTypes []types.DiskType
332 diskTypeStrings := strings.Split(*v.diskType, ",")
333 for _, diskTypeString := range diskTypeStrings {
334 diskTypes = append(diskTypes, types.ToDiskType(diskTypeString))
335 }
336 if len(diskTypes) == 1 && len(v.folders) > 1 {
337 for i := 0; i < len(v.folders)-1; i++ {
338 diskTypes = append(diskTypes, diskTypes[0])
339 }
340 }
341 if len(v.folders) != len(diskTypes) {
342 glog.Fatalf("%d directories by -dir, but only %d disk types is set by -disk", len(v.folders), len(diskTypes))
343 }
344
345 var tagsArg string
346 if v.tags != nil {
347 tagsArg = *v.tags
348 }

Callers 3

runServerFunction · 0.45
runVolumeFunction · 0.45
startMiniServicesFunction · 0.45

Calls 15

isSeparatedPublicPortMethod · 0.95
startGrpcServiceMethod · 0.95
StopHeartbeatMethod · 0.95
SetStoppingMethod · 0.95
ResolvePathFunction · 0.92
TestFolderWritableFunction · 0.92
FatalfFunction · 0.92
ToDiskTypeFunction · 0.92
StringSplitFunction · 0.92

Tested by

no test coverage detected