Azure DevOps Server:扩充数据库服务器的磁盘

Contents

1. 场景描述

最近在处理Azure DevOps Server的服务器问题过程中,遇到一个扩展磁盘的场景,这里简单分享一下。

问题是这样的,在早期的系统部署的过程中,由于数据量不太大,为了充分利用服务器资源,将数据库服务器部署在虚拟机中,而没有使用独立的物理服务器来部署数据库。但是随着开发团队的逐步增长,数据库占用的磁盘空间越来愈多,之前分配的磁盘已经逐渐达到限额,急需扩充磁盘空间。

在这个环境中,服务器架构使用了典型的高可用机制,应用层部署了多个节点,数据库层使用SQL Server的高可用机制,创建了AlwaysOn集群;系统架构示意图如下。


2. 实现方案

问题描述

由于服务器的部署时间较早,数据库服务器初始化磁盘时选择了MBR格式,导致无法扩展磁盘,因为MBR磁盘的最大空间为2TB;因此当磁盘文件接近限额时,我们不能使用扩展磁盘的方式来增加磁盘空间。

解决方案

经过几次试验,最终采取的方案是,在Hyper-V中为虚拟机新增一块大空间的磁盘,并初始化为GPT格式;

注意,MBR和GPT磁盘格式的区别是磁盘的扩展性,如果操作系统比较旧,无法识别GPT格式;GPT格式的磁盘在理论上可以达到18EB空间(1EB=1024PB,1PB=1024TB;1TB=1024GB);

笔者在扩展磁盘的过程中,主要按照下面的方式实施,过程比较顺畅和安全:

  1. 首先扩展辅助节点

    在SQL Server 的高可用架构中,对辅助节点的停机、重启都不会中断用户的正常使用。

    如果需要首先扩展主节点,可以通过转移服务的方式,将SQL Server主辅节点互换。

  2. 关闭需要扩充磁盘的数据库服务器

  3. 新增磁盘

    关闭需要扩充磁盘的数据库服务器后,在Hyper-V的控制台中,为数据库服务器新增一块动态磁盘,磁盘空间可以按照自己的评估设置,例如5TB

    image

    注意,尽量使用SCSI类型的磁盘驱动器,它可以实现热插拔,就是说可以在不停机的状况下卸载或新增磁盘;笔者为了安全期间还是在关机状态下新增磁盘。

  4. 初始化GPt磁盘

    新增磁盘后,重新启动服务器,并在磁盘管理器中初始化磁盘,特别需要注意,选择GPT类型的磁盘格式,并创建分区

    image
  5. 复制文件到新增磁盘

  • 再次关闭服务器,在Hyper-V宿主机中,挂在两块磁盘文件;
  • 将原来数据库所在磁盘的所有文件复制到新建的磁盘中
  • 在Hyper-V的控制台中,将原的数据库磁盘文件移除
  1. 重新启动服务器,更改磁盘驱动器号
    例如新增磁盘的驱动器号为E,为其修改为D
    在修改的过程中,可能系统提示错误,主要原因是操作系统设置了虚拟内存;需要将磁盘中的虚拟内存清除。


  1. 重新启动操作系统
    完成上面的操作后,重新启动操作系统,你会发现SQL Server已经正常运行;在SQL Server的AlwaysOn面板中也会看到全部绿色,顺利完成任务!

https://www.cnblogs.com/danzhang

Azure DevOps MVP 张洪君


相关推荐
爬也要爬着前进6 小时前
redis主从搭建
数据库·redis·缓存
@Mike@7 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
keyipatience8 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
踏月的造梦星球8 小时前
达梦数据库执行计划与性能分析入门:EXPLAIN、AUTOTRACE 与 ET
服务器·数据库·oracle
笃行3508 小时前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
老纪的技术唠嗑局8 小时前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
星夜夏空999 小时前
网络编程(1)
服务器·网络
川石课堂软件测试9 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3509 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~10 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql