mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-09-19 14:27:58 +08:00
Show the real disk usage in stats calls
Currently the file size of only one volume location is taken into account in the stats. This commit multiplies the disk usages by the amount of nodes holding a replica of the volume. This will yield the expected amount of disk usage and matches the total size calculations from before.
This commit is contained in:
@@ -77,7 +77,7 @@ func (ms *MasterServer) Assign(ctx context.Context, req *master_pb.AssignRequest
|
|||||||
|
|
||||||
if !ms.Topo.HasWritableVolume(option) {
|
if !ms.Topo.HasWritableVolume(option) {
|
||||||
if ms.Topo.AvailableSpaceFor(option) <= 0 {
|
if ms.Topo.AvailableSpaceFor(option) <= 0 {
|
||||||
return nil, fmt.Errorf("no free volumes left for "+option.String())
|
return nil, fmt.Errorf("no free volumes left for " + option.String())
|
||||||
}
|
}
|
||||||
ms.vgLock.Lock()
|
ms.vgLock.Lock()
|
||||||
if !ms.Topo.HasWritableVolume(option) {
|
if !ms.Topo.HasWritableVolume(option) {
|
||||||
@@ -122,11 +122,8 @@ func (ms *MasterServer) Statistics(ctx context.Context, req *master_pb.Statistic
|
|||||||
|
|
||||||
volumeLayout := ms.Topo.GetVolumeLayout(req.Collection, replicaPlacement, ttl, types.ToDiskType(req.DiskType))
|
volumeLayout := ms.Topo.GetVolumeLayout(req.Collection, replicaPlacement, ttl, types.ToDiskType(req.DiskType))
|
||||||
stats := volumeLayout.Stats()
|
stats := volumeLayout.Stats()
|
||||||
|
|
||||||
totalSize := ms.Topo.GetDiskUsages().GetMaxVolumeCount() * int64(ms.option.VolumeSizeLimitMB) * 1024 * 1024
|
|
||||||
|
|
||||||
resp := &master_pb.StatisticsResponse{
|
resp := &master_pb.StatisticsResponse{
|
||||||
TotalSize: uint64(totalSize),
|
TotalSize: stats.TotalSize,
|
||||||
UsedSize: stats.UsedSize,
|
UsedSize: stats.UsedSize,
|
||||||
FileCount: stats.FileCount,
|
FileCount: stats.FileCount,
|
||||||
}
|
}
|
||||||
|
@@ -432,7 +432,7 @@ func (vl *VolumeLayout) Stats() *VolumeLayoutStats {
|
|||||||
if vl.readonlyVolumes.IsTrue(vid) {
|
if vl.readonlyVolumes.IsTrue(vid) {
|
||||||
ret.TotalSize += size
|
ret.TotalSize += size
|
||||||
} else {
|
} else {
|
||||||
ret.TotalSize += vl.volumeSizeLimit
|
ret.TotalSize += vl.volumeSizeLimit * uint64(vll.Length())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -82,7 +82,7 @@ func (dnll *VolumeLocationList) Stats(vid needle.VolumeId, freshThreshHold int64
|
|||||||
if dnl.LastSeen < freshThreshHold {
|
if dnl.LastSeen < freshThreshHold {
|
||||||
vinfo, err := dnl.GetVolumesById(vid)
|
vinfo, err := dnl.GetVolumesById(vid)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return vinfo.Size - vinfo.DeletedByteCount, vinfo.FileCount - vinfo.DeleteCount
|
return (vinfo.Size - vinfo.DeletedByteCount) * uint64(len(dnll.list)), vinfo.FileCount - vinfo.DeleteCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user