洛杉矶MC机房 高速低价18元起

DIYVM

KVM简介、Virsh管理、自定义虚拟机、虚拟设备管理

提示:如果官网是英文页面,建议使用谷歌浏览器能同步翻译页面。点击下载【谷歌浏览器最新绿色便携版】
注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。

1.virsh基本管理操作

列出当前正在运行的虚拟机

查看虚拟机的信息

管理虚拟机

设置虚拟机开机自动运行

 

1.1 virsh基本操作

 

查看kvm节点(服务器)信息

] virsh nodeinfo

 

列出当前正在运行的虚拟机

]# virsh list (–all)

 

列出虚拟网络

] virsh net-list (–all)

 

查看指定虚拟机信息

] virsh dominfo 虚拟机名称

 

查看虚拟机网卡

] virsh domiflist web1

接口     类型     源        型号      MAC

——————————————————-

vnet0      network    private1   virtio      52:54:00:79:51:ca

vnet1      network    private2   virtio      52:54:00:bf:38:55

vnet2      network    public1    virtio      52:54:00:4f:47:65

vnet3      network    public2    virtio      52:54:00:e1:70:e7

接口:虚拟网卡

源:虚拟交换机

 

运行 |  重启 | 关闭指定虚拟机

] virsh start | reboot | shudown xxx

 

强制关闭指定虚拟机

] virsh destroy xxx

 

设置虚拟机开机自动运行

] virsh autostart (–disable) xxx 

 

连接本地虚拟机管理系统

] virsh -c qemu:///system

 

连接远程虚拟机管理系统

] virsh -c qemu+ssh://root@176.233.6.40:22/system

 

2.qemu-img基本操作管理

创建一个新的镜像盘文件

使用后端模板文件创建一个新的镜像盘文件

查看镜像盘文件的信息

 

2.1 创建一个新的镜像盘文件

qemu-img命令格式:qemu-img 命令 参数 块文件名称 大小

]# qemu-img create -f qcow2 disk.img 50G    //qcow2为创建的格式

Formatting 'disk.img', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off 

 

2)使用后端模板文件创建一个新的镜像盘文件

备注:-b使用后端模板文件

]# qemu-img create -b disk.img -f qcow2 disk1.img

Formatting 'disk1.img', fmt=qcow2 size=53687091200 backing_file='disk.img' encryption=off cluster_size=65536 lazy_refcounts=off 

 

3)使用后端模板文件创建一个16G的镜像盘文件

]# qemu-img create -b disk.img -f qcow2 disk2.img 16G

Formatting 'disk2.img', fmt=qcow2 size=17179869184 backing_file='disk.img' encryption=off cluster_size=65536 lazy_refcounts=off 

 

2.2 查看镜像文件的信息

]# qemu-img info disk1.img

image: disk1.img

file format: qcow2

virtual size: 50G (53687091200 bytes)

disk size: 196K

cluster_size: 65536

backing file: disk.img

Format specific information:

    compat: 1.1

    lazy refcounts: false

 

3.创建一个虚拟网络(虚拟交换机)

创建一个名为vbr的虚拟网络

设置vbr的ip为192.168.1.254

配置vbr虚拟网络的dhcp分配地址范围100-200

启动vbr虚拟网络并用ifconfig验证

设置vbr虚拟网络开机自启动

 

3.1 创建一个名为vbr的虚拟网络(虚拟交换机)

]# vim /etc/libvirt/qemu/networks/vbr.xml

<network>

  <name>vbr</name>   //vbr为虚拟网络的名字

  <uuid>eb48e4fa-01e7-4734-87ef-24e3d29633d1</uuid>

  <forward mode='nat'/>

  <bridge name='vbr' stp='on' delay='0'/>

  <mac address='52:54:00:77:01:d6'/>

  <domain name='vbr'/>

  <ip address='192.168.1.254' netmask='255.255.255.0'>  //ip为192.168.1.254

    <dhcp>

      <range start='192.168.1.100' end='192.168.1.200'/>  //ip范围是100-200

    </dhcp>

  </ip>

</network>

 

3.2 启动vbr虚拟网络并用ifconfig验证

]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml  //定义vbr虚拟网络

]# virsh net-start vbr   //启动vbr虚拟网络,ifconfig可见

]# ifconfig vbr          //igconfig验证 

vbr: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.254  netmask 255.255.255.0  broadcast 192.168.1.255

        ether 52:54:00:b7:1c:10  txqueuelen 1000  (Ethernet)

        RX packets 2460  bytes 176958 (172.8 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 1948  bytes 532542 (520.0 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

3.3 设置vbr虚拟网络开机自启动

]# virsh net-autostart vbr

]# virsh net-list –all

 

]# virsh 进入虚拟机管理系统

]# net-list 查看虚拟网络

]# net-define vbr.xml 创建虚拟网络(必须有xml文件)

]# net-undefine vbr 删除虚拟网络

]# net-start vbr 启动虚拟网络

]# net-destroy vbr 停止虚拟网络

]# net-edit vbr 修改vbr网络配置

]# net-autostart vbr 设置vbr网络开机自启

 

4.xml管理

 

4.1 导出一个虚拟机的xml配置文件

编辑xml文件

重新定义虚拟机

删除此虚拟机

 

导出虚拟机xml的配置文件

 

1)查看xml配置文件

]# cd /etc/libvirt/qemu/

qemu]# virsh dumpxml node1 (必须有node1这个虚拟机)

qemu]# virsh dumpxml node1 > node.xml     

//导出虚拟机node1的配置文件为node.xml

qemu]# ls

node.xml

virsh命令: virsh edit 虚拟机名

备注:可以修改name,memory,disk、network等字段

 

qemu]# virsh edit node1            

<domain type='kvm'>

  <name>node1</name>     //node1为虚拟机的名称,可以随意修改

  <uuid>76d5dc2c-5eef-4e30-8b6c-e58851814f84</uuid>  //uuid可以去掉

  <memory unit='KiB'>2048000</memory>                //内存大小可以调整

  <currentMemory unit='KiB'>2048000</currentMemory>

  <disk type='file' device='disk'>

      <source file='/var/lib/libvirt/images/rhel7.2.qcow2'/> //后端盘路径

   .. ..

  <interface type='network'>

      <mac address='52:54:00:91:52:e4'/>            

//mac地址和带有address字样的全部去掉

   .. ..

 

4.2 重新定义虚拟机

1)重新定义虚拟机

qemu]# virsh define node1.xml

2)取消定义的虚拟机

qemu]# virsh undefine node1

 

5.安装虚拟机

配置一个网络yum,并安装一个虚拟机

制作一个虚拟机模板,包括配置yum,网卡等

 

5.1 配置网络yum源

 

]# yum -y install vsftpd

]# vim /etc/vsftpd/vsftpd.conf 

listen=YES

listen_ipv6=NO

]# systemctl restart vsftpd

]# mkdir /var/ftp/centos

]# mount /iso/CentOS-7-x86_64-DVD-1708.iso  /var/ftp/centos/

mount: /dev/loop1 写保护,将以只读方式挂载

 

]# vim /etc/yum.repos.d/dvd.repo

[dvd]

name=dvd

baseurl=ftp://192.168.1.254/centos

enabled=1

gpgcheck=0

 

]# yum clean all

]# yum repolist

]# cd /var/lib/libvirt/images/

images]# qemu-img create -f qcow2 node.qcow2 16G

Formatting 'node.qcow2',fmt=qcow2 size=17179869184 encryption=off cluster_size=65536 lazy_refcounts=off 

 

5.2 安装一个虚拟机

]# virt-manager  //真机操作,启动virt-manager

使用virt-manager软件选择新建虚拟机如图-1所示:

 

图-1

选择安装方式如图-2所示:

 

图-2

选择内存,cpu和自定义存储如图-3所示:

 

图-3

选择虚拟机名称和网络如图-4所示:

 

图-4

选择分区和KDUMP如图-5所示:

 

图-5

选择创建分区如图-6所示:

 

图-6

选择standard Partition如图-7所示:

创建一个根分区如图-8所示:

 

图-8

5.3 制作一个虚拟机模板(新建的虚拟机)

1)禁用selinux

]# vim /etc/selinux/config

SELINUX=disabled

 

2)卸载防火墙与NetworkManager

]# yum -y remove NetworkManager-* firewalld-* python-firewall

 

3)配置yum源

]# vim /etc/yum.repos.d/dvd.repo

[dvd]

name=dvd

baseurl=ftp://192.168.1.254/centos

enabled=1

gpgcheck=0

]# yum clean all

]# yum repolist

安装常用软件包

]# yum -y install net-tools vim-enhanced bridge-utils psmisc lrzsz lftp

 

4)导入公钥

注意:把/etc/yum.repos.d/dvd.repo的gpgcheck=0改成gpgcheck=1

]# lftp 192.168.1.254

254:~> cd centos

254:/centos> get RPM-GPG-KEY-CentOS-7

254:/centos> exit

]# rpm –import RPM-GPG-KEY-CentOS-7

 

 

5)配置网卡

]# yum -y install net-tools(安装ifconfig命令)

]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"(原来是name,删除uuid mac)

ONBOOT="yes"

IPV6INIT="no"

TYPE="Ethernet"

BOOTPROTO ="dhcp"

]# systemctl restart network

 

6)禁用空路由

[root@localhost ~]# vim /etc/sysconfig/network

NOZEROCONF="yes"

 

7) 更换UUID

]# vim /etc/fstab 修改为

/dev/vda1 / xfs  defaults  0 0

 

 

8)添加console配置(替换,禁用UUID,改称系统设备名)

]# vim /etc/default/grub

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL="serial console"

GRUB_SERIAL_COMMAND="serial –unit=1 –speed=115200"

GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"

GRUB_DISABLE_RECOVERY="true"

GRUB_DISABLE_LINUX_UUID="true"

GRUB_ENABLE_LINUX_LABEL="true"

 

9)重新生成grub.cfg

]# grub2-mkconfig -o /boot/grub2/grub.cfg

]# cat /etc/grub2.cfg(不再是uuid了)

…root=/dev/vda1…

 

10)安装扩展分区软件

]# yum install -y cloud-utils-growpart

 

11)第一次开机自动扩容(弹性扩容磁盘)

]# /usr/bin/growpart /dev/vda 1

]# /usr/sbin/xfs_growfs   /

 

12)关闭虚拟机后执行信息清理工作(日志等)

]# virt-sysprep -d centos7.0   

//真机上面操作,centos7.0为虚拟机名称

 

13) 查看装机之后的镜像盘

]# du -sh /var/lib/libvirt/images/node.qcow2 

1.2G/var/lib/libvirt/images/node.qcow2

]# virsh undefine centos7(可以不要了,系统在node.qcow2里,要保留centos7.0.xml)

 

6. 离线访问虚拟机问题

利用xml文件生成一个新的虚拟机

利用guestmount实现离线访问虚拟机

 

6.1 用xml生成一个新的虚拟机

]# cd /etc/libvirt/qemu/

qemu]# cp centos7.0.xml local.xml

qemu]# vim local.xml

<domain type='kvm'>

  <name>local</name>        //修改名字

  <memory unit='KiB'>2048000</memory>       //修改内存

  <currentMemory unit='KiB'>2048000</currentMemory>

      <source file='/var/lib/libvirt/images/local.img'/>     //img文件位置

注意:除这些外还要把mac地址删掉,带address字样的全部删除

]# cd /var/lib/libvirt/images/

images]# qemu-img create –b node.qcow2 –f qcow2 local.img

images]# virsh define /etc/libvirt/qemu/local.xml

images]# virsh start local

images]# virsh console local

 

6.2 guestmount实现离线访问

基本用法:guestmount -a 虚拟机磁盘路径 -i /挂载点

-a:指定虚拟磁盘

-i:挂载点

]# mkdir /mnt/kdisk

]# guestmount -a node.qcow2 -i /mnt/kdisk

]# cd /mnt/kdisk

kdisk]# ls

bin    home   media  opt    sbin     tmp

boot   lib    misc   proc   selinux   usr

 

 

#####################################

 

重点知识整理:

1. 虚拟化所支持的内部指令集:VMX–CPU支持虚拟化

 

2. 虚拟化主要厂商及产品

VMware     VMware Workstation Vsphere esxi

Microsoft  VirtualPC,Hyper-V(windows 虚拟化)

RedHat     KVM(只是单台物理机虚拟化技术平台,虚拟机集群管理需要openstack,CPU支持虚拟化),RHEV(收费)

Citrix     Xen(性能好,内核改动太多,安装麻烦)

Oracle     Oracle VM VIirtualBox(安装包很小,功能没有kvm强大)

 

3. 虚拟化平台KVM/QEMU/LIBVIRTD

KVM

Linux 内核安装的一个模块,提供CPU和内存的访问支持(使用真机的CPU和内存创建虚拟机)

QEMU:虚拟化的仿真工具,通过ioctl和kvm交互完成对硬件的虚拟化支持(虚拟周边硬件,鼠标、网卡等)。

Libvirt:虚拟机启动需要很多命令(如启动总线、地址等),Libvirt一个对虚拟化管理的接口和工具,提供用户端程序virsh,virt-install,virt-manager,virt-view与用户交互(用户接口,将QEMU指令打包封装简化)。

 

4. 安装虚拟化服务器平台必备软件

kvm:已经集成在内核

qemu-kvm:为kvm提供底层仿真支持

libvirt-daemon:libvirtd守护进程,管理虚拟机

libvirt-client:用户端软件,提供客户端管理指令/图形管理工具virt-manager

libvirt-daemon-driver-qemu:libvirt连接qemu驱动

 

virt-install 系统安装工具

virt-manager 图形管理工具

virt-v2v     虚拟机迁移工具

virt-p2v     物理机迁移工具

 

虚拟化平台安装:

]# yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu

]# systemctl restart libvirtd

 

5. 虚拟机组成

KVM:内核虚拟化模块

QEMU:系统设备仿真

LIBVIRT:虚拟机管理程序

 

*.xml:虚拟机配置声明文件: /etc/libvirt/qemu/

*.img:磁盘镜像文件,虚拟机的硬盘: /var/lib/libvirt/images/

 

6.虚拟机通信

虚拟机之间通信:设置虚拟交换机,每个虚拟机连接虚拟交换机

虚拟机连外网:虚拟交换机连接真机交换机

 

7.虚拟机磁盘镜像(后端盘)文件格式

RAW:I/O效率高,只用空间大,不支持压缩、快照、后端盘复用

QCOW2:KVM默认,I/O效率较高,占用空间小,支持压缩、快照、后端盘复用

管理命令:qemu-img:create convert info snapshot

 

8.COW技术原理

Copy On Write,写时复制

直接映射原始盘数据内容

当原始盘的旧数据有修改时,在修改之前将旧数据存入前端盘

对前端盘的修改不会写到原始盘

##########################

About 贝壳

【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

本文链接:贝壳主机网 » KVM简介、Virsh管理、自定义虚拟机、虚拟设备管理

分享到: 生成海报
香港/美国/国内高速VPS
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活