mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
Merge pull request #3203 from shichanglin5/volume_copy_preallocate
This commit is contained in:
commit
460c7cf68e
|
@ -3,6 +3,8 @@ package weed_server
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/storage/backend"
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
|
@ -78,6 +80,28 @@ func (vs *VolumeServer) VolumeCopy(req *volume_server_pb.VolumeCopyRequest, stre
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
var preallocateSize int64
|
||||||
|
if grpcErr := pb.WithMasterClient(false, vs.GetMaster(), vs.grpcDialOption, func(client master_pb.SeaweedClient) error {
|
||||||
|
resp, err := client.GetMasterConfiguration(context.Background(), &master_pb.GetMasterConfigurationRequest{})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("get master %s configuration: %v", vs.GetMaster(), err)
|
||||||
|
}
|
||||||
|
if resp.VolumePreallocate {
|
||||||
|
preallocateSize = int64(resp.VolumeSizeLimitMB) * (1 << 20)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}); grpcErr != nil {
|
||||||
|
glog.V(0).Infof("connect to %s: %v", vs.GetMaster(), grpcErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if preallocateSize > 0 {
|
||||||
|
volumeFile := dataBaseFileName + ".dat"
|
||||||
|
_, err := backend.CreateVolumeFile(volumeFile, preallocateSize, 0)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("create volume file %s: %v", volumeFile, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// println("source:", volFileInfoResp.String())
|
// println("source:", volFileInfoResp.String())
|
||||||
copyResponse := &volume_server_pb.VolumeCopyResponse{}
|
copyResponse := &volume_server_pb.VolumeCopyResponse{}
|
||||||
reportInterval := int64(1024 * 1024 * 128)
|
reportInterval := int64(1024 * 1024 * 128)
|
||||||
|
|
Loading…
Reference in a new issue