kvm虚拟机操作命令

kvm虚拟机日常操作命令梳理

KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理

下面列出kvm日常管理中的命令

  • 1)查看KVM虚拟机配置文件及运行状态
    KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/
    autostart目录是配置kvm虚拟机开机自启动目录。

virsh命令帮助

virsh -help

或直接virsh命令和,再执行子命令。如下所示。

virsh

# 欢迎使用 virsh,虚拟化的交互式终端。
# 输入:'help' 来获得命令的帮助信息
# 'quit' 退出
# virsh # help
# .......

查看kvm虚拟机状态

virsh list --all
  • 2)KVM虚拟机开机
virsh start oeltest01
  • 3)KVM虚拟机关机或断电

关机
默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。

chkconfig acpid on
service acpid restart

virsh关机

virsh shutdown oeltest01

强制关闭电源

virsh destroy wintest01
  • 4)通过配置文件启动虚拟机
virsh create /etc/libvirt/qemu/wintest01.xml
  • 5)配置开机自启动虚拟机
virsh autostart oeltest01

autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。

  • 6)导出KVM虚拟机配置文件
virsh dumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml

KVM虚拟机配置文件可以通过这种方式进行备份。

  • 7)添加与删除KVM虚拟机

删除kvm虚拟机

virsh undefine wintest01

说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。

重新定义虚拟机配置文件
通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。

mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xml
virsh define /etc/libvirt/qemu/wintest01.xml
  • 8)编辑KVM虚拟机配置文件
virsh edit wintest01

virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。
可以但不建议直接通过vi编辑。

vim /etc/libvirt/qemu/wintest01.xml

  • 9)irsh console 控制台管理linux虚拟机

配置virsh console见下文
kvm虚拟化学习笔记(六)之kvm虚拟机控制台登录配置

virsh console oeltest01
  • 10)其它virsh命令

挂起服务器

virsh suspend oeltest01

恢复服务器

virsh resume oeltest01

virsh命令丰富。可以执行各种维护任务,本文只是从维护与管理的角度例举了常用的命令,为该命令的使用提供一个思路。

-------------------------------------------其他命令-------------------------------------------

  • 1)创建虚拟机
virt-install --name=centos1 \
--ram 1024 --vcpus=1 \
--disk path=/root/centos1.img,size=10 \
--accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \
--graphics vnc,port=5921 --network bridge=br0
  • 2)virsh的其他操作
[root@localhost /]# virsh start centos1 #启动虚拟机
[root@localhost /]# virt-viewer centos1 #如果有图形界面的话,可以进入虚拟机的界面
[root@localhost ~]# virsh shutdown centos1 #关闭虚拟机
[root@localhost /]# virsh reboot centos1 #重启虚拟机
[root@localhost /]# virsh suspend centos1 #暂停虚拟机
[root@localhost /]# virsh resume centos1 #恢复虚拟机
[root@localhost /]# virsh autostart centos1 #自动加载虚拟机

-------------------------------------------virsh参数如下-------------------------------------------

autostart      #自动加载指定的一个虚拟机
connect        #重新连接到hypervisor
console        #连接到客户会话
create         #从一个SML文件创建一个虚拟机
start          #开始一个非活跃的虚拟机
destroy        #删除一个虚拟机
define         #从一个XML文件定义一个虚拟机
domid          #把一个虚拟机名或UUID转换为ID
domuuid        #把一个郁闷或ID转换为UUID
dominfo        #查看虚拟机信息
domstate       #查看虚拟机状态
domblkstat     #获取虚拟机设备快状态
domifstat      #获取虚拟机网络接口状态
dumpxml        #XML中的虚拟机信息
edit           #编辑某个虚拟机的XML文件
list           #列出虚拟机
migrate        #将虚拟机迁移到另一台主机
quit           #退出非交互式终端
reboot         #重新启动一个虚拟机
resume         #重新恢复一个虚拟机
save           #把一个虚拟机的状态保存到一个文件
dump           #把一个虚拟机的内核dump到一个文件中以方便分析
shutdown       #关闭一个虚拟机
setmem         #改变内存的分配
setmaxmem      #改变最大内存限制值
suspend        #挂起一个虚拟机
vcpuinfo       #虚拟机的cpu信息
version        #显示virsh版本
  • 3)virt-clone,如果我们要建几个一样的虚拟机,这个命令,非常有用!
virt-clone --connect=qemu:#/system -o centos1 -n centos3 -f /root/centos3.img #克隆centos1

# 正在克隆 centos1.img | 10.0 GB 00:07
# Clone 'centos3' created successfully.

libguestfs-tools是虚拟机一个管理包,很有用的工具
安装工具包

yum -y install libguestfs-tools
  • 4)未登录的情况下,查看镜像目录
virt-ls centos.img /home #查看centos.img镜像文件中/home目录

# tank 
# mysql
  • 5)未登录的情况下,将镜像文件中的文件copy出来

查看所有的虚拟机名称

virsh list --all

Id 名称 状态
----------------------------------------------------
1 centos1 running
2 centos6.5 running
- arch 关闭
- arch1 关闭
- arch2 关闭
- arch3 关闭
- arch5 关闭
- centos3 关闭
- ubuntu 关闭
- ubuntu1 关闭

将centos1中的文件copy到tmp下面

virt-copy-out -d centos1 /etc/passwd /tmp
  • 6)查看虚拟机的分区情况
virt-filesystems -d centos1

# /dev/sda1
# /dev/VolGroup/lv_root
virt-list-partitions /root/centos.img

# /dev/sda1
# /dev/sda2
virt-df centos.img

# Filesystem 1K-blocks Used Available Use%
# centos.img:/dev/sda1 495844 34510 435734 7%
# centos.img:/dev/VolGroup/lv_root 8780808 2842056 5492700 33%
  • 7)mount虚拟机
guestmount -a /root/centos.img -m /dev/VolGroup/lv_root --rw /mnt/usb
cd /mnt/usb/
ls

# bin dev home lib64 media mnt opt root selinux sys usr
# boot etc lib lost+found misc net proc sbin srv tmp var
  • 8)修改kvm中虚拟机的内存大小
virsh edit vm01 # 注意vi直接编辑不生效

# vm01
# df8604c1-dcf3-fa98-420f-6eea7b39c395
# 1048576 ###本来开始设置为1G,现在这个单位是k
# 1048576
# 修改为1.5G
expr 1536 \* 1024
virsh list

# Id Name State
# ----------------------------------
# 1 win2003 running
# 3 vm01 running

修改配置文件后需要重新启动下虚拟机,先关闭它

virsh shutdown vm01

# Domain vm01 is being shutdown

确认已经被关闭

virsh list

# Id Name State
# ----------------------------------
# 1 win2003 running

启动

virsh start vm01

# Domain vm01 started

virsh list

# Id Name State
# ----------------------------------
# 1 win2003 running
# 3 vm01 running
 ```

`到机器上查看内存大小:`
```sh
free -m

# total used free shared buffers cached
# Mem: 1505 618 886 0 29 361
# -/+ buffers/cache: 227 1277
# Swap: 2000 0 2000
  • 9)删除一个虚拟机(vm01),可以删除一个状态为“shut off”的虚拟机
virsh undefine vm01
rm -f /home/data/vm01.img
  • 10)删除一个域
virsh list --all

# Id Name State
# ----------------------------------
# 1 web01 running ##处于工作状态
# - myweb01 shut off
# - myweb03 shut off
# - mywin2003 shut off
# - myxp shut off
# - xp shut off

处于工作状态也能删除!

virsh undefine web01

# Domain web01 has been undefined

virsh list

# Id Name State
# ----------------------------------
# 1 web01 running
virsh destroy web01

# Domain web01 destroyed

#web01已经没有了!
virsh list --all

# Id Name State
# ----------------------------------
# - myweb01 shut off
# - myweb03 shut off
# - mywin2003 shut off
# - myxp shut off
# - xp shut off

virsh define web01

# error: Failed to open file 'web01': No such file or directory

-------------------------------------------virsh相关命令-------------------------------------------
– 1)安装libvirt

yum install kvm virt-* libvirt
  • 2)检查是否安装成功
lsmod |grep kvm
  • 3)相关命令
virsh -c qemu:#/system list
virsh list
virsh list --all                  #查看所有状态的虚拟机
virsh shutdown myWin7             #关闭myWin7虚拟机
virsh destroy myWin7          #删除myWin7虚拟机
virsh start node4                     #开机虚拟机
virsh define /etc/libvirt/qemu/node5.xml        #根据主机配置文档添加虚拟机
virsh dumpxml node4 > /etc/libvirt/qemu/node6.xml      #将node4虚机的配置文件保存至node6.xml
virsh edit node6             #修改node6的配置文件
virsh suspend vm_name          #暂停虚拟机
virsh resume vm_name          #恢复虚拟机
  • 4)vm配置文件路径
    /etc/libvirtd/qemu/***.xml 可以通过vim对配置文件进行管理,编辑后需要#service libvirtd restart(不会对现有VM有影响。)

  • 10) 网络设置

查看网络

virsh net-list

# 名称               状态     自动开始  Persistent
# --------------------------------------------------
# default              活动     yes           yes

brctl show

# bridge name   bridge id       STP enabled interfaces
# br0       8000.0cc47acaec9a   no      eth0
#                           vnet0
#                           vnet1
# docker0       8000.000000000000   no      
# virbr0        8000.525400b7157f   yes     virbr0-nic

移除网络

brctl delif bro vnet1

添加网络

brctl addif bro vnet1

留下评论