@@ -44,6 +44,9 @@ const (
44
44
maxStorageAccounts = 100 // max # is 200 (250 with special request). this allows 100 for everything else including stand alone disks
45
45
maxDisksPerStorageAccounts = 60
46
46
storageAccountUtilizationBeforeGrowing = 0.5
47
+ // Disk Caching is not supported for disks 4 TiB and larger
48
+ // https://docs.microsoft.com/en-us/azure/virtual-machines/premium-storage-performance#disk-caching
49
+ diskCachingLimit = 4096 // GiB
47
50
48
51
maxLUN = 64 // max number of LUNs per VM
49
52
errLeaseFailed = "AcquireDiskLeaseFailed"
@@ -156,10 +159,21 @@ func (c *controllerCommon) AttachDisk(isManagedDisk bool, diskName, diskURI stri
156
159
return - 1 , danglingErr
157
160
}
158
161
159
- if disk .DiskProperties != nil && disk .DiskProperties .Encryption != nil &&
160
- disk .DiskProperties .Encryption .DiskEncryptionSetID != nil {
161
- diskEncryptionSetID = * disk .DiskProperties .Encryption .DiskEncryptionSetID
162
+ if disk .DiskProperties != nil {
163
+ if disk .DiskProperties .DiskSizeGB != nil && * disk .DiskProperties .DiskSizeGB >= diskCachingLimit && cachingMode != compute .CachingTypesNone {
164
+ // Disk Caching is not supported for disks 4 TiB and larger
165
+ // https://docs.microsoft.com/en-us/azure/virtual-machines/premium-storage-performance#disk-caching
166
+ cachingMode = compute .CachingTypesNone
167
+ klog .Warningf ("size of disk(%s) is %dGB which is bigger than limit(%dGB), set cacheMode as None" ,
168
+ diskURI , * disk .DiskProperties .DiskSizeGB , diskCachingLimit )
169
+ }
170
+
171
+ if disk .DiskProperties .Encryption != nil &&
172
+ disk .DiskProperties .Encryption .DiskEncryptionSetID != nil {
173
+ diskEncryptionSetID = * disk .DiskProperties .Encryption .DiskEncryptionSetID
174
+ }
162
175
}
176
+
163
177
if v , ok := disk .Tags [WriteAcceleratorEnabled ]; ok {
164
178
if v != nil && strings .EqualFold (* v , "true" ) {
165
179
writeAcceleratorEnabled = true
0 commit comments