检查硬件是否支持虚拟化
[root@localhost ~]# grep --color "vmx|svm" /proc/cpuinfo
安装环境
[root@localhost ~]# yum install -y kvm virt-* libvirt bridge-utils qemu-img
检测是否已经加载KVM模块
[root@localhost ~]# lsmod | grep --color kvm
或
[root@localhost ~]# modprobe kvm_intel
配置虚拟网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-br0
[root@localhost network-scripts]# vi ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:EE:D0:8F
TYPE=Ethernet
UUID=7d11a486-8c8b-4d1b-9135-a3257fb54b7e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0
[root@localhost network-scripts]# vi ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
[root@localhost network-scripts]# service network restart
创建虚拟机1(网络)
[root@localhost ~]# /etc/init.d/libvirtd restart ; /etc/init.d/messagebus restart
执行命令,如果结果类似,说明网络配置正确
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c2955a70a no eth0
virbr0 8000.525400391409 yes virbr0-nic
执行命令创建qcow2格式的虚拟磁盘文件,否则虚拟机无法生成快照
[root@localhost ~]# qemu-img create -f qcow2 -o preallocation=metadata /data/vmCentOS1.qcow2 30G
创建虚拟机并安装操作系统
[root@localhost ~]# virt-install \
--name vmCentOS6.7_1 \
--ram 512 \
--disk path=/data/vmCentOS1.qcow2,format=qcow2,size=30,bus=virtio \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://mirrors.163.com/centos/6.7/os/i386/' \
--extra-args 'console=ttyS0,115200n8 serial'
#--ram 内存
#--disk path 虚拟磁盘保存路径
#--vcpus CPU数
#--os-type 系统类型
#--os-variant 系统版本
#--nerwork bridge 虚拟网卡
#--location 源
#--graphics nano 文本格式安装界面
以下看图操作
图一、选择安装语言
图二、选择手动设置IP
图三、手动设置IP,此IP必须可以联网
图四、
图五、
图六、欢迎界面
图七、
图八、选择Re-initiallize all
图九、选择时区 Asia/Shanghai
图十、设置root密码
图十一、选择 Replace existing Linux system -- OK
图十二、选择 Write changes to disk
图十三、
图十四、
图十五、安装完成
创建虚拟机2(本地NFS)
挂载光驱或ISO文件
[root@localhost ~]# mount /dev/cdrom /mnt/
宿主配置NFS
[root@localhost ~]# yum install -y nfs-utils rpcbind
[root@localhost ~]# vi /etc/exports
/mnt 192.168.1.0/24(ro)
[root@localhost ~]# /etc/init.d/rpcbind restart ; /etc/init.d/nfs restart
[root@localhost ~]# showmount -e 192.168.1.2
Export list for 192.168.1.2:
/mnt 192.168.1.0/24
执行命令创建qcow2格式的虚拟磁盘文件,否则虚拟机无法生成快照
[root@localhost ~]# qemu-img create -f qcow2 -o \
preallocation=metadata /data/vmCentOS2.qcow2 30G
创建虚拟机并安装操作系统
[root@localhost ~]# virt-install \
--name vmCentOS6.7_2 \
--ram 512 \
--disk path=/data/vmCentOS2.qcow2,format=qcow2,size=30,bus=virtio \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location '/mnt/' \
--extra-args 'console=ttyS0,115200n8 serial'
以下按图操作
图一、选择安装语言
图二、选择安装媒体 NFS directory
图三、选择手动配置IP
图四、设置IP
图五、
图六、填写NFS服务端信息
NFS server name: (服务端IP)
CentOS directory: /mnt/images/install.img
NFS mount options (optional): ro
图七、
图八、
图九、
图十、
图十一、
图十二、
图十三、
图十四、
virsh常用操作
查看帮助信息
[root@localhost ~]# virsh --help
查看虚拟机列表,所有的
[root@localhost ~]# virsh list --all
查看虚拟机列表,正在运行的
[root@localhost ~]# virsh list
远程(pts/0)进入虚拟机
[root@localhost ~]# ssh 192.168.1.2
远程退出虚拟机
ctrl + d
或
[root@localhost ~]# logout
本地(tty/0)进入虚拟机
[root@localhost ~]# virsh console vmCentOS6.5_1
本地退出虚拟机
ctrl + ]
虚拟机电源管理,首先虚拟机系统要安装acpid,以下命令要在虚拟机系统内执行
[root@localhost ~]# yum install -y acpid
[root@localhost ~]# /etc/init.d/acpid start
关闭虚拟机
[root@localhost ~]# virsh shutdown vmCentOS6.5_1
从虚拟机列表删除虚拟机,用该方法删除虚拟机后,如果要重新添加该虚拟机到列表,可以用virsh start方法(另一种关闭虚拟机的方法)
[root@localhost ~]# virsh destroy vmCentOS6.5_1
启动虚拟机
[root@localhost ~]# virsh start vmCentOS6.5_1
启动虚拟机并进入控制台
[root@localhost ~]# virsh start vmCentOS6.5_1 --console
挂起虚拟机
[root@localhost ~]# virsh suspend vmCentOS6.5_1
从挂起状态中恢复虚拟机
[root@localhost ~]# virsh resume vmCentOS6.5_1
设置虚拟机随系统自动启动
[root@localhost ~]# virsh autostart vmCentOS6.5_1
取消虚拟机随系统自动启动
[root@localhost ~]# virsh autostart --disable vmCentOS6.5_1
彻底删除虚拟机
[root@localhost ~]# virsh destroy vmCentOS6.5_1
[root@localhost ~]# virsh undefine vmCentOS6.5_1
实际是删除/etc/libvirt/qemu/vmCentOS6.5_1.xml
查看虚拟机对应的虚拟磁盘文件
[root@localhost ~]# virsh domblklist vmCentOS6.5_1
[root@localhost ~]# rm -f /data/vmCentOS1.qcow2
如果/data/vmCentOS1.qcow2不被删除,将来还可以恢复该虚拟机
克隆虚拟机,前提是源虚拟机已经关闭
[root@localhost ~]# virt-clone --original vmCentOS6.5_1 --name vmCentOS6.5_3 \
--file /data/vmCentOS6.5_3.qcow2
编辑虚拟机文件,实际编辑的是/etc/libvirt/qemu/vmCentOS6.5_1.xml
[root@localhost ~]# virsh edit /data/vmCentOS6.5_1.qcow2
转换虚拟磁盘格式,例如原格式为raw要转换为qcow2,注意是大写字母O,不是数字0
[root@localhost ~]# qemu-img convert -f raw -O qcow2 \
/data/vmCentOS6.5_1.img /data/vmCentOS6.5_1.qcow2
查看虚拟磁盘文件格式
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2 | grep "file format"
虚拟机快照
查看快照信息,Snapshot list 以下为快照信息
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2
或
[root@localhost ~]# virsh snapshot-list vmCentOS6.5_1
创建快照
[root@localhost ~]# virsh snapshot-create vmCentOS6.5_1
恢复快照,最后一串数字为快照ID,查看快照信息的时候可以查看到
[root@localhost ~]# virsh snapshot-revert vmCentOS6.5_1 1441043346
查看当前使用的是哪一个快照,一般是在第二行
[root@localhost ~]# virsh snapshot-current vmCentOS6.5_1
删除快照
[root@localhost ~]# virsh snapshot-delete vmCentOS6.5_1 1441043346
快照文件保存目录,vmCentOS6.5_1对应每一台虚拟机
[root@localhost ~]# ls /var/lib/libvirt/qemu/snapshot/vmCentOS6.5_1/
虚拟磁盘扩容
查看虚拟机磁盘大小
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2 | grep "virtual size"
给虚拟磁盘+5G
[root@localhost ~]# qemu-img resize /data/vmCentOS6.5_1.qcow2 +5G
重启虚拟机,让扩容后的磁盘生效(必须用以下方法重启)
[root@localhost ~]# virsh destroy vmCentOS6.5_1 ; virsh start vmCentOS6.5_1
把新增的5G虚拟磁盘分区为/dev/vda4,进入虚拟机,重新启动
[root@localhost ~]# virsh console vmCentOS6.5_1
以下操作在虚拟机内执行
[root@localhost ~]# reboot
重启后,执行
[root@localhost ~]# pvcreate /dev/vda4
查看有哪些物理卷
[root@localhost ~]# vgs
查看有哪些磁盘可以加入现有物理卷
[root@localhost ~]# pvs
查看有哪些逻辑卷
[root@localhost ~]# lvs
把/dev/vda4加入VolGroup
[root@localhost ~]# vgextend VolGroup /dev/vda4
[root@localhost ~]# lvextend -l +100%FREE /dev/VolGroup/lv_root
[root@localhost ~]# resize2fs /dev/VolGroup/lv_root
至此,虚拟机磁盘扩容完毕
虚拟机添加虚拟磁盘
[root@localhost ~]# qemu-img create -f qcow2 /data/vmCentOS6.5_1_1.qcow2 5G
[root@localhost ~]# virsh destroy vmCentOS6.5_1
编辑虚拟机文件,修改如下
一、增加以下一整块内容,修改<source file='/data/vmCentOS6.5_1_1.qcow2'/>为上面添加的虚拟磁盘
二、删除行<address type='pci' doman='0x0000' bus='0x00' slot='0x05' function='0x0/>
三、<target dev='vdb' bus='virtio'/>行,dev='vda'改为dev='vdb'
[root@localhost ~]# virsh edit vmCentOS6.5_1
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/vmCentOS6.5_1_1.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
[root@localhost ~]# virsh start vmCentOS6.5_1
至此,虚拟机添加虚拟磁盘完毕
利用vmCentOS6.5_2恢复vmCentOS6.5_1,假定虚拟磁盘文件存在
[root@localhost ~]# virsh dumpxml vmCentOS6.5_2 > /etc/libvirt/qemu/vmCentOS6.5_1.xml
[root@localhost ~]# vi /etc/libvirt/qemu/vmCentOS6.5_1.xml
对应虚拟机名字
<name>vmCentOS6.5_1</name>
UUID不能和原来的相同
<uuid>c239c60e-e916-bb16-87e1-e686a5e2ade9</uuid>
对应虚拟磁盘格式 type='qcow2' 或 type='raw'
<driver name='qemu' type='qcow2' cache='none'/>
指定虚拟磁盘文件路径
<source file='/data/vmCentOS6.5_1.qcow2'/>
[root@localhost ~]# virsh define vmCentOS6.5_1
或
[root@localhost ~]# virsh define /data/vmCentOS6.5_1.qcow2
至此,虚拟机恢复完毕
调整CPU,内存
[root@localhost ~]# virsh edit vmCentOS6.5_1
内存上限,配置内存必须小于这个值,可以改
<memory unit='KiB'>824288</memory>
内存相关
<currentMemory unit='KiB'>524288</currentMemory>
CPU相关
<vcpu placement='static'>2</vcpu>
[root@localhost ~]# virsh destroy vmCentOS6.5_1
[root@localhost ~]# virsh start vmCentOS6.5_1
查看虚拟机网卡
[root@localhost ~]# virsh domiflist vmCentOS6.5_1
临时添加网卡,虚拟机正在运行
[root@localhost ~]# virsh attach-interface vmCentOS6.5_1 --type bridge --source br0
永久添加网卡,虚拟机关机
[root@localhost ~]# virsh edit vmCentOS6.5_1
<interface type='bridge'>
<mac address='54:52:00:92:56:25'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
[root@localhost ~]# virsh start vmCentOS6.5_1
修改MAC地址对应的网卡名字
[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:92:56:11f", ATTR{type}="1", KERNEL=="eth*", NAME="eth0"
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=52:54:00:92:56:11f
[root@localhost ~]# /etc/init.d/network restart
虚拟机迁移(本地迁移)
[root@localhost ~]# virsh dumpxml vmCentOS6.5_1 > /etc/libvirt/qemu/vmCentOS6.5_8.xml
[root@localhost ~]# cp /data/vmCentOS6.5_1 /data/vmCentOS6.5_8
[root@localhost ~]# vi /etc/libvirt/qemu/vmCentOS6.5_8.xml
以下三项必须修改
<name>vmCentOS6.5_8</name>
<uuid>c239c60e-e916-bb16-87e1-e686a5e4ade2</uuid>
<source file='/data/vmCentOS6.5_8.qcow2'/>
[root@localhost ~]# virsh define /data/vmCentOS6.5_8.qcow2
[root@localhost ~]# virsh start vmCentOS6.5_8
虚拟机暂时到这里。