diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-12-13 22:49:56 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-12-13 22:49:56 -0800 |
| commit | f6a419c26caf6356df1a099c5a900b158807b5a4 (patch) | |
| tree | bbe4116c6800e5a93cfd2214725ec25041523d3d /weed/command/volume.go | |
| parent | 7c52a3594219fa0957e39a32917cffd0ea479f72 (diff) | |
| download | seaweedfs-f6a419c26caf6356df1a099c5a900b158807b5a4.tar.xz seaweedfs-f6a419c26caf6356df1a099c5a900b158807b5a4.zip | |
disk type configurable for each folder
Diffstat (limited to 'weed/command/volume.go')
| -rw-r--r-- | weed/command/volume.go | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/weed/command/volume.go b/weed/command/volume.go index 02d8eb50c..b90dc5967 100644 --- a/weed/command/volume.go +++ b/weed/command/volume.go @@ -169,6 +169,25 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v glog.Fatalf("%d directories by -dir, but only %d minFreeSpacePercent is set by -minFreeSpacePercent", len(v.folders), len(v.minFreeSpacePercents)) } + // set disk types + var diskTypes []storage.DiskType + diskTypeStrings := strings.Split(*v.diskType, ",") + for _, diskTypeString := range diskTypeStrings { + if diskType, err := storage.ToDiskType(diskTypeString); err == nil { + diskTypes = append(diskTypes, diskType) + } else { + glog.Fatalf("failed to parse volume type: %v", err) + } + } + if len(diskTypes) == 1 && len(v.folders) > 1 { + for i := 0; i < len(v.folders)-1; i++ { + diskTypes = append(diskTypes, diskTypes[0]) + } + } + if len(v.folders) != len(diskTypes) { + glog.Fatalf("%d directories by -dir, but only %d disk types is set by -disk", len(v.folders), len(diskTypes)) + } + // security related white list configuration if volumeWhiteListOption != "" { v.whiteList = strings.Split(volumeWhiteListOption, ",") @@ -212,14 +231,9 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v masters := *v.masters - diskType, err := storage.ToDiskType(*v.diskType) - if err != nil { - glog.Fatalf("failed to parse volume type: %v", err) - } - volumeServer := weed_server.NewVolumeServer(volumeMux, publicVolumeMux, *v.ip, *v.port, *v.publicUrl, - v.folders, v.folderMaxLimits, v.minFreeSpacePercents, diskType, + v.folders, v.folderMaxLimits, v.minFreeSpacePercents, diskTypes, *v.idxFolder, volumeNeedleMapKind, strings.Split(masters, ","), 5, *v.dataCenter, *v.rack, |
