记一次ESXI主机在线扩容

一、需求

虚拟机磁盘空间不足,需要扩容,ESXI主机未接存储,且虚拟机磁盘模式均为“厚置备延迟置零”,主机仅剩余16GB存储空间,无法满足扩容需求,需要为ESXI主机的磁盘组进行扩容。

操作过程:插入物理磁盘–>配置磁盘RAID–>ESXI存储扩容–>虚拟机添加硬盘–>linux lvm扩容。

整个过程顺利的话均可在不影响业务正常运行的情况下,在线完成,但仍建议,在业务闲时或的低峰期进行操作。以下为详细操作过程。

二、服务器RAID组扩容

本次扩容的服务器型号为DELL Poweredge R730xd,RAID控制器为PERC H330 Mini (嵌入式),支持实时配置。目前拥有两块2TB的物理磁盘,布局为RAID1。本次操作将额外插入两块2TB物理磁盘,再创建一个RAID1虚拟磁盘。

插入物理磁盘后,有两种方式在线创建虚拟磁盘。

1、通过idrac8 web页面创建虚拟磁盘

首先查看物理磁盘是否已经识别,依次点击“存储——物理磁盘”,定位新插硬盘。硬盘“状况”如果为“非RAID”,则需要点击“存储——物理磁盘——设置”,将硬盘转换为RAID模式,才可以进一步操作。

依次点击“存储——虚拟磁盘——创建”,勾选物理磁盘,选择“布局”为raid1,其余配置使用默认配置即可。图中已操作完成,无多余物理磁盘,所以无法选择。

idrac8操作界面

“应用操作模式”选择“立即应用”,点击“创建虚拟机磁盘”,即可开始raid创建,可在“作业队列”中查看创建进度。

读取策略将表示控制器在搜索数据时是否必须读取虚拟磁盘连续扇区:

  • 自适应预读 — 仅当两条最新的读取请求访问磁盘的顺序扇区时,控制器才启动预读。如果随后的读取请求访问磁盘的随机 扇区,则控制器将恢复为使用不预读策略。控制器将继续评估读取请求是否访问磁盘的连续扇区,并在必要时启动预读。
  • 预读 – 控制器在搜寻数据时读取虚拟磁盘的顺序扇区。如果将数据写入虚拟磁盘的顺序扇区,那么预读策略可以提高系统 性能。
  • 不预读 – 选择不预读策略表示控制器不应使用预读策略。

写策略指定控制器是否在数据一进入高速缓存或写入该磁盘后就发送写请求完成信号。

  • 直写 – 只有在数据写入磁盘后控制器才发出写入请求完成信号。直写缓存提供比回写缓存更高的数据安全性,因为系统假 设数据仅在安全写入磁盘后才可用。
  • 回写 — 在数据位于控制器缓存中但尚未写入磁盘时,控制器即会发送写入请求完成信号。回写缓存可提供改进的性能,因 为后续的读取请求可以先从高速缓存然后再从磁盘快速检索数据。但是,在发生系统故障时可能会发生数据丢失情况,从 而导致数据无法写入磁盘。当操作假设磁盘上的数据可用时,其他应用程序也可能会遇到问题。
  • 强制回写 — 不管控制器是否具有电池,都将启用写入高速缓存。如果控制器无电池且已使用强制回写高速缓存,出现电源 故障时,可能发生数据丢失。

磁盘高速缓存策略适用于特定虚拟磁盘上的读取。这些设置不影响预读策略。

2、使用使用PowerEdge RAID控制器(PERC)命令行界面(CLI)实用程序PERCCLI创建RAID

这种方式通用性比较强,如果IDRAC中不支持创建虚拟磁盘(如果RAID控制器固件版本较低,则可能不支持,注意,升级RAID控制器固件版本需重启服务器),或者新插入的磁盘在idrac中未显示出来,则建议采用这种方式。

可参考链接:https://www.dell.com/support/article/zh-cn/sln283135/如何使用poweredge-raid控制器-perc-命令行界面-cli-实用程序管理raid控制器?lang=zh

下载适用于VMware的PERCCLI程序,下载链接为:https://www.dell.com/support/home/cn/zh/cnbsd1/drivers/driversdetails?driverid=17ngt&oscode=xi67&productcode=poweredge-r730xd

下载PERCCli_VMWare_17NGT_A08_7.1020.tar.gz,解压后得到:vmware-perccli_007.1020.vib

安装方法为:ESXI开启SSH服务,通过SSH登录ESXI后,上传vmware-perccli_007.1020.vib,安装命令为:

esxcli software vib install -v **/vmware-perccli-xxx.xxxx.xxxx.xxxx.vib --no-sig-check

安装完成后perccli命令所在目录为:

cd /opt/lsi/perccli

查看物理磁盘信息(c0:Controller 0、eall:all Enclosure、sall:all Slot):

[root@localhost:/opt/lsi/perccli] ./perccli /c0/eall/sall show
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive Information :
=================

----------------------------------------------------------------------------
EID:Slt DID State DG     Size Intf Med SED PI SeSz Model            Sp Type 
----------------------------------------------------------------------------
32:0      0 Onln   0 1.818 TB SAS  HDD N   N  512B ST2000NM0023     U  -    
32:1      1 Onln   0 1.818 TB SAS  HDD N   N  512B ST2000NM0023     U  -    
32:3      3 JBOD   - 1.819 TB SAS  HDD N   N  512B ST2000NM0001     U  -    
32:4      4 JBOD   - 1.819 TB SAS  HDD N   N  512B ST2000NM0001     U  -    
----------------------------------------------------------------------------

EID=Enclosure Device ID|Slt=Slot No.|DID=Device ID|DG=DriveGroup
DHS=Dedicated Hot Spare|UGood=Unconfigured Good|GHS=Global Hotspare
UBad=Unconfigured Bad|Onln=Online|Offln=Offline|Intf=Interface
Med=Media Type|SED=Self Encryptive Drive|PI=Protection Info
SeSz=Sector Size|Sp=Spun|U=Up|D=Down|T=Transition|F=Foreign
UGUnsp=Unsupported|UGShld=UnConfigured shielded|HSPShld=Hotspare shielded
CFShld=Configured shielded|Cpybck=CopyBack|CBShld=Copyback Shielded
UBUnsp=UBad Unsupported|rbld=Rebuild

可以看到32:3、32:4两块磁盘处于JBOD(即Non-RAID硬盘)状态,未关联磁盘组。首先将硬盘设置为RAID模式:

[root@localhost:/opt/lsi/perccli] ./perccli /c0/e32/s3 set good force
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = Set Drive Good Succeeded.

[root@localhost:/opt/lsi/perccli] ./perccli /c0/e32/s4 set good force
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = Set Drive Good Succeeded.

[root@localhost:/opt/lsi/perccli] ./perccli /c0/eall/sall show
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive Information :
=================

----------------------------------------------------------------------------
EID:Slt DID State DG     Size Intf Med SED PI SeSz Model            Sp Type 
----------------------------------------------------------------------------
32:0      0 Onln   0 1.818 TB SAS  HDD N   N  512B ST2000NM0023     U  -    
32:1      1 Onln   0 1.818 TB SAS  HDD N   N  512B ST2000NM0023     U  -    
32:3      3 UGood  - 1.818 TB SAS  HDD N   N  512B ST2000NM0001     U  -    
32:4      4 UGood  - 1.818 TB SAS  HDD N   N  512B ST2000NM0001     U  -    
----------------------------------------------------------------------------

EID=Enclosure Device ID|Slt=Slot No.|DID=Device ID|DG=DriveGroup
DHS=Dedicated Hot Spare|UGood=Unconfigured Good|GHS=Global Hotspare
UBad=Unconfigured Bad|Onln=Online|Offln=Offline|Intf=Interface
Med=Media Type|SED=Self Encryptive Drive|PI=Protection Info
SeSz=Sector Size|Sp=Spun|U=Up|D=Down|T=Transition|F=Foreign
UGUnsp=Unsupported|UGShld=UnConfigured shielded|HSPShld=Hotspare shielded
CFShld=Configured shielded|Cpybck=CopyBack|CBShld=Copyback Shielded
UBUnsp=UBad Unsupported|rbld=Rebuild

设置完成后即可创建raid,创建raid1的命令为:

[root@localhost:/opt/lsi/perccli] ./perccli /c0 add vd r1 size=all drives=32:3,32:4
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = Add VD Succeeded.

可使用如下命令查看虚拟磁盘初始化过程:

[root@localhost:/opt/lsi/perccli] ./perccli /c0/vall show init
CLI Version = 007.1020.0000.0000 July 1, 2019
Operating system = VMkernel 6.7.0
Controller = 0
Status = Success
Description = None


VD Operation Status :
===================

-----------------------------------------------------------
VD Operation Progress% Status          Estimated Time Left 
-----------------------------------------------------------
 0 INIT      -         Not in progress -                   
 1 INIT      -         Not in progress -                   
-----------------------------------------------------------

磁盘创建完成后需关注后台初始化过程(此过程影响磁盘性能):

[root@localhost:/opt/lsi/perccli] ./perccli /c0/vall show bgi

后台初始化 (BGI) 率:在 PERC 控制器上,冗余虚拟磁盘的后台初始化会在虚拟磁盘创建后 0 到 5 分钟内自动开始。冗余虚拟磁盘的后台初始化会准备虚拟磁盘以维持冗余数据并提高写入性能。例如,RAID 5 虚拟磁盘的后台初始化操作完成后,奇偶校验信息已初始化。RAID 1 虚拟磁盘的后台初始化操作完成后,物理磁盘将进行镜像。 后台初始化过程有助于控制器识别和纠正今后冗余数据可能发生的问题。在这方面,后台初始化过程与检查一致性过程类似。应 允许后台初始化运行直至完成。如果取消,后台初始化会在 0 到 5 分钟内自动重新启动。后台初始化正在运行时,某些进程 (比如读和写操作)可以执行。创建虚拟磁盘等其他进程无法与后台初始化同时运行。这些过程会造成后台初始化取消。 后台初始化率(可配置为 0% 到 100%)代表专用于运行后台初始化任务的系统资源的百分比。为 0% 时,后台初始化对于控 制器具有最低优先级,需要最长的时间才能完成,且对系统性能的影响最小。后台初始化率为 0% 不表示后台初始化已停止或 暂停。为 100% 时,后台初始化为控制器的最高优先级。后台初始化时间最短,并且是对系统性能的影响最小的设置。

以及一致性检查:

[root@localhost:/opt/lsi/perccli] ./perccli /c0/vall show cc

检查一致性:检查一致性任务可以验证冗余(奇偶校验)信息的准确性。此任务仅适用于冗余虚拟驱动器。如果需要,检查一致性任务可重建冗余数据。当虚拟磁盘处于“失败的冗余”状态时,执行检查一致性可能让虚拟磁盘返回到就绪状态。 检查一致性率(可配置为 0% 到 100%)代表专用于运行检查一致性任务的系统资源的百分比。为 0% 时,检查一致性对于控制器具有最低优先级,需要最长的时间才能完成,且对系统性能的影响最小。检查一致性率为 0% 不表示此过程已停止或暂 停。为 100% 时,检查一致性为控制器的最高优先级。检查一致性时间最短,并且是对系统性能的影响最大的的设置。

以上为服务器磁盘扩容过程

三、VMware ESXI 6.7存储扩容

此过程在web页面操作即可。

依次点击“存储——数据存储”,选中需要扩容的存储,点击“增加容量”,“创建类型”选择“向现有VMFS数据存储添加数据区”,下一步下一步即可,此过程支持实时配置,不影响业务正常运行。(“选择设备”步骤可用来验证虚拟磁盘创建成功与否,注意看可选的设备与你的预期是否相同)

此过程不赘述。

四、为虚拟机添加硬盘

此过程在web页面操作即可。

依次点击要扩容的虚拟机,“编辑”——“添加硬盘”,硬盘类型可根据实际需要选择。简单来说,ESXI硬盘类型的选择可按照如下原则进行:

  • 磁盘空间不富余,磁盘读写性能要求不高——选择“精简置备”
  • 磁盘空间充足,磁盘读写性能要求一般——选择“厚置备-延迟置零”
  • 磁盘空间充足,磁盘读写性能要求较高,操作时间充足——选择“厚置备置零”(厚置备置零过程耗时很长)

五、Linux lvm扩容

已CentOS7为例,为/home目录扩容。

查看新增磁盘名称(例如为/dev/sdb):

fdisk -l

添加分区:

fdisk /dev/sdb
输入n,增加分区
选择p,增加主分区,依次回车
输入t,选择8e
输入w,写入分区表

创建物理卷,并加入卷组:

pvcreate /dev/sdb1 ---创建物理卷
vgdisplay ---查看VG Name
vgextend vg_name /dev/sdb1 ---为卷组增加容量 

逻辑卷扩容:

lvextend -l +100%FREE /dev/mapper/centos-home

重新加载逻辑卷:

xfs_growfs /dev/mapper/centos-home
或
resize2fs /dev/mapper/centos-home
---根据文件系统类型选择,Centos7默认为xfs

此过程可在线完成,不影响业务正常运行。