kvm 虚拟化教程-阿里云开发者社区

开发者社区> 丿阿茶skr丶> 正文

kvm 虚拟化教程

简介: 虚拟化是门技术,云计算是个模式(概念)
+关注继续查看

KVM虚拟化

虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

宿主机

  • 内存 大于 4G
  • 纯净的操作系统 ( 版本做好为稳定版)
  • 关闭 selinux && firewalld && NetworkManager
systemctl stop firewall && systemctl disbale firewalld
systemctl stop NetworkManager && systemctl disbale NetworkManager
setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

linux 虚拟化软件的差别

linux虚拟化软件

  • qemu 软件纯模拟全虚拟化软件,特别慢!兼容性好!
  • xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差!
  • kvm(linux) 全虚拟化,它有硬件支持cpu,内置在linux内核模块,而且不需要使用专门的内核
  • vmware workstations 图形界面
  • virtual box 图像化界面

安装 kvm 虚拟化管理工具

kvm kernel-based virtual machine

libvirt 作用:管理虚拟机

虚拟类型:kvm,xen,qemu 等

virt 作用:安装、克隆虚拟机的工具(virt-install\virt-clone)

qemu-kum、qemu-img 作用:管理虚拟机的虚拟磁盘


配置 base 源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装 rpm包

yum install libvirt virt-install qemu-kvm -y

启动 libvirtd

systemctl start libvirtd.service

安装一台kvm虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 \
--memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 \
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso \
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type kvm 虚拟化的类型(qemu)

--os-type=linux 系统类型

--os-variant rhel7 系统版本

--name centos7 虚拟机的名字 (必须唯一)

--memory 1024 虚拟机的内存

--vcpus 1 虚拟cpu的核数

--disk /opt/centos2.raw,format=raw,size=10(必须唯一)

--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 系统光盘

--network network=default 使用默认NAT的网络

--graphics vnc,listen=0.0.0.0

--noautoconsole (可有可无)

VNC 连接 IP:5900

安装系统注意事项:

  1. 分区 只保留根分区
  2. 关闭内核奔溃备份机制(KDUMP)
  3. 打开网卡开机自启
  4. 修改时区 亚洲/上海
  5. 安装重启后在宿主机启动虚拟机

virsh 管理&配置

# 查看虚拟机列表(--all)
virsh list
# 查询 VNC 端口号
virsh vncdisplay <host>

# 开启虚拟机
virsh start <host>
# 关闭虚拟机
virsh shutdown <host>
# 断电关机
virsh destroy <host>
# 重启虚拟机
virsh reboot <host>
# 挂起虚拟机
virsh suspend <host>
# 恢复虚拟机
virsh resume <host>
# 开机自启 (注:libvirtd 开机自启)
virsh autostart <host>
# 取消开机自启
virsh autostart --disable <host>

# 导出配置
virsh dumpxml centos7 > vm_centos7.xml
# 删除配置 (先关机)
virsh undefine centos7
# 导入配置 (重启生效)
virsh define vm_centos7.xml 
# 修改配置
virsh edit centos7

# 重命名虚拟机 (低版本不支持)
virsh domrename centos7 web01

## kvm 虚拟机允许console登录 (注:在 kvm虚拟机内操作)
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
# console登录虚拟机
virsh console centos7

虚拟磁盘管理

raw: 俗称裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好

qcow2: qcow(copy on write)的升级版,占用空间小,支持快照,性能比raw差一点,方便传输

# 查看虚拟磁盘信息
qemu-img info test.qcow2
# 创建虚拟硬盘
qemu-img create -f qcow2 test.qcow2 2G
# 调整磁盘磁盘容量(只增不减)
qemu-img resize test.qcow2 +20G 
# 磁盘格式转换
qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2
# 调整虚拟机磁盘格式
# 1. 格式转换
qemu-img convert -f raw -O qcow2 oldboy.raw web01.qcow2
# 2. 修改配置文件
virsh edit web01
# 修改 格式和路径
# <driver name='qemu' type='qcow2'/>
# <source file='/opt/web01.qcow2'/>
# 3. 重启虚拟机
virsh destroy web01
virsh start web01

快照管理

# 创建快照
virsh snapshot-create-as centos7 --name install_ok
# 查看快照
virsh snapshot-list centos7
# 还原快照
virsh snapshot-revert centos7 --snapshotname install_ok
# 删除快照
virsh snapshot-delete centos7 --snapshotname install_ok

# raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

虚拟机克隆

完整克隆

自动
virt-clone --auto-clone -o centos7 -n web02
手动(可以压缩空间 -c)
# 1.生成磁盘文件
qemu-img convert -f qcow2 -O qcow2 -c web02.qcow2 web03.qcow2 -c
# 2.导出虚拟机配置文件
virsh dumpxml web02 >web03.xml
# 3.修改虚拟机配置
vim web03.xml
## 修改虚拟机的名字
## 删除虚拟机uuid
## 删除mac地址mac add
## 修改磁盘路径disk
# 4.导入虚拟机配置
virsh define web03.xml 
# 5.启动虚拟机
virsh start web03

链接克隆

手动
# 1.生成虚拟机磁盘文件
qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2
# 2.生成虚拟机配置文件
virsh dumpxml web03 >web04.xml
# 3.修改虚拟机配置文件
vim web04.xml
##修改虚拟机的名字
##删除虚拟机uuid
##删除mac地址
##修改磁盘路径
# 4.导入虚拟机并进行启动测试
virsh define web04.xml 
# 5.启动虚拟机
virsh start web04
自动(脚本)
[root@kvm scripts]# cat link_clone.sh 
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
disk_tmp=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk  ${disk_tmp}/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
sh link_clone.sh centos7 web05

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux下kvm:检测硬件是否支持虚拟化
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396671 ...
1009 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4536 0
+关注
丿阿茶skr丶
善良的boy
36
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载