kvm实战
1. 安装环境
# yum install qemu-kvm libvirt virt-install virt-manager virt-viewer -y
# systemctl start libvirtd
# virt-host-validate
授予 qemu 用户访问某个目录的权限:
# setfacl -R -m u:qemu:rwx YOUR_DIRECTORY
2. VM相关操作
从 ISO 文件启动 VM:
# 创建一个虚拟磁盘
# qemu-img create -f raw -o size=10G ./ubuntu16.img # 在虚拟磁盘上安装操作系统
# virt-install --name ubuntu16-server --ram 1024 --disk path=./ubuntu16.img --vcpus 2 \
--os-variant ubuntu16.04 --network bridge=virbr0 \
--cdrom ./ubuntu-16.04.7-server-amd64.iso
查看 os-variant: osinfo-query os
从磁盘映像启动 VM:
# virt-install --name ubuntu16 --ram 1024 --disk path=./ubuntu16.img --vcpus 2 \
--os-variant ubuntu16.04 --network bridge=virbr0 --import
从 xml 文件启动 VM:
virsh define vm1.xml
virsh start vm1
等同于如下命令:
virsh create vm1.xml
查看 VM:
# 查看有哪些 VM 及其状态
# virsh list --all # 查看某个 VM 的详细信息(数字表示 vm id)
# virsh dominfo 6 # 查看 vm1 的xml定义文件
# virsh dumpxml vm1
启停 VM:
# 关机
# virsh shutdown 6 # 强制关机
# virsh destroy 6 # 删除:再也查看不到,但不删除磁盘映像
# virsh undefine ubuntu16-server # 启动
# virsh start ubuntu16 # 重启
# virsh reboot ubuntu16 # 自动启动:随 hypervisor 的启动而启动
# virsh autostart ubuntu16 # 取消自动启动:随 hypervisor 的启动而启动
# virsh autostart --disable ubuntu16
启动 virt-manager:
# virt-manager
通过控制台连接 VM:
# 在 ubuntu16 vm 中执行
sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl start serial-getty@ttyS0.service # 在宿主机上执行
virsh console 8
ps1:需要按一次回车键才会显示登陆。
ps2:centos vm设置方法参考 https://www.cnblogs.com/heiguu/p/10121084.html。
按 ctrl+] 退出控制台连接。
3. 虚拟磁盘相关操作
创建虚拟磁盘:
# qemu-img create -f raw -o size=2G ./disk1.img
磁盘格式转换:
# qemu-img convert -f raw -O qcow2 ./disk1.img ./disk1.qcow2
查看磁盘信息:
# qemu-img info ./disk1.qcow2
挂载磁盘:
# 1 是 vm id;vdb是磁盘在 vm 中的名称
# virsh attach-disk 1 /home/ming/kvm/disk1.img vdb --live --config
查看 vm 挂载了哪些块设备:
# virsh domblklist 1
卸载磁盘:
# virsh detach-disk 1 vdb
创建快照:
# qemu-img snapshot -c s1 disk1.qcow2
ps:不支持 raw 格式。
查看快照:
# qemu-img snapshot -l disk1.qcow2
从快照中恢复:
# qemu-img snapshot -a s1 disk1.qcow2
删除快照:
# qemu-img snapshot -d s1 disk1.qcow2
4. 存储池相关操作
定义存储池:基于目录
# virsh pool-define-as --name pool1 --type dir --target /home/ming/kvm/pool1/
定义、构建存储池:基于 LVM
# virsh pool-define-as --name pool2 --type logical --source-dev /dev/sdb1 --source-name pool2_vg --target /dev/vgs
# virsh pool-build pool2
# 可以看到 pool2_vg
# vgdisplay
定义并启动存储池:需要 pool-build 的不适合此用法
# virsh pool-create-as --name pool1 --type dir --target /home/ming/kvm/pool1/
启停存储池:
# 启动
# virsh pool-start pool1 # 停止
# virsh pool-destroy pool1 # 删除源设备
# virsh pool-delete pool1 # 取消定义
# virsh pool-undefine pool1 # 自动启动
# virsh pool-autostart pool1 # 取消自动启动
# virsh pool-autostart --disable pool1
查看存储池:
# 罗列存储池
# virsh pool-list --all # 查看某个存储池的详细信息
# virsh pool-info pool1 # 查看 xml 定义文件
# virsh pool-dumpxml pool1
创建存储卷:
# virsh vol-create-as pool1 vol1 1G
挂载卷:
virsh attach-disk vm1 /home/ming/kvm/pool1/vol1 vdb --live --config
查看卷信息:
# 罗列存储卷
# virsh vol-list --pool pool1 # 查看详细信息
# virsh vol-info --pool pool1 vol1 # 查看 xml 定义文件
# virsh vol-dumpxml --pool pool1 vol1 # 查看卷的路径
# virsh vol-path --pool pool1 vol1 # 根据卷路径查看所在的存储池
# virsh vol-pool /home/ming/kvm/pool1/vol1 # 根据卷路径查看卷名
# virsh vol-name /home/ming/kvm/pool1/vol1
擦除卷:
virsh vol-wipe --pool pool1 vol1
修改卷大小:
# 指定增量
# virsh vol-resize --pool pool1 vol1 --delta +1G
# virsh vol-resize --pool pool1 vol1 --delta -1G --shrink # 直接指定大小
# virsh vol-resize --pool pool1 vol1 2G
5. 网络相关操作(使用 ovs)
创建网络配置文件:
# cat net1.xml
<network>
<name>net1</name>
<forward mode="bridge"/>
<bridge name="br0"/>
<virtualport type="openvswitch"/>
</network>
定义网络:
# virsh net-define net1.xml
启动网络:
# virsh net-start net1
创建网络:(定义并启动)
virsh net-create net1.xml
终止网络:
# virsh net-destroy net1
删除网络:
# virsh net-undefine net1
查看网络:
# virsh net-list --all
# virsh net-info net1
# 查看 xml 定义文件
virsh net-dumpxml net1
网络自启动:
# virsh net-autostart net1 # 取消自启动
# virsh net-autostart --disable net1
创建 ovs 网桥,设置 vm 使用指定的网络:
# ovs-vsctl add-br br0 # virt-install --name vm1 --ram 512 --disk path=./ubuntu16-1.img --vcpus 1 \
--os-variant ubuntu16.04 --network bridge=virbr0 --import
# virt-install --name vm2 --ram 512 --disk path=./ubuntu16-2.img --vcpus 1 \
--os-variant ubuntu16.04 --network network=net1 --import # ovs-vsctl show
98c62161-cb7e-44e9-a94d-8bc0b01e60af
Bridge "br0"
Port "vnet0"
Interface "vnet0"
Port "vnet1"
Interface "vnet1"
Port "br0"
Interface "br0"
type: internal
配置 vm 的 IP地址:
# vm1
root@ubuntu:~# ip addr add 10.0.0.3/24 dev ens3 # vm2
root@ubuntu:~# ip addr add 10.0.0.4/24 dev ens3 # vm2
root@ubuntu:~# ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=2.21 ms
参考资料
https://www.cnblogs.com/zrp2013/p/4529820.html
https://blog.csdn.net/s7799653/article/details/106024674
https://blog.csdn.net/wuliangtianzu/article/details/81870551
kvm实战的更多相关文章
- <Mastering KVM Virtualization>:第二章 KVM内部原理
在本章中,我们将讨论libvirt.QEMU和KVM的重要数据结构和内部实现.然后,我们将深入了解KVM下vCPU的执行流程. 在这一章,我们将讨论: libvirt.QEMU和KVM的内部运作方式. ...
- 《Linux企业应用案例精解》一书配套视频发布
<Linux企业应用案例精解>一书配套视频发布(每周更新视频教程),通过读者平台账号,可以在平台下载AVI格式.所有读者都能获得本书中涉及的软件资料,轻松搭建你的学习环境. 当当购书地址: ...
- Linux运维工程师应具备哪些技能?
对于我们这些刚入门的运维小白来说,极强的好奇心总会驱使我们去涉猎各种技术,弄到最后很可能该学的知识半懵半解,知识体系混乱,学习毫无章法.因此,我们学习 时要有一个明确的目标和知识体系(也是我学习的 ...
- 2019年最新老男孩高性能Web架构与自动化运维架构视频教程
课程目录L001-老男孩架构15期-Web架构之单机时代L002-老男孩架构15期-Web架构之集群时代L003-老男孩架构15期-Web架构之dnsL004-老男孩架构15期-Web架构之缓存体系L ...
- 【原创】Linux虚拟化KVM-Qemu分析(一)
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...
- 云计算之KVM虚拟化实战
1 基础环境规划 1.1 主机环境规划 系统版本 主机名 IP地址 内存 磁盘 CentOS6.9 kvm-node1 10.0.0.200 2G 20G CentOS6.9 kvm-node2 10 ...
- KVM+Qemu+Libvirt实战
上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚 ...
- Linux实战教学笔记54:开源虚拟化KVM(二)管理虚拟存储
五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...
- Linux实战教学笔记55:开源虚拟化KVM(三)管理虚拟网络
六,管理虚拟网络 [x] Linux网桥基本概念 [x] qemu-kvm支持的网络 [x] 向虚拟机添加虚拟网络连接 [x] 基于NAT的虚拟网络 [x] 基于网桥的虚拟网络 [x] 用户自定义的隔 ...
随机推荐
- 5行Python代码就能实现刷爆全网的动态条形图!
说起动态图表,最火的莫过于动态条形图了. 在B站上搜索「数据可视化」这个关键词,可以看到很多与动态条形图相关的视频. 好多视频都达到了上百万的播放量,属实厉害. 目前网上实现动态条形图现成的工具也很多 ...
- 物联网、5G世界与大数据管理
物联网带动中国产业转型.推动社会经济发展的时代已经到来.什么是物联网?物联网又给数据管理带来了哪些挑战?面对挑战,我们有怎样的解决方案?本文中我们将一一为您揭晓. 01 物联网时代的到来 ...
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- [leetcode]29. Divide Two Integers不用除法实现除法
思路是不断将被除数分为两部分,每次分的一部分都是尽量大的除数的倍数,然后最后的商就是倍数加上剩下的部分再分,知道不够大. 递归实现 剩下的难点就是,正负号(判断商正负后将两个数都取绝对值),数太大(将 ...
- java有关静态代理及动态代理的实现
引言: 代理是基本的设计模式之一,它为你提供额外的或不同的操作而插入的用来代替实际对象的对象(委托对象).这些对象通常涉及到与实际对象的通信,因此代理通常充当中间人的角色.--JAVA编程思想 相关的 ...
- haproxy 支持 websocket
haproxy支持websocket feat 通过嗅探http请求中的Connection: Upgrade Upgrade: websocket头部,来自动识别是否是websocket连接,识别成 ...
- spark-streaming获取kafka数据的两种方式
简单理解为:Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据 一.Receiver方式: 使用kafka的高层次Consumer ...
- 强大生产力工具Alfred
今天要给大家介绍的工具是Alfred,一款Mac下的高效生产力产品.它能做什么呢?简单的说就是:让你能够通过打几个字,就可以完成原本需要一顿操作的事情.举一个简单的栗子:如果我们要在Google搜索一 ...
- 手把手教你用C语言编写一个哈希表
原文链接:https://www.swack.cn/wiki/001558681974020669b912b0c994e7090649ac4846e80b2000/001572849111298ae3 ...
- Petalinux和Vivado的安装
Petalinux和Vivado的安装 背景 我是搞软件的, FPGA这块不太了解.由于机缘巧合,最近有接触到这块的开发.所以先挖一坑. 先声明我不是专业搞这块的,所以对这块的内容理解可能会有偏差,以 ...