libvirt

作者: why_not_ | 来源:发表于2019-01-13 14:11 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/lookdqtx.html