kvm高级功能部署

  • kvm高级功能部署

    • kvm虚拟机的迁移与内核同页合并

      • kvm虚拟机迁移的目的

        • 当一个服务器承载了很多个虚拟机时,就可以利用迁移达到平衡负载的目的。

        • 当需要对服务器的内核等重要组件进行升级时,为了避免升级组件对服务造成影响需要迁移出服务器的虚拟机。

        • 跨地域迁移,当个公司设立分公司或者怎么样地域跨度较大就需要迁移。

      • 迁移的两种方式

        • 静态迁移

          • 需要关闭虚拟机,速度很慢

          • 拷贝磁盘文件与配置文件

        • 动态迁移

          • 基于共享存储的迁移

            • 不需要关闭虚拟机,速度很快

            • 相当于拷贝配置文件

            • 缺点,当虚拟机数据更新过于频繁,超过了内存传输的速度就不适合用该方法。

          • 基于数据块的迁移

            • 不需要关闭虚拟机,速度稍慢,操作简单

            • 相当于拷贝磁中的数据,与配置文件

      • 实验过程

        • 拓扑

          • 目标:

            • 实现静态迁移

            • 实现基于共享存储的动态迁移

            • 实现基于数据块的动态迁移

            • 实现ksm的内存优化

            • 学会多种kvm虚拟机的创建方法

        • 第一种利用virt-manager实现创建虚拟机

        • 第二种利用vnc安装kvm虚拟机

          • 准备前奏

            • 准备iso系统镜像文件,本案例以CentOS-7-x86_64-DVD-2009.iso为例,将其拷贝到/opt下,确保能有权限访问。

          • 处理防火墙与内核安全机制

          • 创建磁盘镜像存储目录

            • mkdir -p /data_kvm/store

          • 利用virt-install创建出虚拟机

            • virt-install -n test01 -r 1024 --vcpus=1 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /opt/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0

              • -n指定创建出的新虚拟机的名字,不能与以前重复。

              • -r(ram):指定内存大小

              • --vcpus=1 ,指定虚拟机的内核数

              • --disk,存储设置

                • path=/data_kvm/store/test01.qcow2

                  • 指定磁盘镜像存储位置并起名

                • ,size磁盘文件的大小10G,注意单位,与磁盘相关设置有多个用“,”号隔开

              • -w指定所使用的网桥

                • bridge=br0

              • --virt-type=kvm

                • 指定虚拟化技术所使用的平台

              • --accelerate

                • kvm加速,是一种优化选项

              • --autostart

                • 会跟随主机的启动虚拟机也会启动

              • -c 指定操作系统镜像文件位置

              • --vnc

                • 要利用vnc技术一种显示系统与桌面共享系统

              • --vncport

                • 指定vnc viewer连接的接口,默认为5901

              • --vnclisten

                • vnc监听的地址

            • 此方法适用于无图形界面的linux操作系统

              • 按下回车后会出现错误,意思是没有图形界面可以让vnc连接。这是正常报错,无需关注。

            • 在windows桌面安装vnc viewer

              • viewer 查看器

              • 以VNC-Viewer-6.17.731-Windows-64bit.exe为例

                • 安装完成后file右键选择新的连接

                • 之后双击建立的连接就可以进入到创建出的虚拟机的桌面。之后走正常流程安装即可

                • 在vnc server填写创建虚拟机的主机IP地址与vnc的端口,name随意设立一样是为了方便区分。

            • 安装完成后可以查看是否安装

              • virsh list --all

              • 用这种方式安装的虚拟机默认时关闭的状态需要手动开启

                • virsh start test01

            • 启动后利用vnc再次连接,看系统能否正常使用。

          • 静态迁移

            • 利用上述方法创建的虚拟机做静态迁移

            • 静态迁移的前提条件,虚拟机是关闭的状态

              • virsh shutdown test01

            • 导出配置文件

              • virsh dumpxml test01 > test01.xml

            • 在不知道虚拟机的磁盘文件时可以利用命令定位

              • virsh domblklist test01

            • 在kvm02上创建对应的目录去承载,需要注意的是一定要与kvm01相对应,因为.xml配置文件中有对应的路径。

              • mkdir -p /data_kvm/store

            • 然后利用scp将磁盘文件与配置文件拷贝到对应的目录下即可

              • scp test01.xml 192.168.10.202:/etc/libvirt/qemu/

                • 拷贝配置文件

              • scp /data_kvm/store/test01.qcow2 192.168.10.202:/data_kvm/store/

                • 拷贝磁盘文件

            • 最后利用配置文件定义虚拟机并启动

              • virsh define /etc/libvirt/qemu/test01.xml

              • virsh start test01

            • 为了后续实验,可以利用virt-manager,或者vnc登录到该虚拟机查看是否是正常的登录界面

              • vrish list --all

                • 该命令列出的running状态不代表虚拟机运行状态

          • 动态迁移

            • 基于共享存储动态迁移

              • 动态迁移的准备前奏

                • 搭建共享存储的服务器,本案例以nfs为例

                  • 开启一个新的服务器,处理防火墙并安装nfs-utils

                  • 修改配置文件 /etc/exports

                    • /data 192.168.10.0/24(rw,sync,no_root_squash)

                  • 启动nfs

                    • systemctl enable nfs --now

                    • 有时作为依赖的rpcbind服务不会作为依赖被同时开启,可以查看进程,如果没开启单独开启即可

                      • systemctl enable rpcbind

                    • showmount -e localhost

                      • 该命令可以检查本主机所有的nfs共享目录

                • 在kvm01与kvm02上创建出对应的挂载目录并进行挂载

                  • mkdir /data_kvm/kgc

                  • mount -t nfs 192.168.10.101:/data /data_kvm/kgc

                  • 实现永久挂载修改/etc/fstab文件

                    • 192.168.10.101:/data /data_kvm/kgc nfs defaults 0 0

                • 第三种虚拟主机的安装方法

                  • 利用官方发行的qcow2格式的系统镜像文件安装,免去系统安装过程。

                    • CentOS-7-x86_64-GenericCloud-2009.qcow2

                  • 将该配置文件上传到挂载好的挂载点中。利用xftp或lrzsz都可。

                  • 利用libguestfs-tools提供的命令设置镜像密码,默认是没有root的密码的

                    • virt-customize -a /data_kvm/store/test02.qcow2 --root-password password:aptech

                      • customize定制

                    • 成功设置后会出现四条绿色字样的消息

                  • 利用virt-install安装虚拟机

                    • virt-install --name=test02 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path=’/data_kvm/kgc/test02.qcow2‘,size=10 -w bridge:br0 --virt-type=kvm --boot hd

                      • --name 新虚拟机的名称

                      • -r 内存大小

                      • --vcpus,分配的内核数量

                      • --disk 设置存储设备及其属性

                        • device 设备类型

                          • cdrom:光盘

                          • disk:硬盘

                          • floppy:软盘

                        • bus:磁盘总线类型

                          • 总线类型是指磁盘与计算机系统之间的物理接口或者通信类型,不同的总线类型决定了磁盘如何与系统其余部分进项数据交换,影响的是磁盘的是数据传输速率,可靠性和成本等。

                          • 常见的磁盘总线类型

                            • sata,支持热插拔

                            • scsi,适用于高性能计算环境的磁盘接口标准,价格更高。

                            • pcie:用于内部计算机组件的高速扩展总线标准用于内部计算机组件的高速扩展总线标准

                            • M.2:小型固态硬盘接口标准,支持sata和pcie的总线标准。

                        • path=

                          • 新虚拟机存放磁盘镜像文件的位置

                        • size=10(G)

                          • 磁盘镜像文件的大小

                        • -w bridge:br0 桥接模式

                          • network取w

                        • --virt-type=

                          • 使用的虚拟化平台,kvm

                        • --boot

                          • 指定引导的次序,常见的引导次序有光盘(cdrom),硬盘(hd),网络(nhetwork)

                    • 等待创建完毕后可以利用工具进项的登录查看

                      • virsh list --all

              • 实现动态迁移

                • 在进行迁移之前,要查看两台kvm的虚拟机状态,为了体现动态迁移的优势,可以在开机状态下进行迁移,同时要确保kvm02上没有同名的虚拟机。

                • 在进行动态迁移之前要确保驱动器不做缓存

                  • 关闭虚拟机修改配置参数

                    • virsh shutdown test02

                    • virsh edit test02

                      • <driver name='qemu' type='qcow2' cache='none'/>

                      • 如果不修改在进行迁移时会报错

                    • 之后开启虚拟机

                      • virsh start test02

                • 迁移命令

                  • virsh migrate --live --verbose test02 qemu+ssh://192.168.10.202/system tcp://192.168.10.202

                    • --live 实时迁移,不中断虚拟机运行

                    • --verbose:显示迁移进度

                    • test02 要迁移的虚拟机名称

                    • qemu+ssh

                      • 用ssh的协议连接目标主机上的QEMU的hypervisor,

                        • hypervisor:虚拟机监控程序

                    • /system连接目标主机的libvirtdaemon的system级别

                  • 迁移完成后再两台kvm主机上查看虚拟机状态

                    • 原虚拟机的状态显示关闭

                    • 迁移后的虚拟机状态显示运行

                  • 最后需要导出配置文件并定义,方便进行后续的管理

                    • virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml

                    • virsh define /etc/libvirt/qemu/test02.xml

            • 基于数据块的动态迁移

              • 需要动态迁移的主机需要依赖额外的软件包

                • 布置网络yum仓库

                  • 建议使用ali

                  • 布置完成后利用该命令生成软件包所需要的yum仓库

                    • yum -y install centos-release-qemu-ev

                      • release:公布,释放

                  • vim /etc/yum.repos.d/CentOS-QEMU-EV.repo

                    • 需要修改成国内的源

                      • baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/virt/$basearch/kvm-common/

                      • 禁用国外的mirrorlist源启用baseurl源并修改网址

                  • 最后重新建立缓存并安装所需软件包

                    • yum -y install qemu-kvm-ev

                  • 该软件安装完成后需要重启系统才能使用,需要注意重启,以及确定防火墙状态

                • 迁移准备前奏

                  • 确保hosts文件有条目,能实现域名通信

                    • 192.168.10.201 kvm01

                    • 192.168.10.202 kvm02

                  • 为了方便克隆一台虚拟机以作实验

                    • virsh list --all

                    • virsh shutdown test01

                      • 关机才能做克隆

                    • virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2

                      • 注意磁盘镜像存储位置,是本地存储,不在是共享目录。

                  • kvm02

                    • 也需要有hosts文件的条目

                    • 要确保没有同名的虚拟机

                    • 创建出同名的磁盘文件

                      • mkdir -p /data_kvm/store

                        • 要与原虚拟机目录对应

                      • qemu-img create -f qcow2 /data_kvm/store/test03.qcow2 20G

                        • 注意创建时的空间要大于原虚拟机的数据总量

                • kvm01进行迁移操作

                  • 为了验证不关机进行迁移可以打开要迁移的虚拟机

                  • virsh migtate test03 qemu+ssh://192.168.10.202/system --live --persistent --undefinedsource --copy-storage-all --verbose

                    • --persistent(持久化)

                      • 迁移后就作为目标主机的虚拟机的一部分,之后可以进行重启,如果不加该选项,虚拟机的迁移就是临时的,再关闭虚拟机之后有关该虚拟机的配置就会被删除无法重启。还能确保配置同步

                    • --undefinesource

                      • 迁移后删除原虚拟机的定义信息

                    • --copy-storage-all

                      • 复制磁盘中所有内容

                • 最后在两台kvm主机上验证结果

          • KSM内核同页合并

            • KSM是kvm的内核同页合并技术,允许内核在多个进程之间共享相同的内存页,当出现不同时会为其再分配一个新的内存页。当设置合理时可以减少相当多的内存使用率。但是最cpu的负载就会加大。是一把双刃剑。

            • 准备前奏

              • 查看当前linux系统是否支持ksm

                • egrep -i ksm /boot/config-3.10.0-1160.el7.x86_64

                  • 要选择正在使用的内核版本

                • CONFIG_KSM=y

                  • 如果该项是y表示支持

            • ksm常用配置文件

              • ls -l /sys/kernel/mm/ksm/

              • 注意描红处是本案例所需要的
            • 可以克隆出多台虚拟机同时开启记录下内存使用情况。越多效果越明显。

            • 在开启ksm的情况下在开启同样多的虚拟机进行测试,看前后对比。会发现有明显的差别。

              • systemctl start ksm

              • systemctl start ksmtuned

                • tuned:调优

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,NURBS(非均匀有理B样条)是一种强大的数学工具,用于表示和处理复杂的曲线和曲面。NURBS在计算机图形学、CAD(计算机辅助设计)、CAM(计算机辅助制造)等领域有着广泛的应用。下面将详细探讨MATLAB中NURBS的绘制方法以及相关知识点。 我们需要理解NURBS的基本概念。NURBS是B样条(B-Spline)的一种扩展,其特殊之处在于引入了权重因子,使得曲线和曲面可以在不均匀的参数空间中进行平滑插值。这种灵活性使得NURBS在处理非均匀数据时尤为有效。 在MATLAB中,可以使用`nurbs`函数创建NURBS对象,它接受控制点、权值、 knot向量等参数。控制点定义了NURBS曲线的基本形状,而knot向量决定了曲线的平滑度和分布。权值则影响曲线通过控制点的方式,大的权值会使曲线更靠近该点。 例如,我们可以使用以下代码创建一个简单的NURBS曲线: ```matlab % 定义控制点 controlPoints = [1 1; 2 2; 3 1; 4 2]; % 定义knot向量 knotVector = [0 0 0 1 1 1]; % 定义权值(默认为1,如果未指定) weights = ones(size(controlPoints,1),1); % 创建NURBS对象 nurbsObj = nurbs(controlPoints, weights, knotVector); ``` 然后,我们可以用`plot`函数来绘制NURBS曲线: ```matlab plot(nurbsObj); grid on; ``` `data_example.mat`可能包含了一个示例的NURBS数据集,其中可能包含了控制点坐标、权值和knot向量。我们可以通过加载这个数据文件来进一步研究NURBS的绘制: ```matlab load('data_example.mat'); % 加载数据 nurbsData = struct2cell(data_example); % 转换为cell数组 % 解析数据 controlPoints = nurbsData{1}; weights = nurbsData{2}; knotVector = nurbsData{3}; % 创建并绘制NURBS曲线 nurbsObj = nurbs(controlPoints, weights, knotVector); plot(nurbsObj); grid on; ``` MATLAB还提供了其他与NURBS相关的函数,如`evalnurbs`用于评估NURBS曲线上的点,`isoparm`用于生成NURBS曲面上的等参线,以及`isocurve`用于在NURBS曲面上提取特定参数值的曲线。这些工具对于分析和操作NURBS对象非常有用。 MATLAB中的NURBS功能允许用户方便地创建、编辑和可视化复杂的曲线和曲面。通过对控制点、knot向量和权值的调整,可以精确地控制NURBS的形状和行为,从而满足各种工程和设计需求。通过深入理解和熟练掌握这些工具,可以在MATLAB环境中实现高效的NURBS建模和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值