aboutsummaryrefslogtreecommitdiff
path: root/weed/command/volume.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-12-13 22:49:56 -0800
committerChris Lu <chris.lu@gmail.com>2020-12-13 22:49:56 -0800
commitf6a419c26caf6356df1a099c5a900b158807b5a4 (patch)
treebbe4116c6800e5a93cfd2214725ec25041523d3d /weed/command/volume.go
parent7c52a3594219fa0957e39a32917cffd0ea479f72 (diff)
downloadseaweedfs-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.go26
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,