基于基础网络构建的 VDI 虚拟云桌面环境,考虑从现有环境迁移至 TCE 私有云环境,将 VDI 虚拟云桌面环境部署到 TCE 私有云环境中。客户的 VDI 方案采用的是华为的云桌面方案,采用 FusionCompute 6.5.1 做虚拟化(该客户用的是本地盘,因此主要用于桌面虚拟化),华为标准桌面云-逻辑架构如下图所示:

​

“FusionCompute 是云操作系统软件,主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性,协助运营商和企业构筑安全、绿色、节能的云数据中心能力。” FusionCompute在虚拟化套件中的位置如下图所示。

​

FusionCompute逻辑结构分为两个部分:CNA 和 VRM,VRM 通过 RESTful 接口进行 CNA 管理:

  • CNA:计算节点代理,管理计算节点虚拟机以及计算、网络、存储资源;
  • VRM:虚拟资源管理,主要是对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP 等服务。

简而言之,CNA 是数据面、VRM 是控制面。因此方案上需要将 VRM 部署在 TCE 私有云环境内,可以是物理机或是虚拟机(CVM),由于是管控节点在资源消耗上面并不高,因此更为适合云服务器 CVM 上面进行部署,故而需要验证华为 FusionCompute 6.5.1 VRM 是否能够部署到 CVM 内且正常运行。

技术方案及实施细节

在本次方案验证中使用的工具或软件如下:

  • FusionCompute 6.5.1 VRM ISO 镜像,华为官方 FusionCompute ISO 镜像,此处并未采用官方提供的虚拟磁盘文件,采用 ISO 镜像进行安装再进行镜像处理。
  • pvshrink:进行 PV 卷大小调整的工具。
  • green cloud-init:cloud-init 绿色安装版,仅需要下载解压进行命令执行就可以安装。
  • GParted Live CD 1.1.0-1 amd64:著名分区管理 GParted 的 Live CD,便于虚拟机的磁盘分区管理。
  • VirtualBox:使用 VirtualBox 进行虚拟机创建和镜像安装处理。
  • OS:MacOS。

VRM 部署到云服务器技术方案验证的思路如下:

  • 步骤一:使用 VirtualBox VRM ISO 镜像安装;
  • 步骤二:针对于 CVM 导入镜像标准,进行依赖软件安装和检查;
  • 步骤三:针对于 CVM 导入镜像标准,进行 VRM 虚拟机规格调整;
  • 步骤四:将镜像文件上传至 COS,进行自定义镜像导入。
  • 步骤五:使用自定义镜像创建 VRM 虚拟机。

步骤一:使用 VirtualBox VRM ISO 镜像安装

使用 VirtualBox 来创建来运行 VRM 的虚拟机,具体规格如下:

  • 操作系统:Red Hat Linux 64bit,VRM 镜像中带的 OS 是 Euler OS 2.0 SP5,实际就是 CentOS 7 上的华为修改版
  • 内存:官方建议 8GB,实际按情况选择
  • 磁盘:容量选择 130 GB,因为 VRM 官方镜像去格式化磁盘时容量至少需要 120GB,格式选择 vmdk、vdh 都行,因为 CVM 导入支持这些格式,虚拟磁盘文件实际物理存储方式选择动态类型
  • 网络:选取桥接或NAT都行,不过得先弄清楚网段配置,后面安装时网络配置用得上,这里选用的是桥接的方式预先分配好 IP
  • 存储:光驱选择加载 FusionCompute 6.5.1 VRM ISO 镜像

启动虚拟机,选择安装,如下图所示:

​

待加载完毕后,会进入 FusionCompute VRM 的图形化安装界面,如下图所示:

​

有两个选项必须配置:Password、Network。Password 配置界面如下图所示:

​

Network 配置界面如下图所示:

​

​

需要注意的是,选取 IPv4,然后选择配置静态 IP 地址,这里的网关和 IP 地址配置是分为两个界面进行操作,为何不选择 DHCP 呢?因为实际试验中发现,如果选用 DHCP 打包出来的镜像,会出现网卡起不起来的问题,通过排查怀疑是 cloud-init 会初始化一张网卡,dhcpclient 也会初始化一张网卡,因此采用配置静态 IP。

安装完毕等待重启进入操作系统,待控制台出现登录界面,宿主机使用浏览器访问 VRM 地址:https://IP-Adress:8443 ,如果能够看到如下页面就表示 VRM 镜像安装成功。

​

​

提示:记得把 sshd config 的 root 登录开启,这样通过ssh登录操作比较方便。

步骤二:针对于 CVM 导入镜像标准,进行依赖软件安装和检查

目前已经将 VRM 标准镜像在本地虚拟机安装并成功运行,接下来要导入到腾讯云(公有云、TCE 私有云)上做自定义镜像需要做如下准备:

  • 系统检查 Virtio 驱动
  • cloud-init 安装
  • 磁盘空间大小调整,当前为 130GB,腾讯云导入自定义镜像系统盘大小不能超过 50GB(这块比较复杂,作为专门的步骤三进行说明)

接下来先进行 Virtio 驱动检查,查看腾讯云官网文档:Linux 系统检查 Virtio 驱动 来进行检查,试验中发现 VRM 的这个镜像是具有 Virtio 驱动的,因此此项通过。

再来进行 cloud-init 安装,这里推荐绿色安装版 green cloud-init,下载并上传至虚拟机,执行安装。

tar zxvf greeninit.tgz
cd greeninit
chmod a+x install.sh
./install.sh

检查 cloud-init 是否启动成功,可以参考腾讯云官网文档:Linux 系统安装 cloud-init 指南

步骤三:针对于 CVM 导入镜像标准,进行 VRM 虚拟机规格调整

VRM 虚拟机规格调整实际上分为两个事项:

  • 事项一:VRM 虚拟机磁盘容量调整;
  • 事项二:虚拟机虚拟磁盘文件 Virtual Size 调整。

这两个事项是否成功是整个 VRM 镜像是否能够成功导入自定义镜像的关键,开始接下来操作之前,先简单介绍几个概念,以便理解后续操作。

  • LVM:LVM 是 Logical Volume Manager(逻辑卷管理器)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。
    • PV 物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
    • VG 卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成
    • LV 逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
  • 虚拟机磁盘文件容量,这里的虚拟机磁盘文件就是虚拟机作为实际存储虚拟机磁盘数据的文件,就是前面我们创建虚拟机时选择磁盘大小和文件格式后续生产的文件。
    • Virtual Size:虚拟机磁盘容量大小,例如前面配置为 130GB
    • Actual Size: 虚拟机磁盘文件实际大小,也就是虚拟机磁盘文件(vmdk、vhd)在宿主机实际所占硬盘空间

为什么这几个概念会这么重要,因为接下来的操作调整都是跟他们有关:

  • Virtual Size 如果大于 50GB,该镜像是无法被导入为自定义镜像的;
  • Actual Size 大小会决定你上传到 COS 的耗时,当然也不能超过 50GB;
  • LVM 因为 VRM 镜像使用 LVM 造成在给该 VRM 由 130GB 缩小容量至 50GB 以内的过程变得较复杂。

接下来,我们先进行“事项一”的操作实施,在实施之前我们先看下 VRM 镜像默认的 LVM 使用情况。

​

整个 VG 卷组分配了 119 GB 的空间。

​

lvscan 可以帮助我们来看各个 LV 逻辑卷的容量分配情况。

​

最后可以通过 mount 命令查看下这些 LV 被挂载到哪些目录,帮助我们理解 VRM 镜像磁盘空间的分配依据。

不难看出整个 VG 卷组已经预分配好了 119 GB 的空间,我们并不能就这样直接进行分区调整,而是要将各个 LV 逻辑卷容量进行调整后,才能够进行 VG 卷组容量的调整。接下来我们就要用到 GParted Live CD 帮助我们进行磁盘调整,我们先进行虚拟机关机,然后将 GParted Live CD 1.1.0-1 amd64 镜像文件挂载到光驱,然后启动虚拟机进入 GParted Live CD。

GParted 启动菜单选择默认配置就好。

​

GParted 启动配置选择 Do not match keymap,然后语言选择 26 简体中文。

​

接下来打开 Terminal 开始进行 LV 逻辑卷调整,在开始调整前先看下调整后的结果,即各个 LV 逻辑卷的容量分配如下:

​

现在开始对各个 LV 逻辑卷进行容量调整,命令如下(需要每个 LV 逻辑卷都进行调整,以下已 lv_root 为例):

# 检查下 LV 逻辑卷,如果出现需要修复,就确认修复就好
sudo e2fsck -f /dev/vg_vrm/lv_root
# 调整 LV 逻辑卷大小,调整会花些时间等待就好
sudo lvreduce --resizefs -L 5G /dev/vg_vrm/lv_root

接下来,按照最后的 LV 逻辑卷容量规划进行逐个调整既可。LV 逻辑卷大小调整完毕后,重启进行 VRM 虚拟机。接下来我们要进行 PV 物理卷容量调整,因为 LV 逻辑卷容量之前就分配好了,现在我们直接调整 PV 物理卷大小是不可以的,我们先要进行块的移动整理,然后才能够进行 PV 物理卷容量调整。这里我们将用到一个工具: pvshrink:进行 PV 物理卷大小调整的工具。下载并上传至 VRM 虚拟机。

pvs -o +pv_used /dev/sda2 

查看 PV 物理卷使用情况:

​

可以看到我们调整 LV 逻辑卷完毕后,一共使用 43GB 空间,那接下来我们尝试直接使用 pvresize 命令,将 PV 物理卷大小修改为 43GB。

pvresize --setphysicalvolumesize 43g /dev/sda2 

执行结果如下图所示,不难看出执行失败了,原因就是需要进行块的移动处理。

​

LVM提供了pvresize工具,可用于增大或缩小LVM物理卷的大小。 pvresize只能通过删除PV末端的自由空间来减小PV的大小。 例如,如果将PV的使用分散了,例如,由于删除了分区开始处正在使用空间的LV,则必须先使用pvmove重新整理PV中的盘区,然后才能使用pvresize回收空间。 根据碎片数量,可能需要多次调用pvmove。这里我们使用 pvshrink 这个工具来帮助我们执行这些命令和操作。

./pvshrink /dev/sda2

执行后等待工具帮我们整理 PV 物理卷,如下图所示:

​

等待 pvshrink 工具调整完毕 PV 物理卷后,就可以执行 pvresize 命令进行容量调整了。

# 查看具体使用的容量情况
pvs --units b -o pv_name,pv_used /dev/sda2
# 容量参数的值,由前面的查看命令执行结果来决定
pvresize --setphysicalvolumesize 46170898432B /dev/sda2 

调整完 PV 物理卷容量后,接下来我们使用 GParted 把分配的磁盘空间调整到 47G,确保多出来的空间处于未分配状态。现在关闭虚拟机,然后挂载 GParted Live CD ISO 镜像,然后运行 GParted 工具进行磁盘空间调整,调整过程如下图:

​

磁盘调整完毕关闭虚拟机,至此我们终于完成了事项一:VRM 虚拟机磁盘容量调整,接下来将进行事项二:虚拟机虚拟磁盘文件 Virtual Size 调整。接下来我们将使用 VBoxManage 这个命令帮助我们进行 Virtual Size 的调整,以下是调整思路:

  • 创建一个新的虚拟机,网络配置与原先虚拟机一致,虚拟磁盘文件格式配置与 VRM 虚拟机一致,但容量选择为 47GB。(不要启动该虚拟机)
  • 使用 VBoxManage clonemedium 命令将 VRM 虚拟机虚拟磁盘文件拷贝到新虚拟机的虚拟磁盘文件内。

为什么不能使用 VBoxManage 来直接进行虚拟磁盘文件的 resize,因为 resize 只能扩容不能缩容,所以需要新建虚拟机的方式进行磁盘缩容。

# VBoxManage clonemedium disk 旧虚拟机磁盘文件路径 新虚拟机磁盘文件路径 --existing 例如
VBoxManage clonemedium disk fc651-vrm/fc651-vrm.vmdk fc651-vrm-test/fc651-vrm-test.vmdk --existing 

在磁盘拷贝完毕之后,启动新的虚拟机(fc651-vrm-test),这时会发现启动失败,提示进入修复界面,这是因为 /etc/fstab 里面 /boot 分区挂载点不对所造成的启动失败,输入root密码登录控制台,修改 /etc/fstab 文件,更改 /boot 挂载 /dev/sda1,然后保存 /etc/fstab 重启验证是否正常,确认正常后关闭该虚拟机。

步骤四:将镜像文件上传至 COS,进行自定义镜像导入

接下来通过浏览器将虚拟机虚拟磁盘文件 fc651-vrm-test.vmdk 上传到 COS,这里需要注意地域,确保 COS 的地域与要导入自定义镜像的地域一致。

​

​

上传成功后,将该 vmdk 文件的权限,改为公有读私有写,以便镜像导入程序能够成功下载,接下来进入控制台->云服务器->镜像->导入镜像。(注意地域的选择)

​

导入镜像页面,填入 vmdk 文件 URL(是对象地址,不是临时下载地址),镜像名称自己起一个,例如 fc651-vrm,记得一定要选择强制导入,如下图所示。

​

然后就提交导入任务,等待导入完成,导入完成后镜像列表如下。

​

步骤五:使用自定义镜像创建 VRM 虚拟机

在自定义镜像列表选择导入进去的 VRM 镜像,进行“创建实例”操作,创建 CVM 实例成功后,进行 VNC 登录,因为 /boot 分区挂载点的问题会启动失败,因此输入root 密码登录控制台,修改 /etc/fstab 文件,更改 /boot 挂载 /dev/vda1,然后保存 /etc/fstab 重启验证是否正常。(这里是因为云服务器的磁盘是以 vda 开始的)

​

至此确保该 CVM 云服务器实例挂载 EIP 弹性公网 IP,并安全组放开 8443,然后用浏览器访问应该看到 VRM 登录界面了。

文章来源于腾讯云开发者社区,点击查看原文