【UOS运维学习笔记】- KVM 虚拟机管理

一、简介

1、什么是虚拟化?

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。

2、为什么要用虚拟化

同一台物理机运行多个不同版本应用软件
硬件依赖性较低和便于数据迁移

3、虚拟化技术的优势

1.降低运营成本
2.提高应用兼容性
3.加速应用部署
4.提高服务可用性
5.提升资源利用率
6.动态调度资源
7.降低能源消耗

4、KVM 简介

KVM — 全称是基于内核的虚拟机(Kernel-based Virtual Machine)** 是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得 Linux 变成了一个 Hypervisor,虚拟机使用Linux 自身的调度器进行管理。

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

二、安装 KVM

1、实验环境准备:

egrep "(svm|vmx)" /proc/cpuinfo #查看 cpu 是否支持虚拟化

#vmx 对应 inter 的 cpu,svm 对应 amd 的 cpu,还需在主板 bios 打开虚拟化选项,目前,多数服务器基础桌面计算机均处理启动状态

apt-get install libvirt0 libvirt-daemon qemu virt-manager bridge-utils libvirt-clients python-libvirt qemu-efi uml-utilities virtinst qemu-system

#安装 KVM 和相关虚拟化工具libvirt 是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API 库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的 API。libvirt 的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

2、两种管理方法:

virt-manager 是图形化方式,相对直观。
virsh 是命令行方式
systemctl restart libvirtd.service #启动 libvirtd
systemctl status libvirtd.service #查看启动状态

使用图形化安装 一台名为 UOS1 的虚拟机

三、基础操作指令

virsh(虚拟 shell),基于命令行的管理工具,可以实现简单的资源管理。支持交互模式
virsh shutdown uos1 #正常关闭 vm 虚拟机
virsh start uos1 #启动 kvm 虚拟机
virsh destroy uos1 #强制关闭 kvm 虚拟机
virsh list #显示本地活动虚拟机
virsh list --all #查看所有虚拟机
virsh suspend uos1 #挂起 kvm 虚拟机
virsh resume uos1 #恢复被挂起虚拟机
virsh dominfo uos1 #查看指定虚拟机的配置摘要信息
virsh undefine uos1 #删除 kvm 虚拟机(如果虚拟机处于 runing,一旦关闭就会消失)
virsh dumpxml uos1 #显示虚拟机的当前配置文件
virsh define uos2.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh autostart uos1 # 虚 拟 机 设 为 自 动 启 动 ( 生 成/etc/libvirt/qemu/autostart/ )
virsh autostart --disable uos1 #取消自动启动
virsh edit ubuntu #编辑配置文件(一般是在刚定义完虚拟机之后)
virsh setmem ubuntu 512000 #给不活动虚拟机设置内存大小
virsh setvcpus ubuntu 4 # 给不活动虚拟机设置 cpu 个数

四、xml 配置文件的应用

(1)xml 配置文件详解

xml 配置文件也就是通常所说的虚拟机的描述文件,主要用来定义一个虚拟机的名称、UUID、CPU、内存、虚拟磁盘、网卡等各种参数设置

/etc/libvirt/qemu/ #配置文件默认路径

uos.xml 配置文件说明:

<domain type=’kvm’>
<name>uos</name> #虚拟机的名字
<uuid>16e9cb49-8b05-4b34-9325-3bcf169dd32e</uuid> #uuid 值
<memory unit=’KiB’>4194304</memory> #虚拟机的最大内存
<currentMemory unit=’KiB’>4194304</currentMemory> #虚拟机当前的内存
<vcpu placement=’static’>4</vcpu> #该虚拟机的 cpu 数
<os>
<type arch=’x86_64′ machine=’pc-i440fx-3.1’>hvm</type> #hvm 表示全虚拟化
<boot dev=’hd’/> #hd 表示从硬盘启动

</os> Id Name State
———————–
– uos2 shut off

<emulator>/usr/bin/qemu-system-x86_64</emulator> #二进制模拟器设备的完整路径
<disk type=’file’ device=’disk’> #disk 是用来描述磁盘的主要容器
<driver name=’qemu’ type=’qcow2’/>
<source file=’/var/lib/libvirt/images/kvm/uos.qcow2’/>

Id Name State
———————–
– uos2 shut off #指定磁盘上文件的绝对路径

<target dev=’hda’ bus=’ide’/>
<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’0’/>
<interface type=’ direct #桥接设备
<mac address=’52:54:00:0c:ae:41’/> #MAC 地址
<source dev=’enp2s0′ mode=’bridge’/>
<model type=’e1000’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>
</interface>
<source network=’br0/>  

(2)qemu-img 是一个功能强制磁盘镜像管理工具

qemu-img –help 包括以下功能
check 检查完整性
create 创建镜像
commit 提交更改
compare 比较
convert 转换
info 获得信息
map 映射
snapshot 快照管理
rebase 在已有的镜像的基础上创建新的镜像
resize 调整大小
amend 修订镜像格式选

(3)将虚拟机 uos1 改名为 uos2

uuidgen #生成新的 UUID 字串,并复制备用
76d5dc2c-5eef-4e30-8b6c-e58851814f84
virsh edit uos #编辑虚拟机配置

<domain type=’kvm’>
<name>uos2</name> #新名称
<uuid>76d5dc2c-5eef-4e30-8b6c-e58851814f84</uuid> #新 UUID 值


virsh list --all #确认导入的新配置

Id Name State
———————–
-uos1 shut off
uos2 shut off #新名称的虚拟机


virsh undefine uos1 #删除旧名称的虚拟机
virsh list --all #确认结果

Id Name State
———————–
– uos2 shut off

(4)复制 uos2 虚拟机为 uos3

uuidgen #生成新 UUID,并复制备用
7b292992-a86e-4386-951f-a577365cc721

Id Name State
———————–
– uos2 shut off

virsh dumpxml uos2>/etc/libvirt/qemu/uos3.xml #导出配置
vim /etc/libvirt/qemu/uos3.xml #修改导出后的配置

<domain type=’kvm’>
<name>uos3</name> #新名称
<uuid>3d7f2197-8dad-473c-99af-0570cd02ae5c</uuid> #新 UUID 值
<memory unit=’KiB’>4194304</memory> #内存大小,单位 KB
<currentMemory unit=’KiB’>4194304</currentMemory> #虚拟机分配的内存大小,单位 KB
<vcpu placement=’static’>2</vcpu> #虚拟 CPU 核数
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’qcow2’/>
<source file=’/var/lib/libvirt/images/uos3.qcow2’/> #新磁盘路径
<target dev=’hda’ bus=’ide’/>
<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’0’/>
</disk>
<interface type=’network’> #虚拟机网络连接方式
<mac address=’52:54:00:f5:9c:44’/> #修改 MAC 地址
<source network=’private1’/> #当前主机网桥的名称
<model type=’e1000’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>

virsh list --all #确认结果

Id Name State
———————–
– uos2 shut off
– uos3 shut off #新虚拟机

(5)快建虚拟机

把 uos2 当做模板机,提取 uos2 的虚拟机磁盘、xml 配置文件
qemu-img info /var/lib/libvirt/images/kvm/uos2.qcow2 #

image: /var/lib/libvirt/images/kvm/uos.qcow2
file format: qcow2
virtual size: 64G (68719476736 bytes) #虚拟机磁盘容量
disk size: 8.1G #在 KVM 服务器占用容量
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false

qemu-img create -f qcow2 -b /var/lib/libvirt/images/kvm/uos2.qcow2 /var/lib/libvirt/images/kvm/uos4.qcow2 #复用 uos2 模板机的磁盘数据
cd /etc/libvirt/qemu/
cp uos2.xml uos4.xml #复制配置
vim uos4.xml #修改配置文件


<name>uos4</name> #新虚拟机名称
<uuid>da2478f0-abf0-11ea-a912-6f46e76df6b1</uuid> #新 UUID 值
<disk type=’file’ device=’disk’> #文件类型
<driver name=’qemu’ type=’qcow2’/> #磁盘类型
<source file=’/var/lib/libvirt/images/kvm/uos4.qcow2’/> #新虚拟卷位置
<target dev=’hda’ bus=’ide’/>
<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’0’/>
</disk>
</controller>
<interface type=’network’> #虚拟机的网络接口类型
#删除 MAC 地址
<source network=’network1’/> #虚拟机的网卡的源网络名称
<model type=’e1000’/>

virsh define /etc/libvirt/qemu/uos1.xml Domain uos1 defined from /etc/libvirt/qemu/uos4.xml #根据配置文件定义虚拟机
virsh list --all #查看所有虚拟主机

Id Name State
———————–
– uos2 shut off
– uos4 shut off

virsh start uos4 #开启 uos 虚拟机配置主机名、ip 地址等

(6)快照(raw 格式的磁盘无法创建快照)

qemu-img snapshot -l /kvm/img/test12.qcow2 #查看磁盘快照
virsh snapshot-list test12 #查看快照
virsh snapshot-create test12 #生成快照
virsh snapshot-create-as test12 snap1 #自定义快照名
virsh snapshot-revert test12 snap1 #快照恢复虚拟
virsh snapshot-delete test12 snapname #删除指定快照
virsh snapshot-current test12

关于软件资源类分享的免责声明:
本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并未做任何贩卖软件信息等行为,不存在任何商业目的及用途。
根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。"
您需知晓本站所有分享内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任。
如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇