libvirt

libvirt

支持的虚拟化KVM XEN Qemu LXC OpenVZ

安装

yum install libvirt libvirt-client libvirt-manager (python-virtinst or virt-install)
yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm

systemctl restart libvirtd.service

/etc/libvirt/qemu/networks/default.xml  #被链接到启动目录的脚本
/etc/libvirt/qemu/networks/autostart/   #libvirtd服务启动时运行的脚本

virt-install

一般选项
    -n NAME  --name=NAME        #指定虚拟机名称
    -r MEMORY   --ram=MEMORY    #指定虚机内存大小MB
    --vcpus=VCPUS[,maxvcpus=MAX][,sockets=][,cores=][,threads=]
        最大cpu个数,套接字数,核心数,线程数
    --cpu=CPU                   #cpu模式及特性
    
安装方法
    -c  --cdrom=CDROM           #指定安装介质为光盘
    -l  --location=URL          #支持FTP,http,nfs
    --pxe                       #网络装机
    --livecd                    #不依赖磁盘的操作系统
    --os-type=                  #操作系统类型
    --os-variant=               #操作系统版本
    --boot=BOOTS                #指定引导次序
    
存储配置
    --disk=DISKOPTIS            #指定存储设备及其属性
        device  设备类型    cdrom、disk、floppy 默认disk
        bus     磁盘总线类型    ide scsi usb virtio 
        perms   访问权限    rw  ro  sh  默认rw
        size    新建磁盘大小GB
        cache   缓存模型
        format  磁盘映像格式    raw qcow2 vmdk
        sparse  使用稀疏格式
    --nodisks                   #不使用本地磁盘在livecd模式中使用

网络配置
    -w NETWORK --network=NETWORK,opt1=xx    #网络接口及其属性
        bridge=BRIDGE           #指定连接到那个桥接设备
        network=NAME            #连接至指定网络
        model                   #网络设备驱动 virtio、e1000
        mac                     #52:54:00 手动指定mac 否则自动生成
    --nonetworks                #不使用网络功能
    
图形配置
    --graphics TYPE,opt=xx      #指定虚机启动后访问接口及其属性
        TYPE                    #vnc、sdl
        port                    #监听的端口
        listen                  #监听在那个ip 默认127.0.0.1
            可以修改/etc/libvirt/qemu.conf调整默认值

设备选项
    
虚拟化选项
    -v  --hvm       #指定完全虚拟化
    -p              #指定使用半虚拟化
    --virt-type     #指定是使用hypervisor  查看可以使用的# virsh capabilities
    
其他
    --autostart     #是否随物理机启动启动
    --print-xml     #创建不需要安装过程的虚机,显示生成的xml文件
    --force         #禁止命令进入交互模式
    --dry-run       #
    -d --debug      #显示debug信息
    --import        #使用现有磁盘印象构建
    
/etc/libvirt/qemu       #虚拟机xml配置文件

bridge配置

#!/bin/bash
#添加网桥到物理网络
ip a | grep br0 && echo yes >> /dev/null || brctl addbr br0
ip addr del 192.168.150.15/24 dev em1
ip link set dev em1 master br0
ip addr add 192.168.150.15/24 dev br0
ip link set br0 up || ip link set br0 up
route add default gw 192.168.150.253 dev br0

创建虚拟机示例

virt-install --name cirros034-2 --vcpu 2 --ram 512 \
--disk=/var/image/cirros-0.3.4-x86_64-disk.img,bus=virtio,size=5,format=qcow2,sparse \
--vnc --vnclisten 0.0.0.0 \
--autostart --import \
--network bridge=br0

virt-install --name cirros --vcpu 2 --ram 2048 \
--network bridge=br0,model=virtio \
--disk=/var/image/cirros-0.3.4-x86_64-disk.img,format=qcow2,size=5,perms=rw,bus=virtio \
--disk=/var/image/cirros.img,size=10,format=qcow2,perms=rw,bus=virtio,sparse \
--vnc --vnclisten 0.0.0.0 
--import --autostart --force
#cpu 
virt-install --name centos1810 --vcpus=2,maxvcpus=6 --ram 4096 \
--network bridge=br0,model=virtio,mac=52:54:00:00:00:00 \
--disk=/var/image/centos_1810.img,format=qcow2,bus=virtio,size=10,sparse \
--cdrom /data/CentOS-7-x86_64-DVD-1810.iso \
--vnc --vnclisten 0.0.0.0 \
--autostart --force

基础管理命令

 virsh list --all           #查看所有虚拟机
 virsh shutdown cirros      #关闭指定虚拟机
 virsh destroy cirros       #强制关闭
 virsh start cirros         #开启虚拟机
 virsh undefine cirros      #取消定义域 删除虚拟机
    --storage                   #删除关联的卷
    --remove-all-storage        #删除所有存储卷
    --delete-snapshot           #删除所有卷的快照
    --snapshots-metadata        #删除快照元数据
    
 virsh autostart cirros     #设置虚拟机跟随物理机启动
 
 virsh dominfo cirros       #查看虚拟机基本信息
 virsh vncdisplay cirros    #查看虚拟机vnc端口
 virsh edit cirros          #编辑虚拟机xml配置

域的基本管理

# virsh help domain     # 查看domain的命令liebiao

1、附加磁盘设备

qemu-img create -f qcow2 -o size=20G,preallocation=metadata /var/image/centos_1810_20G.qcow2         #创建磁盘
 
qemu-img info /var/image/centos_1810.img
    
virsh attach-disk --help    #附加磁盘命令
        --persistent     永久生效
        --config         下一次启动生效
        --type           指定磁盘类型
        --driver         指定磁盘驱动
        --print-xml      显示xml配置,命令不生效
virsh attach-disk --domain centos1810 --source /var/image/centos_1810_20G.qcow2 --target vdb --targetbus virtio    #添加磁盘并指定总线类型

    
virsh detach-disk --help    #拆除磁盘命令
        --persistent     永久生效
        --config         下一次启动生效
virsh detach-disk centos1810 --target vdb

   

2、附加新的网络

virsh attach-interface --help   #附加网络命令
    --config
    --model    #接口模块
    --persistent
    
virsh attach-interface --domain centos-2004-database01 --type bridge --source br0 --model virtio --persistent

virsh detach-interface --help   #分离网络
    --config
    --persistent
    --mac           #指定卸载网卡的mac
virsh detach-interface --domain centos-2004-database01 --type bridge --mac 52\:54\:00\:14\:ac\:37 --persistent

3、运行状态相关

virsh cpu-stats cirros          #域占用物理cpu的状态
virsh dumpxml cirros            #域xml信息
    --migratable    #提供一个适合迁移的xml
virsh reboot cirros             #重启一个域

virsh save cirros /var/image/cirros.save    #保存一个正在运行的域的ram状态到指定文件
virsh restore /var/image/cirros.save        #从文件保存的状态中还原域

virsh suspend --domain cirros   #挂起域,暂停在内存中
virsh resume cirros             #恢复域

virsh vcpucount cirros          #域cpu数
virsh vcpuinfo cirros           #域cpu基本信息

virsh vcpupin --help            #控制域cpu亲和性 绑定vcpu到cpu
virsh setvcpus --help           #改变vcpu的数量,被最大CPU数限制

virsh setvcpu --help            #连接或分离vcpu

virsh blkiotune cirros          #获取或设置virtio参数
virsh domiflist cirros          #列出所有虚拟接口网卡
virsh dominfo cirros            #域信息

virsh nodeinfo                  #节点信息
virsh sysinfo                   #hypervisor信息
virsh uri                       #访问接口
virsh version                   #版本信息
virsh iface-list --all          #列出宿主机物理网络接口
virsh iface-bridge --help       #创建网桥设备并连接至物理网络设备
virsh iface-unbridge --help     #拆下接口,删除桥

virsh nwfilter-list             #filter网络过滤
virsh net-list                  #用户空间网络

snapshot

virsh snapshot-create-as --domain cirros --name null --disk-only
    --name
    --disk-only                 #只对磁盘快照
    
virsh snapshot-list --domain cirros

virsh snapshot-revert --domain cirros --snapshotname null
    --children          #删除快照和子集
    --children-only     #只删除子集
    --metadata          #只删除元数据
    

storage volume                  #指外部的网络存储 一般为ISCSI
virsh vol-list --help


virtio

kvm使用了硬件辅助虚拟化所以cpu的效率很高,不过在I/O方面是通过qemu纯软件的方式模拟io,每次虚拟机发起io请求时,kvm内核模块会拦截此次请求,处理请求后将其放入io共享页,后通知用户空间的qemu进程。
qemu获得io操作结果之后,模拟出本次的io操作再次将结果放回io共享页,同时通知kvm模块。
kvm模块读取qemu模拟的io操作返回给虚拟机

virtio是一个运行在hypervisor上的一个api接口,让虚机知道自己运行在虚拟环境中,进行io操作时通过virtio与hypervisor通信,从而拥有更好的性能

磁盘快照

指定数据集合的一个完全可用拷贝,改拷贝包括相应数据在某个时间点的映像。快照可以是所表示的数据的一个副本,也可以是数据的复制品。
快照是指保存在存储设备中的数据的引用标记和指针。

在建立磁盘快照时,并不需要拷贝数据本身,只是通知文件系统将目前有数据的磁盘区块全部保留起来,不被覆写。这个通知只需要很短的时间。
接下来的文件的修改或任何新增、删除动作,均不会覆写数据原来所在的磁盘区块,而是将修改的部分写入其他可用磁盘区块中。

你可能感兴趣的:(libvirt)