• Linux系统 虚拟化篇之KVM


    完全虚拟化 VMware 
    半虚拟化 xen 
    硬件辅助虚拟化Kvm

    #查看物理机是否支持虚拟化
    处理器虚拟化 VT-X
    I/O虚拟化 VT-d
    网络虚拟化 VT-C


    /etc/udev/rules.d/70-persistent-net.rules配置文件。新的mac会出现在这个文件中。因此Redhat 6之后需要更改两个文件:
    修改 /etc/udev/rules.d/70-persistent-net.rules 文件 
    删除掉关于 eth0 的信息。修改第二条 eth1 的网卡的名字为 eth0. 
    修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中mac地址为 
    /etc/udev/rules.d/70-persistent-net.rules 修改后的eth0的mac地址。
    之后重启network服务。若还是提示错误信息“Device eth0 does not seem to be present, delaying initialization.”则reboot即可解决。


    egrep "(svm|vmx)" /proc/cpuinfo
    grep -Ei 'vmx|svm' /proc/cpuinfo
    #安装KVM虚拟化
    yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-install virt-viewer

    kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
    libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。
    bridge-utils:设置网络网卡桥接。
    virt-*:创建、克隆虚拟机命令,以及图形化管理工具virt-manager
    qemu-img:安装qemu组件,使用qemu命令来创建磁盘等。

    LXC系统隔离
    kvm服务器虚拟化 
    kvm负责cpu虚拟化+内存虚拟化
    qemu是模拟IO设备(网卡,磁盘)
    libvirt 则是调用kvm虚拟化技术的接口用于管理的
    1.KVM是内核本身的一部分,因此可以利用内核的优化和改进。
    2.高性能, 稳定, 无需修改客户机系统。
    3.开源、免费

    #检查KVM模块是否加载
    lsmod |grep kvm

    #安装字符集
    yum install -y dejavu-lgc-sans-fonts
    #安装vnc
    yum install -y tigervnc-server tigervnc-server-module 
    #安装图形页面
    yum -y groupinstall "GNOME Desktop"
    #清空语言
    export LANG=C
    #启动libvirtd虚拟机监控进程
    /etc/init.d/libvirtd restart
    #设置字符界面启动
    systemctl set-default multi-user.target
    #设置虚拟化桥接网卡
    [root@nt213 network-scripts]# cat ifcfg-em4
    TYPE=Ethernet
    NAME=em4
    DEVICE=em4
    ONBOOT=yes
    BRIDGE=br0

    [root@nt213 network-scripts]# cat ifcfg-br0 
    TYPE=Bridge
    BOOTPROTO=static
    NAME=br0
    DEVICE=br0
    ONBOOT=yes
    DNS1=10.10.1.3
    IPADDR=10.10.49.223
    PREFIX=16
    GATEWAY=10.10.1.246

    #修改主机密码
    linux16行中,将ro这两个字母修改为rw init=/sysroot/bin/sh
    ctrl+x进入单用户模式
    chroot /sysroot
    passwd root
    touch /.autorelabel
    exit
    reboot

    kvm 创建虚拟机
    #底层它们基本上都是通过开源的虚拟化库Libvirt来开发的virsh
    虚拟机定义为domain,而不是vm(virtual machine)。Xen中Domain0表示宿主机系统,而在KVM中,domain完全指虚拟机系统。
    type一项指明了使用的是哪种虚拟化技术。如果使用的是KVM,那么值为kvm。如果使用的是Xen,那么值为xen。
    virsh #命令交互
    virt-manager #图形界面虚拟机管理器

    #创建虚拟机步骤
    1.生成硬盘镜像文件
    /var/lib/libvirt/images/ #默认镜像文件位置 
    qemu-img create -f qcow2 /images/centos6.3-x86_64.img 10G
    chown qemu:qemu /images/centos6.3-x86_64.img
    virt-install 
    --name centos6.3 
    --memory=1024 
    --arch=x86_64 
    --vcpus=1 
    --check-cpu 
    --os-type=linux 
    --os-variant='rhel6' 
    -c /tmp/CentOS-6.3-x86_64-minimal.iso 
    --disk path=/images/centos6.3-x86_64.img,device=disk,bus=virtio,size=10,format=qcow2 
    --bridge=br100 
    --noautoconsole 
    --vnc 
    --vncport=5902 
    --vnclisten=0.0.0.0

    2.编写xml配置文件
    /etc/libvirt/qemu/ #虚拟机配置文件默认目录xml
    <domain type='kvm'>
    虚拟机整体信息
    系统信息
    硬件资源特性
    突发事件处理
    虚拟磁盘(单个或多个)
    虚拟光盘(可选)
    虚拟网络(单个或多个)
    vnc/spice配置
    </domain>


    3.创建并运行虚拟机

    qemu-img info kvm01 #查看虚拟机镜像格式 
    qemu-img convert -f raw -O qcow2 kvm01.img kvm01.qcow2 #转换虚拟机镜像格式 
    qemu-img create -f qcow2 /var/lib/libvirt/images/kvm01-1.img 20G #新建虚拟机镜像磁盘 
    virsh attach-disk kvm01 /var/lib/libvirt/images/kvm01-1.img vdb --cache=none --subdriver=qcow2 #在线添加虚拟机镜像硬盘

    --version show programs version number and exit
    --connect URI 通过 libvirt URI 连接到虚拟机管理程序
    通用选项:
    -n NAME, --name NAME 客户机实例名称
    --memory MEMORY Configure guest memory allocation. Ex:
    --memory 1024 (in MiB)
    --memory 512,maxmemory=1024
    --memory 512,maxmemory=1024,hotplugmemorymax=2048,hotplugmemoryslots=2
    --vcpus VCPUS 配置客户机虚拟 CPU(vcpu) 数量。例如:
    --vcpus 5
    --vcpus 5,maxcpus=10,cpuset=1-4,6,8
    --vcpus sockets=2,cores=4,threads=2
    --cpu CPU CPU 模型和特性。例如:
    --cpu coreduo,+x2apic
    --cpu host
    --metadata METADATA 配置客户机元数据。例如:
    --metadata name=foo,title="My pretty title",uuid=...
    --metadata description="My nice long description"

    安装方法选项:
    --cdrom CDROM 光驱安装介质
    -l LOCATION, --location LOCATION
    安装源 (例如:nfs:host:/path, http://host/path,
    ftp://host/path)
    --pxe 使用 PXE 协议从网络引导
    --import 在已有的磁盘镜像中构建客户机
    --livecd 将光驱介质视为 Live CD
    -x EXTRA_ARGS, --extra-args EXTRA_ARGS
    将附加参数添加到由 --location
    引导的内核中
    --initrd-inject INITRD_INJECT
    添加指定文件到由 --location 指定的 initrd
    根中
    --os-variant DISTRO_VARIANT
    在客户机上安装的操作系统,例如:'fedor
    a18'、'rhel6'、'winxp' 等。
    --boot BOOT 配置客户机引导设置。例如:
    --boot hd,cdrom,menu=on
    --boot init=/sbin/init (针对容器)
    --idmap IDMAP 为 LXC 容器启用用户名称空间。例如:
    --idmap uid_start=0,uid_target=1000,uid_count=10
    设备选项:
    --disk DISK 指定存储的各种选项。例如:
    --disk size=10 (在默认位置创建 10GiB 镜像)
    --disk /my/existing/disk,cache=none
    --disk device=cdrom,bus=scsi
    --disk=?
    -w NETWORK, --network NETWORK
    配置客户机网络接口。例如:
    --network bridge=mybr0
    --network network=my_libvirt_virtual_net
    --network network=mynet,model=virtio,mac=00:11...
    --network none
    --network help
    --graphics GRAPHICS 配置客户机显示设置。例如:
    --graphics vnc
    --graphics spice,port=5901,tlsport=5902
    --graphics none
    --graphics vnc,password=foobar,port=5910,keymap=ja
    --controller CONTROLLER
    配置客户机控制器设备。例如:
    --controller type=usb,model=ich9-ehci1
    --input INPUT 配置客户机输入设备。例如:
    --input tablet
    --input keyboard,bus=usb
    --serial SERIAL 配置客户机串口设备
    --parallel PARALLEL 配置客户机并口设备
    --channel CHANNEL 配置客户机通信通道
    --console CONSOLE 配置文本控制台连接主机与客户机
    --hostdev HOSTDEV 配置物理 USB/PCI 等主机设备与客户机共享
    --filesystem FILESYSTEM
    传递主机目录到客户机。例如:
    --filesystem /my/source/dir,/dir/in/guest
    --filesystem template_name,/,type=template
    --sound [SOUND] 配置客户机声音设备仿真
    --watchdog WATCHDOG 配置客户机 watchdog 设备
    --video VIDEO 配置客户机视频硬件。
    --smartcard SMARTCARD
    配置客户机智能卡设备。例如:
    --smartcard mode=passthrough
    --redirdev REDIRDEV 配置客户机重定向设备。例如:
    --redirdev usb,type=tcp,server=192.168.1.1:4000
    --memballoon MEMBALLOON
    配置客户机 memballoon 设备。例如:
    --memballoon model=virtio
    --tpm TPM 配置客户机 TPM 设备。例如:
    --tpm /dev/tpm
    --rng RNG 配置客户机随机数生成器设备。例如:
    --rng /dev/random
    --panic PANIC 配置客户机 panic 设备。例如:
    --panic default
    --memdev MEMDEV Configure a guest memory device. Ex:
    --memdev dimm,target_size=1024

    客户机配置选项:
    --security SECURITY 设置域安全驱动配置。
    --numatune NUMATUNE 为域进程调整 NUMA 策略。
    --memtune MEMTUNE 为域进程调整内存策略。
    --blkiotune BLKIOTUNE
    为域进程调整 blkio 策略。
    --memorybacking MEMORYBACKING
    为域进程设置内存后备策略。例如:
    --memorybacking hugepages=on
    --features FEATURES 设置域 <features> XML。例如:
    --features acpi=off
    --features apic=on,eoi=on
    --clock CLOCK 设置域 <clock> XML。例如:
    --clock offset=localtime,rtc_tickpolicy=catchup
    --pm PM 配置 VM 电源管理功能
    --events EVENTS 配置 VM 生命周期管理策略
    --resource RESOURCE 配置 VM 资源分区(cgroups)
    --sysinfo SYSINFO Configure SMBIOS System Information. Ex:
    --sysinfo emulate
    --sysinfo host
    --sysinfo bios_vendor=Vendor_Inc.,bios_version=1.2.3-abc,...
    --sysinfo system_manufacturer=System_Corp.,system_product=Computer,...
    --sysinfo baseBoard_manufacturer=Baseboard_Corp.,baseBoard_product=Motherboard,...
    --qemu-commandline QEMU_COMMANDLINE
    Pass arguments directly to the qemu emulator. Ex:
    --qemu-commandline='-display gtk,gl=on'
    --qemu-commandline env=DISPLAY=:0.1

    虚拟化平台选项:
    -v, --hvm 这个客户机应该是一个全虚拟化客户机
    -p, --paravirt 这个客户机应该是一个半虚拟化客户机
    --container 这个客户机应该是一个容器客户机
    --virt-type HV_TYPE 要使用的管理程序名称 (kvm, qemu, xen, ...)
    --arch ARCH 模拟 CPU 架构
    --machine MACHINE 机器类型为仿真类型

    其它选项:
    --autostart 主机启动时自动启动域。
    --transient Create a transient domain.
    --wait WAIT 请等待数分钟以便完成安装。
    --noautoconsole 不要自动尝试连接到客户端控制台
    --noreboot 安装完成后不启动客户机。
    --print-xml [XMLONLY]
    打印生成的 XML 域,而不是创建客户机。
    --dry-run 运行安装程序,但不创建设备或定义客户
    机。
    --check CHECK 启用或禁用验证检查。例如:
    --check path_in_use=off
    --check all=off
    -q, --quiet 抑制非错误输出
    -d, --debug 输入故障排除信息


    #virsh交互模式命令
    Domain Management (help keyword 'domain'):
    attach-device 从一个XML文件附加装置
    attach-disk 附加磁盘设备
    attach-interface 获得网络界面
    autostart 自动开始一个域
    blkdeviotune 设定或者查询块设备 I/O 调节参数。
    blkiotune 获取或者数值 blkio 参数
    blockcommit 启动块提交操作。
    blockcopy 启动块复制操作。
    blockjob 管理活跃块操作
    blockpull 使用其后端映像填充磁盘。
    blockresize 创新定义域块设备大小
    change-media 更改 CD 介质或者软盘驱动器
    console 连接到客户会话
    cpu-baseline 计算基线 CPU
    cpu-compare 使用 XML 文件中描述的 CPU 与主机 CPU 进行对比
    cpu-stats 显示域 cpu 统计数据
    create 从一个 XML 文件创建一个域
    define 从一个 XML 文件定义(但不开始)一个域
    desc 显示或者设定域描述或者标题
    destroy 销毁(停止)域
    detach-device 从一个 XML 文件分离设备
    detach-disk 分离磁盘设备
    detach-interface 分离网络界面
    domdisplay 域显示连接 URI
    domfsfreeze Freeze domain's mounted filesystems.
    domfsthaw Thaw domain's mounted filesystems.
    domfsinfo Get information of domain's mounted filesystems.
    domfstrim 在域挂载的文件系统中调用 fstrim。
    domhostname 输出域主机名
    domid 把一个域名或 UUID 转换为域 id
    domif-setlink 设定虚拟接口的链接状态
    domiftune 获取/设定虚拟接口参数
    domjobabort 忽略活跃域任务
    domjobinfo 域任务信息
    domname 将域 id 或 UUID 转换为域名
    domrename rename a domain
    dompmsuspend 使用电源管理功能挂起域
    dompmwakeup 从 pmsuspended 状态唤醒域
    domuuid 把一个域名或 id 转换为域 UUID
    domxml-from-native 将原始配置转换为域 XML
    domxml-to-native 将域 XML 转换为原始配置
    dump 把一个域的内核 dump 到一个文件中以方便分析
    dumpxml XML 中的域信息
    edit 编辑某个域的 XML 配置
    event Domain Events
    inject-nmi 在虚拟机中输入 NMI
    iothreadinfo view domain IOThreads
    iothreadpin control domain IOThread affinity
    iothreadadd add an IOThread to the guest domain
    iothreaddel delete an IOThread from the guest domain
    send-key 向虚拟机发送序列号
    send-process-signal 向进程发送信号
    lxc-enter-namespace LXC 虚拟机进入名称空间
    managedsave 管理域状态的保存
    managedsave-remove 删除域的管理保存
    memtune 获取或者数值内存参数
    perf Get or set perf event
    metadata show or set domain's custom XML metadata
    migrate 将域迁移到另一个主机中
    migrate-setmaxdowntime 设定最大可耐受故障时间
    migrate-compcache 获取/设定压缩缓存大小
    migrate-setspeed 设定迁移带宽的最大值
    migrate-getspeed 获取最长迁移带宽
    migrate-postcopy Switch running migration from pre-copy to post-copy
    numatune 获取或者数值 numa 参数
    qemu-attach QEMU 附加
    qemu-monitor-command QEMU 监控程序命令
    qemu-monitor-event QEMU Monitor Events
    qemu-agent-command QEMU 虚拟机代理命令
    reboot 重新启动一个域
    reset 重新设定域
    restore 从一个存在一个文件中的状态恢复一个域
    resume 重新恢复一个域
    save 把一个域的状态保存到一个文件
    save-image-define 为域的保存状态文件重新定义 XML
    save-image-dumpxml 在 XML 中保存状态域信息
    save-image-edit 为域保存状态文件编辑 XML
    schedinfo 显示/设置日程安排变量
    screenshot 提取当前域控制台快照并保存到文件中
    set-user-password set the user password inside the domain
    setmaxmem 改变最大内存限制值
    setmem 改变内存的分配
    setvcpus 改变虚拟 CPU 的号
    shutdown 关闭一个域
    start 开始一个(以前定义的)非活跃的域
    suspend 挂起一个域
    ttyconsole tty 控制台
    undefine 取消定义一个域
    update-device 从 XML 文件中关系设备
    vcpucount 域 vcpu 计数
    vcpuinfo 详细的域 vcpu 信息
    vcpupin 控制或者查询域 vcpu 亲和性
    emulatorpin 控制火车查询域模拟器亲和性
    vncdisplay vnc 显示
    guestvcpus query or modify state of vcpu in the guest (via agent)
    setvcpu attach/detach vcpu or groups of threads
    domblkthreshold set the threshold for block-threshold event for a given block device or it's backing chain element

    Domain Monitoring (help keyword 'monitor'):
    domblkerror 在块设备中显示错误
    domblkinfo 域块设备大小信息
    domblklist 列出所有域块
    domblkstat 获得域设备块状态
    domcontrol 域控制接口状态
    domif-getlink 获取虚拟接口链接状态
    domifaddr Get network interfaces' addresses for a running domain
    domiflist 列出所有域虚拟接口
    domifstat 获得域网络接口状态
    dominfo 域信息
    dommemstat 获取域的内存统计
    domstate 域状态
    domstats get statistics about one or multiple domains
    domtime domain time
    list 列出域

    Host and Hypervisor (help keyword 'host'):
    allocpages Manipulate pages pool size
    capabilities 性能
    cpu-models CPU models
    domcapabilities domain capabilities
    freecell NUMA可用内存
    freepages NUMA free pages
    hostname 打印管理程序主机名
    maxvcpus 连接 vcpu 最大值
    node-memory-tune 获取或者设定节点内存参数
    nodecpumap 节点 cpu 映射
    nodecpustats 输出节点的 cpu 状统计数据。
    nodeinfo 节点信息
    nodememstats 输出节点的内存状统计数据。
    nodesuspend 在给定时间段挂起主机节点
    sysinfo 输出 hypervisor sysinfo
    uri 打印管理程序典型的URI
    version 显示版本

    Interface (help keyword 'interface'):
    iface-begin 生成当前接口设置快照,可在今后用于提交 (iface-commit) 或者恢复 (iface-rollback)
    iface-bridge 生成桥接设备并为其附加一个现有网络设备
    iface-commit 提交 iface-begin 后的更改并释放恢复点
    iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
    iface-destroy 删除物理主机接口(启用它请执行 "if-down")
    iface-dumpxml XML 中的接口信息
    iface-edit 为物理主机界面编辑 XML 配置
    iface-list 物理主机接口列表
    iface-mac 将接口名称转换为接口 MAC 地址
    iface-name 将接口 MAC 地址转换为接口名称
    iface-rollback 恢复到之前保存的使用 iface-begin 生成的更改
    iface-start 启动物理主机接口(启用它请执行 "if-up")
    iface-unbridge 分离其辅助设备后取消定义桥接设备
    iface-undefine 取消定义物理主机接口(从配置中删除)

    Network Filter (help keyword 'filter'):
    nwfilter-define 使用 XML 文件定义或者更新网络过滤器
    nwfilter-dumpxml XML 中的网络过滤器信息
    nwfilter-edit 为网络过滤器编辑 XML 配置
    nwfilter-list 列出网络过滤器
    nwfilter-undefine 取消定义网络过滤器

    Networking (help keyword 'network'):
    net-autostart 自动开始网络
    net-create 从一个 XML 文件创建一个网络
    net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy 销毁(停止)网络
    net-dhcp-leases print lease info for a given network
    net-dumpxml XML 中的网络信息
    net-edit 为网络编辑 XML 配置
    net-event Network Events
    net-info 网络信息
    net-list 列出网络
    net-name 把一个网络UUID 转换为网络名
    net-start 开始一个(以前定义的)不活跃的网络
    net-undefine undefine a persistent network
    net-update 更新现有网络配置的部分
    net-uuid 把一个网络名转换为网络UUID

    Node Device (help keyword 'nodedev'):
    nodedev-create 根据节点中的 XML 文件定义生成设备
    nodedev-destroy 销毁(停止)节点中的设备
    nodedev-detach 将节点设备与其设备驱动程序分离
    nodedev-dumpxml XML 中的节点设备详情
    nodedev-list 这台主机中中的枚举设备
    nodedev-reattach 重新将节点设备附加到他的设备驱动程序中
    nodedev-reset 重置节点设备
    nodedev-event Node Device Events

    Secret (help keyword 'secret'):
    secret-define 定义或者修改 XML 中的 secret
    secret-dumpxml XML 中的 secret 属性
    secret-event Secret Events
    secret-get-value secret 值输出
    secret-list 列出 secret
    secret-set-value 设定 secret 值
    secret-undefine 取消定义 secret

    Snapshot (help keyword 'snapshot'):
    snapshot-create 使用 XML 生成快照
    snapshot-create-as 使用一组参数生成快照
    snapshot-current 获取或者设定当前快照
    snapshot-delete 删除域快照
    snapshot-dumpxml 为域快照转储 XML
    snapshot-edit 编辑快照 XML
    snapshot-info 快照信息
    snapshot-list 为域列出快照
    snapshot-parent 获取快照的上级快照名称
    snapshot-revert 将域转换为快照

    Storage Pool (help keyword 'pool'):
    find-storage-pool-sources-as 找到潜在存储池源
    find-storage-pool-sources 发现潜在存储池源
    pool-autostart 自动启动某个池
    pool-build 建立池
    pool-create-as 从一组变量中创建一个池
    pool-create 从一个 XML 文件中创建一个池
    pool-define-as 在一组变量中定义池
    pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file
    pool-delete 删除池
    pool-destroy 销毁(删除)池
    pool-dumpxml XML 中的池信息
    pool-edit 为存储池编辑 XML 配置
    pool-info 存储池信息
    pool-list 列出池
    pool-name 将池 UUID 转换为池名称
    pool-refresh 刷新池
    pool-start 启动一个(以前定义的)非活跃的池
    pool-undefine 取消定义一个不活跃的池
    pool-uuid 把一个池名称转换为池 UUID
    pool-event Storage Pool Events

    Storage Volume (help keyword 'volume'):
    vol-clone 克隆卷。
    vol-create-as 从一组变量中创建卷
    vol-create 从一个 XML 文件创建一个卷
    vol-create-from 生成卷,使用另一个卷作为输入。
    vol-delete 删除卷
    vol-download 将卷内容下载到文件中
    vol-dumpxml XML 中的卷信息
    vol-info 存储卷信息
    vol-key 为给定密钥或者路径返回卷密钥
    vol-list 列出卷
    vol-name 为给定密钥或者路径返回卷名
    vol-path 为给定密钥或者路径返回卷路径
    vol-pool 为给定密钥或者路径返回存储池
    vol-resize 创新定义卷大小
    vol-upload 将文件内容上传到卷中
    vol-wipe 擦除卷

    Virsh itself (help keyword 'virsh'):
    cd 更改当前目录
    echo echo 参数
    exit 退出这个非交互式终端
    help 打印帮助
    pwd 输出当前目录
    quit 退出这个非交互式终端
    connect 连接(重新连接)到 hypervisor


    虚拟机的冷迁移
    导出虚拟机xml文件(配置文件) 
    # virsh dumpxml vm-name > dump.xml 
    vm-name 为你的虚拟机名称 
    拷贝虚拟机磁盘和xml文件(从hostA -> hostB) 
    # scp /path-to-image/vm-image hostB:/root 
    # scp dump.xml hostB:/root 
    vm-image的默认路径为 /var/lib/libvirt/images/ (libvirt管理的虚拟机) 
    登录hostB, 修改dump.xml 
    根据B的硬件环境,修改dump.xml的文件内容。 
    比如<interface>中bridge名称,<disk>中<source file>的路径。 
    加载虚拟机

    # virsh define dump.xml 
    切记不能用virsh create。否则虚拟机关闭后,该虚拟机从虚拟机列表删除。 
    如果你要再次使用该虚拟机的话:则必须重新进行create/define操作。 
    <!--
    WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
    OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
    virsh edit 146
    or other application using the libvirt API.
    -->

    <domain type='kvm'>
    <name>146</name>
    <uuid>41b0ae02-eda6-4ac0-b002-3a69ffc153a4</uuid>
    <memory unit='KiB'>2097152</memory>
    <currentMemory unit='KiB'>2097152</currentMemory>
    <vcpu placement='static'>4</vcpu>
    <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
    </os>
    <features>
    <acpi/>
    <apic/>
    </features>
    <cpu mode='custom' match='exact' check='partial'>
    <model fallback='allow'>Broadwell</model>
    </cpu>
    <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    </clock>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>destroy</on_crash>
    <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
    </pm>
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/var/lib/libvirt/images/146.qcow2'/>
    <target dev='vda' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <target dev='hda' bus='ide'/>
    <readonly/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
    <master startport='0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
    <master startport='2'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
    <master startport='4'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <interface type='bridge'>
    <mac address='52:54:00:71:96:bd'/>
    <source bridge='br0'/>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
    <target port='0'/>
    </serial>
    <console type='pty'>
    <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
    <target type='virtio' name='org.qemu.guest_agent.0'/>
    <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <channel type='spicevmc'>
    <target type='virtio' name='com.redhat.spice.0'/>
    <address type='virtio-serial' controller='0' bus='0' port='2'/>
    </channel>
    <input type='tablet' bus='usb'>
    <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
    <listen type='address' address='127.0.0.1'/>
    </graphics>
    <sound model='ich6'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
    <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
    <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
    <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </memballoon>
    </devices>
    </domain>


    virsh list #显示本地活动虚拟机
    virsh list --all #显示本地所有的虚拟机(活动的+不活动的)
    virsh define instance-00000015.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
    virsh edit instance-00000015 # 编辑配置文件(一般是在刚定义完虚拟机之后)
    virsh start instance-00000015 #启动名字为ubuntu的非活动虚拟机
    virsh reboot instance-00000015 #重启虚拟机 
    virsh create instance-00000015.xml #创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
    virsh suspend instance-00000015 #暂停虚拟机
    virsh resume instance-00000015 #启动暂停的虚拟机
    virsh shutdown instance-00000015 #正常关闭虚拟机
    virsh destroy instance-00000015 #强制关闭虚拟机
    virsh dominfo instance-00000015 #显示虚拟机的基本信息
    virsh domname 2 #显示id号为2的虚拟机名
    virsh domid instance-00000015 #显示虚拟机id号
    virsh domuuid instance-00000015 #显示虚拟机的uuid
    virsh domstate instance-00000015 #显示虚拟机的当前状态
    virsh dumpxml instance-00000015 #显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
    virsh setmem instance-00000015 512000 #给不活动虚拟机设置内存大小
    virsh setvcpus instance-00000015 4 # 给不活动虚拟机设置cpu个数
    virsh save instance-00000015 a #将该instance-00000015虚拟机的运行状态存储到文件a中
    virsh restore a #恢复被存储状态的虚拟机的状态,即便虚拟机被删除也可以恢复(如果虚拟机已经被undefine移除,那么恢复的虚拟机也只是一个临时的状态,关闭后自动消失)
    virsh undefine instance-00000015 #移除虚拟机,虚拟机处于关闭状态后还可以启动,但是被该指令删除后不能启动。在虚拟机处于Running状态时,调用该指令,该指令暂时不生效,但是当虚拟机被关闭后,该指令生效移除该虚拟机,也可以在该指令生效之前调用define+TestKVM.xml取消该指令

  • 相关阅读:
    LA 6439 Pasti Pas! Hash
    HDU 1067 Gap BFS+Hash
    POJ 3474 Gold Balanced Lineup Hash
    ZOJ 3802 Easy 2048 Again 状压DP
    Hihocoder #1044 状态压缩·一
    HDU 2522 & AOJ 441 & AOJ 364 关于小数和分数的转换
    HDU 2549 Sumset Hash+枚举
    POJ 1840 Eqs Hash + 中途相遇法
    HDU 2128 Tempter of the Bone II BFS
    POJ 3686 & 拆点&KM
  • 原文地址:https://www.cnblogs.com/devops-docker/p/11495666.html
Copyright © 2020-2023  润新知