KVM的基本管理
1.查看KVM虚拟机配置文件
#Kvm虚拟机默认配置文件位置 [root@kvm qemu]# pwd /etc/libvirt/qemu [root@kvm qemu]# ll total 12 -rw------- 1 root root 3863 Nov 6 17:26 CentOS6.5.xml -rw------- 1 root root 3771 Nov 7 00:57 CentOS6u7.xml -rw------- 1 root root 3628 Nov 7 02:04 centos.xml drwx------ 3 root root 40 Nov 7 00:46 networks
2 启动与关闭
#显示正在运行的虚拟机 [root@kvm ~]# virsh list Id Name State ---------------------------------------------------- #显示所有虚拟机 [root@kvm ~]# virsh list --all Id Name State ---------------------------------------------------- - centos shut off - CentOS6.5 shut off - CentOS6u7 shut off #启动名字为CentOS6.5的虚拟机 [root@kvm ~]# virsh start CentOS6.5 #关闭名字为CentOS6.5的虚拟机 [root@kvm ~]# virsh shutdown CentOS6.5 #强制关闭名字为Centos6.5的虚拟机 [root@kvm ~]# virsh destroy CentOS6.5 #移除名字为CentOS6.5的虚拟机 [root@kvm ~]# virsh undefine CentOS6.5 #设置CentOS6.5虚拟机开机启动 [root@kvm ~]# virsh autostart CentOS6.5 #默认情况下virsh工具不能对linux虚拟机进行关机操作 #linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。 # yum -y install acpid # /etc/init.d/acpid start
3 通过配置文件启动虚拟机
[root@kvm ~]# virsh create /etc/libvirt/qemu/CentOS6.5.xml
4 其它(挂起,恢复)virsh命令
#挂起服务器 [root@kvm qemu]# virsh suspend CentOS6.5 #恢复服务器 [root@kvm qemu]# virsh resume CentOS6.5
5 重命名虚拟机
1,停止虚拟机 [root@kvm qemu]# virsh shutdown CentOS6u5 1,导出虚拟机的配置文件 [root@kvm qemu]# pwd /etc/libvirt/qemu [root@kvm qemu-img]# virsh dumpxml CentOS6u5 > test-CentOS6u5.xml 2 更改配置文件 [root@kvm qemu]# sed -i 's/CentOS6u5/test-CentOS6u5/g' test-CentOS6u5.xml #注 可以不用更改镜像名 3 移除原有的虚拟机 [root@kvm qemu]# virsh undefine CentOS6u5 4 加载新建的虚拟机 [root@kvm qemu]# virsh define test-CentOS6u5.xml 5 启动虚拟机 [root@kvm qemu]# virsh start test-CentOS6u5
6 虚拟机创建快照
1 转换磁盘镜像文件格式为qcow2 [root@kvm ~]# virsh shutdown test-CentOS6u5 [root@kvm qemu-img]# qemu-img convert -f raw CentOS6u5.raw -O qcow2 CentOS6u5.raw.qcow2 快照一定需要qcow2格式 才行 我这边从新建立一个虚拟机 以qcow2 2 创建快照 [root@kvm qemu-img]# virsh snapshot-create CentOS6u5 3 查看快照 [root@kvm qemu-img]# virsh snapshot-list CentOS6u5 Name Creation Time State ------------------------------------------------------------ 1479043349 2016-11-13 08:22:29 -0500 shutoff 4 恢复快照 [root@kvm qemu-img]# virsh snapshot-revert CentOS6u5 1479043349 5 删除快照 [root@kvm qemu-img]# virsh snapshot-delete CentOS6u5 1479043349
7 查看虚拟机IP地址
[root@c5-op-dpdk05 ~]# virsh list Id Name State ---------------------------------------------------- 5 router1 running 6 router2 running 292 eve running # 查看虚拟机配置文件,找到MAC地址 [root@c5-op-dpdk05 ~]# virsh edit router1 <mac address='52:54:00:9e:91:42'/> # 根据arp 确定IP地址 [root@c5-op-dpdk05 ~]# arp -a ? (10.12.0.2) at 52:54:00:9e:91:42 [ether] on br1
8 KVM 虚拟机登录管理
新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能。
一、添加ttyS0的许可,允许root登陆
[root@localhost ~]# echo "ttyS0" >> /etc/securetty
二、编辑/etc/grub.conf中加入console=ttyS0
[root@localhost ~]# less /etc/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0 initrd /initramfs-2.6.32-431.el6.x86_64.img
三、编辑/etc/inittab,在最后一行加入内容 S0:12345:respawn:/sbin/agetty ttyS0 115200
[root@localhost ~]# less /etc/inittab # inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/init/rcS.conf # # Individual runlevels are started by /etc/init/rc.conf # # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf # # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, # with configuration in /etc/sysconfig/init. # # For information on how to write upstart event handlers, or how # upstart works, see init(5), init(8), and initctl(8). # # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: S0:12345:respawn:/sbin/agetty ttyS0 115200
四、重启服务器
[root@localhost ~]# reboot
五、在宿主机上测试连接
[root@study ~]# virsh list
Id Name State
----------------------------------------------------
4 centos running
[root@study ~]# virsh console 4
Connected to domain centos
Escape character is ^]
CentOS release 6.5 (Final) Kernel 2.6.32-431.el6.x86_64 on an x86_64 localhost.localdomain login: root Password: Last login: Thu Oct 13 02:51:30 on ttyS0
注:按 ctrl+] 组合键退出virsh console
对于centos 7 在虚机里运行 [root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0" then [root@localhost ~]# reboot 即可