使用Terraform将Azure SQL VM数据盘从4TB扩容至8TB失败咨询
问题根因
报错信息:更新托管磁盘失败。当磁盘挂载在虚拟机上时,无法将其扩容至4TB以上(原报错:
Error updating managed disk.disks can not be resized beyond 4TB when attached to vm)
该报错由Azure平台原生校验规则触发,常见原因有两类:
- 你使用的SQL虚拟机为第一代(Generation V1)Azure虚拟机,该代系虚拟机的挂载磁盘上限为单盘4TB,即使虚拟机处于已解除分配状态也无法突破该硬件限制
- 虚拟机为第二代(Generation V2),但Terraform azurerm provider的默认执行逻辑未先解除磁盘与虚拟机的关联关系,直接触发磁盘扩容操作,被平台判定为磁盘仍处于挂载状态,触发容量限制校验
解决方案
步骤1:确认虚拟机代系
执行Azure CLI命令查询虚拟机代系:
az vm get-instance-view --resource-group <你的资源组名称> --name <你的SQL虚拟机名称> --query "instanceView.hyperVGeneration" -o tsv
- 若返回结果为
V1:无法支持单块数据盘扩容至8TB,可选择将业务迁移至第二代SQL VM,或是挂载多块4TB以下磁盘,在虚拟机内部配置存储池合并容量 - 若返回结果为
V2:继续执行后续扩容操作
步骤2:调整Terraform执行逻辑完成扩容
- 修改Terraform配置,将目标数据盘从
azurerm_windows_virtual_machine(SQL VM默认是Windows系统)资源的storage_data_disk配置块中移除,执行terraform apply完成磁盘卸载 - 修改
azurerm_managed_disk资源中对应磁盘的disk_size_gb参数值为8192,执行terraform apply完成磁盘容量扩容 - 将数据盘配置重新添加到虚拟机的
storage_data_disk块,执行terraform apply完成磁盘重新挂载
步骤3:虚拟机内部扩容分区
磁盘挂载完成后启动虚拟机,进入系统完成分区扩容:
- 打开Windows磁盘管理,找到扩容后的磁盘,右键点击已有分区选择「扩展卷」,按指引完成操作即可。只要磁盘盘符未发生变更,无需额外修改SQL Server的存储配置即可正常使用扩容后的容量
内容的提问来源于stack exchange,提问作者Prasenjit Roy
相关产品推荐
相关产品推荐

