diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index caf376b07c..f8577a53cf 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -17,6 +17,7 @@ package guestdrivers import ( "context" "fmt" + "math" "time" "yunion.io/x/jsonutils" @@ -68,7 +69,7 @@ func (self *SManagedVirtualizedGuestDriver) GetJsonDescAtHost(ctx context.Contex if i == 0 { config.SysDisk.Name = disk.Name config.SysDisk.StorageType = storage.StorageType - config.SysDisk.SizeGB = disk.DiskSize / 1024 + config.SysDisk.SizeGB = int(math.Ceil(float64(disk.DiskSize) / 1024)) cache := storage.GetStoragecache() imageId := disk.GetTemplateId() //避免因同步过来的instance没有对应的imagecache信息,重置密码时引发空指针访问 diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 8d4d5a349d..3f4a2ce937 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -1250,7 +1250,7 @@ func fillDiskConfigByImage(ctx context.Context, userCred mcclient.TokenCredentia } // diskConfig.ImageDiskFormat = image.DiskFormat CachedimageManager.ImageAddRefCount(image.Id) - if diskConfig.SizeMb == 0 { + if diskConfig.SizeMb < image.MinDiskMB { diskConfig.SizeMb = image.MinDiskMB // MB } } diff --git a/pkg/image/models/images.go b/pkg/image/models/images.go index 4d584363db..ea4071f0c2 100644 --- a/pkg/image/models/images.go +++ b/pkg/image/models/images.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "io" + "math" "net/http" "os" "os/exec" @@ -433,7 +434,7 @@ func (self *SImage) SaveImageFromStream(reader io.Reader) error { self.DiskFormat = format } if virtualSizeBytes > 0 { - self.MinDiskMB = int32(virtualSizeBytes / 1024 / 1024) + self.MinDiskMB = int32(math.Ceil(float64(virtualSizeBytes) / 1024 / 1024)) } return nil })