管理kvm虚拟机命令

virsh uri:                                          查看当前主机上hypervisor的连接路径;

virsh connect:

virsh define:                                     创建一个虚拟机,根据事先定义的xml格式的配置文件;创建以后不会自动启动(也可以认为是识别新添加的而没有识别出来的虚拟机--激活);

virsh create:                                     创建,创建完成后会自动启动;

virsh undefine:                                 取消定义的虚拟机(只是针对虚拟机的配置文件的删除)

virsh list  --all                                  查看虚拟机列表

virsh destroy  rhel6                           强制关掉虚拟机电源

virt-install --os-variant list

virsh start rhel66                               开启rhel66 或 virsh create /etc/libvirt/qemu/rhel66.xml

virsh shutdown rhel66

virsh reboot rhel66

virsh   dominfo  centos-A                    查看虚拟机的信息

virsh console rhel66

virsh suspend rhel66                          挂起

virsh resume  rhel66                          恢复挂起

virsh pool-list --all  #

virsh pool-start vmware_pool             #启动存储池

virsh pool-destroy vmware_pool         #销毁存储池

virsh pool-undefine vmware_pool       #取消存储池的定义

virsh pool-info vmware_pool              #查看存储域(池)信息

1.undefine 和  destroy 删除

如果说一不小心把正在启动着的 kvm虚拟机配置文件删掉了,也可以进行恢复的,例如:

# virsh  dumpxml   centos-C  > /etc/libvirt/qemu/centos-C.xml       //在关闭虚拟机之前,重新定义一个配置文件即可恢复

如果是在关闭着的服务器上执行的virsh undefine  centos-C 删除命令,则会把对应的配置文件清空,虚拟机再也启动不了,重新定义也不行

如果在关闭着的kvm虚拟机上运行destroy命令,则会报错,执行不成功

# virsh  destroy  kvm-name                                          //此命令只针对运行的kvm虚拟机有效,相当于强制拔电源 

如果在运行着的kvm虚拟机上运行此命令,将正在运行的虚拟机强制关闭,此命令可以在kvm卡机,死机,但kvm还未关机的状态下,执行是最好不过的命令了

# /etc/libvirt/qemu/  虚拟机xml配置文件目录

# virsh edit rhel66   编辑xml配置文件,vi编辑的不会立即生效

2.解决virsh shutdown无法关闭KVM虚拟机 (注:以下操作都在客户机,不是宿主机)

# yum -y install  acpid
# service acpid restart
# chkconfig --level acpid on 
# chkconfig acpid --list

3.解决KVM中宿主机通过console无法连接客户机(注:以下操作都在客户机,不是宿主机)

a)添加ttyS0的安全许可,允许root登录:

echo "ttyS0" >> /etc/securetty

b)在/etc/grub.conf文件中为内核添加参数:

console=ttyS0

这步要注意:

console=ttyS0一定要放在kernel这行中(大约在第16行),不能单独一行,即console=ttyS0是kernel的一个参数,不是单独的

c)在/etc/inittab中添加agetty:

S0:12345:respawn:/sbin/agetty ttyS0 115200

4.kvm虚拟机的重命名 

a)重命名kvm虚拟机最好是将虚拟机先关机,然后再导出其xml文件

# cd /etc/libvirt/qemu

# virsh dumpxml rhel6 > CentOS02.xml

b)为了让重命名后的虚拟机名字与磁盘文件名一致、我们可以先将之前的磁盘文件命名成CentOS02.img

# cd /var/lib/libvirt/images

# mv rhel6..img CentOS02.img 

c)编辑CentOS02.xml文件,修改<name>标签对以及磁盘文件,这里我们将磁盘文件修改成CentOS02.img

<domain type='kvm'>

  <name>CentOS02</name>

      ......  

   ...省略......

      ......

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

      <driver name='qemu' type='raw' cache='none'/>

  <source file='/var/lib/libvirt/images/CentOS02.img'/>

d)使用virsh undefine命令删除之前的虚拟机,根据新的xml文件定义新的kvm虚拟机只是删除对应的xml配置文件,磁盘文件不会删除

# virsh undefine  rhel6                             //删除rhel6虚拟机

# virsh define /etc/libvirt/qemu/CentOS02.xml       //重新定义新的kvm虚

5.克隆的几种方法:

第一种:直接复制 kvm镜像文件里的镜像(/var/lib/libvirt/images)和 Kvm配置文件里的文件(/etc/libvirt/qemu)然后进行修改,启动即可

第二种:

# virt-clone -o oeltest01 -n oeltest02 -f /var/lib/libvirt/image/test02.img

说明:以oeltest01做为源,克隆oeltest01虚拟机,并创建名称为oeltest02虚拟机,使用磁盘文件/data/test02.img

第三种:图形界面克隆(操作略)

6.快照条件:

磁盘镜像格式,不能是raw格式,不支持,想用快照功能的话,首先要关机,转换镜像格式为 qcow  和 qcow2格式,修改配置文件(如下图1-1),修改其镜像类型和新的镜像格式文件,再重新启动即可

这种将raw格式的镜像虚拟机转换成 qcow2格式的镜像虚拟机,用qemu-img命令进行转换,最好是从原来的raw格式的镜像新生成一个新的qcow2格式的磁盘镜像,在进行配置,方能正常使用;如若在原来的raw镜像文件上直接做修改,让其直接变成qcow2格式的镜像文件,则会毁掉raw(原来的镜像文件),虚拟机则会起不来

切记千万不要这样转换格式,会使原来的失效,虚拟机就不能用了,被覆盖了

# qemu-img convert  -p -f raw  -O qcow2  centos-A.img   centos-A.img

注意修改镜像名字和磁盘类型

7.Kvm  快照  磁盘镜像管理

Kvm创建镜像网址(推荐用virsh命令

http://ilanni.blog.51cto.com/526870/1535627/

创建快照命令   (可以开关机执行此命令均可)

# virsh snapshot-create-as  centos   centos_snap1

查看虚拟机的快照列表

# virsh  snapshot-list    centos-X   (虚拟机名)

查看虚拟机快照的信息

# virsh snapshot-info  centos-X  centos-snap1

恢复快照(注意:恢复快照时,虚拟机一定要处于关机状态下)

# virsh  snapshot-revert centos-X   centos_snap

删除快照

# virsh  snapshot-delete  centos-X   centos_snap1

创建磁盘镜像文件

# qemu-img  create /var/lib/libvirt/images/test  20G (raw格式) 

创建一个10G的镜像,格式为qcow2,名字为test.qcow2

# qemu-img  create  /var/lib/libvirt/images/test.qcow2  -f qcow2 10G 

查看磁盘镜像信息

# qemu-img info  /var/lib/libvirt/images/test 

镜像格式的转换

(使用qemu-img  convert 命令进行转换,在这里原来的test的格式是raw,最后转换成qcow2格式)

# qemu-img convert  -p -f raw  -O qcow2  centos-A.img   centos-A.qcow2

    -p是显示转换进度 -f是指原有的镜像格式, -O是输出的镜像格式

切记千万不要这样转换格式,会使原来的失效,被覆盖了,如果转换之后的镜像也不能用,那么两个镜像就都废了,虚拟机就不能用了。

# qemu-img convert  -p -f raw  -O qcow2  centos-A.img   centos-A.img

8.kvm迁移(物理主机之间的kvm虚机)      静态迁移-----动态迁移

静态迁移:很好理解,关机,将*.xml配置文件 和.img 或.qcow2磁盘镜像文件拷贝到目的地物理主机

动态迁移:在线迁移kvm虚拟机,但是不影响正常服务的使用

动态迁移有两种方法

第一种:就是利用共享nfs服务,进行迁移(不建议使用)

第一种参考网址- - - - > http://www.linuxidc.com/Linux/2012-12/75492p3.htm

口述为:一台nfs服务器、两台服务器(vm1,vm2)

前提环境是在nfs环境上面搭建的kvm虚拟机,才能迁移,也就是说kvm虚拟机所处在的目录就是通过配置,将nfs服务器上挂载过来的磁盘,实际使用的空间是nfs服务器,真正运行在的服务器还是虚拟机所处在的物理机,这样方便迁移

第二种:无共享存储环境下操作(常用)

从entos6.4开始,支持在线的带存储迁移,就时不需要共享存储也能在线迁移

在进行迁移之前需要注意:两台物理主机的主机名不能相同,并且都需要添加hosts解析,否则迁移不成功,切记

A:  在备用宿主机上通过qemu-img  create 命令创建好空文件,大小和要备份的kvm虚拟机一模一样,也要注意格式,名称,大小

# qemu-img create  -f  qcow2  -o preallocation=metadata  centos-X.qcow2  10G

空文件需家预分配参数,否则复制过去的文件会是按照qcow2预分配文件的大小。

B: 设置迁移速度,一般不希望迁移的时候对正常业务造成影响,设置迁移速度限制到600M/s

# virsh  migrate-setspeed   centos-X  

C:  开始迁移

# virsh   migrate  --live  --copy-storage-all  --unsafe   centos-X  qemu+ssh://192.168.4.211/system

迁移时间随磁盘空间大小而不同,磁盘空间越大,迁移时间越长。迁移的过程是先迁移磁盘,然后迁移内存,迁移内存的时候,一般业务会瞬断下,虚拟机一瞬间会在一边关闭,另一边的宿主机开启

提示:迁移速度和成功率与网络有很大的关系,宿主机的网络尽量是万兆或者千兆多网卡绑定,可以提高迁移速度和成功率

用循环进行监测,是否启动

for  ((i=;i>;i++)) ; do virsh list; sleep  ; done

扩展:

Kvm宿主机系统崩溃的修复方法:

(1)如果是系统故障,使用引导盘进入rescue 模式修复系统故障,无法修复或修复时间无法预计时,重装kvm宿主机系统

(2)如果不能修复,重装宿主机系统

在重装系统之前,建议先用LiveCD启动机器,建立nfs,现将虚拟机相关镜像文件,xml配置文件复制到备用的宿主机上,在备用宿主机上开启虚拟机,先恢复业务,然后对系统进入彻底重装

kvm命令总结和虚机器备份迁移的更多相关文章

  1. v2v-VMware/VSphere中虚机离线迁移至openstack平台

    先决条件 exsi到openstack的迁移,分为两种,一种是静态迁移,另一种是在线迁移. 静态迁移(offline migration)也叫做常规迁移,离线迁移.在迁移之前将虚拟机暂停,同时拷贝虚拟 ...

  2. centos7 搭建svn服务器&客户端的访问&备份迁移

    当今用于版本控制的软件程序主要的有svn和git,其它软件咱不熟悉,今天记录下搭建svn服务器和svn客户端使用: 使用环境:虚拟机为centos7系统,svn服务器安装在centos7系统平台上,s ...

  3. openstack 虚机热迁移问题:虚机状态一直处于迁移中的情况处理

    前提:在偶尔的虚机热迁移中,发现虚机一直属于迁移状态中. 但是查看后台流量监控,发现没有流量已经下来了.然后在目标机器上查看,发现kvm已经在目标机器上. 1.查看kvm 实际所处宿主机方法: a.拿 ...

  4. 云与备份之(1):VMware虚机备份和恢复

    本系列文章会介绍云与备份之间的关系,包括: (1)VMware 虚机备份和恢复 (2)KVM 虚机备份和恢复 (3)云与备份 (4)OpenStack 与备份 (5)公有云与备份 1. 与备份有关的V ...

  5. [Sharepoint]备份 迁移 还原

    在sharepoint 的备份当中,一般分为一个sharepoint 站点的备份和sharepoint 整个站点的备份.我们可以用sharepoint designer 进行备份, 也可以用 stsa ...

  6. mongodb数据库备份迁移 windows -> linux

    mongodb数据库备份迁移 windows -> linux cd 到本机mongodb的安装目录 如: C:\Program Files\MongoDB\Server\3.4\bin 可以发 ...

  7. OpenStack之虚机热迁移

    OpenStack之虚机热迁移 最近要搞虚机的热迁移,所以也就看了看虚机迁移部分的内容.我的系统是CentOS6.5,此处为基于NFS共享平台的虚机迁移.有关NFS共享服务器的搭建可以看这里. Yak ...

  8. GitLab安装及备份迁移数据

    centos7安装GitLab 下载相应版本rpm包 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我此处下载9.3.6版本. # w ...

  9. Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)

    这里是利用MySqlBackup,可以再nuget中下载. 无法解决视图嵌视图报错的问题,只导表跟数据比较合适,如果有视图嵌视图,请参照Mysql备份迁移——Mysqldump(.NET调用Mysql ...

随机推荐

  1. Build path contains duplicate entry

    问题:Build path contains duplicate entry:''D:soft/Myeclipse 6.5/jre/lib/rt.jar' for project 'dataServi ...

  2. 2018/1/27 每日一学 最长不降序子序列的O(n*logn)算法

    手动维护一个数组模拟即可,233-- 可以使用algorithm中的lower_bound(相当于二分) 代码如下: #include<cstdio> #include<algori ...

  3. call 和 ret 指令

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  4. 【Java框架型项目从入门到装逼】第十二节 项目分层

    这一节我们开始对项目进行分层,一般来说,一个web项目的层次结构如下图所示: controller层为我们的控制层,用来接收用户的请求,比如新增一个学生的信息,新增的请求最先就是走到这一层.contr ...

  5. myeclipse取消js校验

    最近玩一个新的项目,项目里面集成了别的项目,在从SVN上第一次荡下来的时候编译的时候老是校验jq文件,老是被卡主,设置myeclipse环境的时候我已经取消了所有的js校验了,但是还是不行.恼火之余, ...

  6. Oracle Start With关键字

    Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, ...

  7. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

  8. 【转】5 Best Place to Learn Linux – Linux Tutorial Sites

    Linux have amazed every tech guy and make them curious to hands on Linux. Many of us not feel Linux ...

  9. 命令行登陆mysql提示'mysql' 不是内部或外部命令

    问题:命令行登陆mysql提示'mysql' 不是内部或外部命令.如图1所示. 图1 原因:没有将mysql的bin文件夹配置到环境变量里区,因为命令行登陆mysql需要调用bin下的mysql.ex ...

  10. jquery 中json数组的操作 增删改

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...