修复磁盘占用统计计算错误

This commit is contained in:
刘祥超
2023-11-03 11:51:53 +08:00
parent b8a3ac750f
commit 57fa7036dc

View File

@@ -223,6 +223,7 @@ func (this *NodeStatusExecutor) updateDisk(status *nodeconfigs.NodeStatus) {
// 当前TeaWeb所在的fs // 当前TeaWeb所在的fs
var rootFS = "" var rootFS = ""
var rootTotal = uint64(0) var rootTotal = uint64(0)
var totalUsed = uint64(0)
if lists.ContainsString([]string{"darwin", "linux", "freebsd"}, runtime.GOOS) { if lists.ContainsString([]string{"darwin", "linux", "freebsd"}, runtime.GOOS) {
for _, p := range partitions { for _, p := range partitions {
if p.Mountpoint == "/" { if p.Mountpoint == "/" {
@@ -230,6 +231,7 @@ func (this *NodeStatusExecutor) updateDisk(status *nodeconfigs.NodeStatus) {
usage, _ := disk.Usage(p.Mountpoint) usage, _ := disk.Usage(p.Mountpoint)
if usage != nil { if usage != nil {
rootTotal = usage.Total rootTotal = usage.Total
totalUsed = usage.Used
} }
break break
} }
@@ -237,7 +239,6 @@ func (this *NodeStatusExecutor) updateDisk(status *nodeconfigs.NodeStatus) {
} }
var total = rootTotal var total = rootTotal
var totalUsage = uint64(0)
var maxUsage = float64(0) var maxUsage = float64(0)
for _, partition := range partitions { for _, partition := range partitions {
if runtime.GOOS != "windows" && !strings.Contains(partition.Device, "/") && !strings.Contains(partition.Device, "\\") { if runtime.GOOS != "windows" && !strings.Contains(partition.Device, "/") && !strings.Contains(partition.Device, "\\") {
@@ -256,16 +257,16 @@ func (this *NodeStatusExecutor) updateDisk(status *nodeconfigs.NodeStatus) {
if partition.Mountpoint != "/" && (usage.Total != rootTotal || total == 0) { if partition.Mountpoint != "/" && (usage.Total != rootTotal || total == 0) {
total += usage.Total total += usage.Total
} totalUsed += usage.Used
totalUsage += usage.Used if usage.UsedPercent >= maxUsage {
if usage.UsedPercent >= maxUsage { maxUsage = usage.UsedPercent
maxUsage = usage.UsedPercent status.DiskMaxUsagePartition = partition.Mountpoint
status.DiskMaxUsagePartition = partition.Mountpoint }
} }
} }
status.DiskTotal = total status.DiskTotal = total
if total > 0 { if total > 0 {
status.DiskUsage = float64(totalUsage) / float64(total) status.DiskUsage = float64(totalUsed) / float64(total)
} }
status.DiskMaxUsage = maxUsage / 100 status.DiskMaxUsage = maxUsage / 100