kvm备忘(2)

2017-02-23  本文已影响0人  钟大發

kvm 管理工具

对于管理kvm 其实已经有了很多比较成熟的工具,常用的比如以下这种:
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于 libvirt 的 命令行工具 (CLI)
virt-v2v:虚机格式迁移工具 #vsphere 出的一个工具,对于开源的linux来说不太友好。
virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等

目前用的比较多的是libvirt 下的virsh 的工具,管理虚拟机经常会遇到以下情况,比如磁盘扩容,新挂载磁盘,迁移等等。

磁盘扩容

一般的kvm 磁盘扩容会有两种情况:
1.新挂载磁盘

virsh attch-disk instance_name ./vdisk #通过virsh 进行挂载,但是虚拟机重启后会失效。而且经常挂不上

比较好的办法是通过修改配置文件的方式进行挂载,将虚拟机的xml 配置文件加上以下信息:

     <disk type="file" device="disk">
          <driver name="qemu" type="qcow2" cache="none" /> <!--cache中的none表示直接从硬盘写到disk镜像文件,性能差但是不会丢数据,write-back 模式正好相反-->
          <source file="/var/lib/libvirt/images/test.qcow2" />        <!--目的镜像路径-->
          <target dev="hda" bus="virtio" />
      </disk>

然后重新define 和start 就可以了
2.直接扩容vdisk
之前说过raw经常用于kvm 扩容的中间格式使用,比如vmdk 这种扩容就需要转成raw 后,将新的空白的raw 虚拟硬盘>> 进去,再转会vmdk,比较麻烦,而且需要关机进行:

 dd if=/dev/zero bs=1024MB count=10 >> vdisk #增加10G

但是qcow2 可以直接增加硬盘大小,且可以在线扩容:

root@10.1.99.60:~# qemu-img resize 2.img +3G
Image resized.
root@10.1.99.60:~# qemu-img info 2.img 
image: 2.img
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 200K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

kvm 迁移

1.kvm 静态迁移
静态迁移没什么好说的,关机,拷贝,修改配置文件,开机即可,最好保持2个节点之间qemu的版本一致。
2.kvm 动态迁移
virsh 自带了migrate 参数。-live 表示动态迁移,但是有个很大的限制条件就是需要2个节点之间共享存储。由此可见,所谓的动态迁移迁移的并非数据,只是kvm 在节点上的配置信息,以及内存数据而且,所以迁移速度很快,且不会宕机:

virsh migrate --live --verbose instance_01  qemu+ssh://10.1.1.2/opt tcp://192.168.159.160

其他

附上从其他人那找来的virsh 命令清单以及注释:

virsh
    help            打印帮助
    attach-device   从一个XML文件附加装置
    attach-disk     附加磁盘设备
    attach-interface 获得网络界面
    autostart       自动开始一个域
    capabilities    性能
    cd              change the current directory
    connect         连接(重新连接)到 hypervisor
    console         连接到客户会话
    cpu-baseline    compute baseline CPU
    cpu-compare     compare host CPU with a CPU described by an XML file
    create          从一个 XML 文件创建一个域
    start           开始一个(以前定义的)非活跃的域
    destroy         删除一个域
    detach-device   从一个 XML 文件分离设备
    detach-disk     分离磁盘设备
    detach-interface 分离网络界面
    define          从一个 XML 文件定义(但不开始)一个域
    domid           把一个域名或 UUID 转换为域 id
    domuuid         把一个域名或 id 转换为域 UUID
    dominfo         域信息
    domjobinfo      domain job information
    domjobabort     abort active domain job
    domname         将域 id 或 UUID 转换为域名
    domstate        域状态
    domblkstat      获得域设备块状态
    domifstat       获得域网络接口状态
    dommemstat      get memory statistics for a domain
    domblkinfo      domain block device size information
    domxml-from-native Convert native config to domain XML
    domxml-to-native Convert domain XML to native config
    dumpxml         XML 中的域信息
    edit            编辑某个域的 XML 配置
    find-storage-pool-sources 发现潜在存储池源
    find-storage-pool-sources-as 找到潜在存储池源
    freecell        NUMA可用内存
    hostname        打印管理程序主机名
    list            列出域
    migrate         将域迁移到另一个主机中
    migrate-setmaxdowntime set maximum tolerable downtime
    net-autostart   自动开始网络
    net-create      从一个 XML 文件创建一个网络
    net-define      从一个 XML 文件定义(但不开始)一个网络
    net-destroy     删除一个网络
    net-dumpxml     XML 中的网络信息
    net-edit        为网络编辑 XML 配置
    net-list        列出网络
    net-name        把一个网络UUID 转换为网络名
    net-start       开始一个(以前定义的)不活跃的网络
    net-undefine    取消定义一个非活跃的网络
    net-uuid        把一个网络名转换为网络UUID
    iface-list      list physical host interfaces
    iface-name      convert an interface MAC address to interface name
    iface-mac       convert an interface name to interface MAC address
    iface-dumpxml   interface information in XML
    iface-define    define (but don't start) a physical host interface from an XML file
    iface-undefine  undefine a physical host interface (remove it from configuration)
    iface-edit      edit XML configuration for a physical host interface
    iface-start     start a physical host interface (enable it / "if-up")
    iface-destroy   destroy a physical host interface (disable it / "if-down")
    managedsave     managed save of a domain state
    nodeinfo        节点信息
    nodedev-list    这台主机中中的枚举设备
    nodedev-dumpxml XML 中的节点设备详情
    nodedev-dettach dettach node device from its device driver
    nodedev-reattach reattach node device to its device driver
    nodedev-reset   重置节点设备
    nodedev-create  create a device defined by an XML file on the node
    nodedev-destroy destroy a device on the node
    nwfilter-define define or update a network filter from an XML file
    nwfilter-undefine undefine a network filter
    nwfilter-dumpxml network filter information in XML
    nwfilter-list   list network filters
    nwfilter-edit   edit XML configuration for a network filter
    pool-autostart  自动启动某个池
    pool-build      建立池
    pool-create     从一个 XML 文件中创建一个池
    pool-create-as  从一组变量中创建一个池
    pool-define     在一个 XML 文件中定义(但不启动)一个池
    pool-define-as  在一组变量中定义池
    pool-destroy    销毁池
    pool-delete     删除池
    pool-dumpxml    XML 中的池信息
    pool-edit       为存储池编辑 XML 配置
    pool-info       存储池信息
    pool-list       列出池
    pool-name       将池 UUID 转换为池名称
    pool-refresh    刷新池
    pool-start      启动一个(以前定义的)非活跃的池
    pool-undefine   取消定义一个不活跃的池
    pool-uuid       把一个池名称转换为池 UUID
    secret-define   define or modify a secret from an XML file
    secret-dumpxml  secret attributes in XML
    secret-set-value set a secret value
    secret-get-value Output a secret value
    secret-undefine undefine a secret
    secret-list     list secrets
    pwd             print the current directory
    quit            退出这个非交互式终端
    exit            退出这个非交互式终端
    reboot          重新启动一个域
    restore         从一个存在一个文件中的状态恢复一个域
    resume          重新恢复一个域
    save            把一个域的状态保存到一个文件
    schedinfo       显示/设置日程安排变量
    dump            把一个域的内核 dump 到一个文件中以方便分析
    shutdown        关闭一个域
    setmem          改变内存的分配
    setmaxmem       改变最大内存限制值
    setvcpus        改变虚拟 CPU 的号
    suspend         挂起一个域
    ttyconsole      tty 控制台
    undefine        取消定义一个非活跃的域
    update-device   update device from an XML file
    uri             打印管理程序典型的URI
    vol-create      从一个 XML 文件创建一个卷
    vol-create-from create a vol, using another volume as input
    vol-create-as   从一组变量中创建卷
    vol-clone       clone a volume.
    vol-delete      删除卷
    vol-wipe        wipe a vol
    vol-dumpxml     XML 中的卷信息
    vol-info        存储卷信息
    vol-list        列出卷
    vol-pool        returns the storage pool for a given volume key or path
    vol-path        returns the volume path for a given volume name or key
    vol-name        returns the volume name for a given volume key or path
    vol-key         returns the volume key for a given volume name or path
    vcpuinfo        域 vcpu 的信息
    vcpupin         控制域 vcpu affinity
    version         显示版本
    vncdisplay      vnc 显示
    snapshot-create Create a snapshot
    snapshot-current Get the current snapshot
    snapshot-delete Delete a domain snapshot
    snapshot-dumpxml Dump XML for a domain snapshot
    snapshot-list   List snapshots for a domain
    snapshot-revert Revert a domain to a snapshot

上一篇下一篇

猜你喜欢

热点阅读