KVM的安装
首先我们要在调整好的虚拟机中检查一下CPU参数
free -a //启动虚拟机查看内存是否更改
grep -Ei 'vmx|svm' /proc/cpuinfo
//检查CPU是否开启虚拟化支持
挂载新磁盘
lsblk //检查虚拟机是否新增一块50 GB的磁盘
mkfs.ext4 /dev/sdb //格式化这块磁盘
mkdir /kvm_data //创建挂载目录
mount /dev/sdb /kvm_data/ //挂载
这种方式挂载,重启虚拟机后,需要再次重新挂载,我们为了方便开机后可以自动挂载,编写/etc/fstab文件,添加文件最末一行
vi /etc/fstab //编写/etc/fstab文件
cat /etc/fstab //查看
关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
关闭SELinux,编辑/etc/selinux/config,将enforcing修改为disabled
vi /etc/selinux/config
cat /etc/selinux/config
getenforce //使用getenforce查看是否成功
安装KVM
yum install -y virt-* libvirt bridge-utils qemu-img
启动KVM
配置网卡,增加桥接网卡ifcfg-br0
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0
修改桥接网卡ifcfg-br0的内容
vi ifcfg-br0
cat ifcfg-br0
修改NAT网卡ifcfg-ens33
vi ifcfg-ens33
cat ifcfg-ens33
修改完成网卡内容后,重新启动网卡服务并查看网卡信息
service network restart
启动libvirtd服务
检查KVM模块是否加载
lsmod|grep kvm
启动libvirtd并检查是否成功启动
systemctl start libvirtd
ps -ef |grep libvirt
使用brctl命令可以看到两个网卡
brctl show
命令行安装CentOS 7
在上传后的前提下,查看/tmp目录下是否存在CentOS 7镜像文件
ll /tmp/
使用virt-install进行CentOS 7的安装
virt-install --name=test --memory=512,maxmemory=1024
--vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7
--location=/tmp/CentOS-7-x86_64-DVD-2009.iso
--disk path=/kvm_data/test.img,size=10
--bridge=br0
--graphics=none
--console=pty,target_type=serial
--extra-args="console=tty0 console=ttyS0"
接下来我们开始配置“Timezone settings”,输入“2”,按Enter键,设置时间,地区,城市,等。
- “Timezone settings”时区设置选择 5) Asia亚洲,再选择城市 62) Shanghai上海
- 配置“Software selection”,选择“4”,在选择“c”,因为默认就是minimalinstall,按Enter键
- 配置“Installation Destination”,选择“5”,其余的依次选择“c”,按Enter键
- 配置“Root password”,选择8,按Enter键
- 依次输入两次密码,密码相同,我设置的为123456
- 配置完成,选择“b”,按Enter键后,开始安装
虚拟机管理
通过宿主机virsh命令进行管理刚才安装的CentOS 7虚拟机
查看虚拟机列表
virsh list //只能看到正在运行的虚拟机
virsh list --all //包括未运行的虚拟机
进入指定的虚拟
virsh console test
若发生以下报错信息
error: operation failed: Active console session exists for this domain
解决方式
ps -ef |grep console
kill -9 11167
vrish常用命令
virsh shutdown test //关闭虚拟机
virsh start test //开启虚拟机
virsh destroy test //类似stop,这个是强制停止
virsh undefine test //彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到
virsh autostart test //宿主机开机该虚拟机也开机
virsh autostart --disable test //解除开机启动
virsh suspend test //挂起
virsh resume test //恢复
克隆虚拟机
克隆虚拟机之前,要先关闭虚拟机,不然会提示这种错误
ERROR Domain with devices to clone must be paused or shutoff.
关闭虚拟机后,再次进行克隆
virsh shutdown test
virt-clone --original test --name test02 --file /kvm_data/test02.img
命令解释
- –original:指定克隆源虚拟机
- –name:指定克隆后的虚拟机名字
- –file:指定目标虚拟机的虚拟磁盘文件
查看虚拟机配置文件/etc/libvirt/qemu/,看是否增加test02.xml文件
ls /etc/libvirt/qemu/
首先查看虚拟机列表,然后启动克隆的虚拟机test02
virsh list --all
virsh start test02
快照管理
在KVM中RAW格式的虚拟磁盘不支持做快照,qcow2支持
创建快照
virsh snapshot-create test
查看test.img信息,同时会查看到快照列表
qemu-img info /kvm_data/test.img
列出所有快照
virsh snapshot-list test
查看当前快照详细信息
virsh snapshot-current test
查看所有快照配置文件
ls /var/lib/libvirt/qemu/snapshot/test/
恢复指定快照
virsh snapshot-revert test 1
删除指定快照
virsh snapshot-delete test 1
磁盘格式
查看虚拟磁盘格式
qemu-img info /kvm_data/test.img
创建2 GB的RAW格式磁盘
qemu-img create -f raw /kvm_data/test_1.img 2G
RAW格式的磁盘转换为qcow2格式
qemu-img convert -O qcow2 /kvm_data/test_1.img
/kvm_data/test_1.qcow2
查看test1.img大小
ls -lh /kvm_data/test_1.img
ls -lh /kvm_data/test_1.qcow2
将test02转成raw格式
qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.img
更改磁盘格式和文件路径,然后启动test02虚拟机
virsh edit test02
//修改后内容
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_2.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
查看磁盘所属用户和组
ls -l /kvm_data/
启动虚拟机test02,然后再次查看磁盘所属用户和组
virsh start test02
ls -l /kvm_data/
磁盘扩容
扩容RAW格式
qemu-img resize /kvm_data/test02_2.img +2G
查看test02_2.raw信息
qemu-img info /kvm_data/test02_2.img
进入虚拟机test02,使用fdisk -l查看磁盘
virsh console test02
fdisk -l
退出终端,关闭test02虚拟机,重新启动,然后再次进入虚拟机test02,使用fdisk -l查看磁盘
virsh destroy test02
virsh start test02
virsh console test02
fdisk -l
//可以看到已经变成12 GB了
分区
fdisk /dev/vda
//n新建分区
//p//查看分区列表
//w保存退出并退出终端
除了对已有磁盘扩容外,还可以额外增加磁盘
qemu-img create -f raw /kvm_data/test02_3.raw 5G
使用virsh edit编辑test02虚拟机,将新磁盘增加到test02虚拟机
virsh edit test02
//添加以下内容
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_3.raw'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09'
function='0x0'/>
</disk>
关闭test02虚拟机,重新启动,然后进入该虚拟机,使用fdisk -l查看磁盘
virsh destroy test02
virsh start test02
virsh console test02
fdisk -l
//可以看到多了一块5 GB的磁盘,退出终端
扩容qcow2格式的磁盘
qemu-img resize /kvm_data/test.img +2G
//若提示qemu-img: Can't resize an image which has snapshots,需要删除快照
查看test.img信息
qemu-img info /kvm_data/test.img
关闭test虚拟机,重新启动,然后再次进入虚拟机test02,使用fdisk -l查看磁盘
virsh destroy test
virsh start test
virsh console test
fdisk -l
分区新增加的2 GB磁盘
fdisk /dev/vda
新增一块qcow2格式的磁盘
qemu-img create -f qcow2 /kvm_data/test_2.img 5G
使用virsh edit编辑test虚拟机,将新磁盘增加到test虚拟机
virsh edit test
//添加以下内容
关闭test虚拟机,重新启动,然后进入该虚拟机,使用fdisk -l查看磁盘
virsh destroy test
virsh start test
virsh console test
fdisk -l
调整CPU内存、网卡
查看虚拟机配置信息
virsh dominfo test
编辑虚拟机内存
virsh edit test
//编译后的内容
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>624288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>
关闭虚拟机,重启动虚拟机
virsh destroy test
virsh start test
查看虚拟机配置信息,看是否修改成功
virsh dominfo test
//除了这种修改方式之外,还有一种动态修改,
virsh setmem test 800m//动态修改内存
virsh setvcpus test 2//动态修改cpu,只可以增加不可以减少
查看配置信息,看是否修改成功
virsh dominfo test
virsh dumpxml test > /etc/libvirt/qemu/test.xml
//需要把配置写入到配置文件里
查看网卡列表
virsh domiflist test
增加一块新的网卡,并设置为NAT网络模式(virbr0类似VMware的VMnet8),这里如果写–source br0,则网络模式为桥接
virsh attach-interface test --type bridge --source virbr0
把配置文件做备份
virsh dumpxml test > /etc/libvirt/qemu/test.xml
进入test虚拟机,查看网卡信息
virsh console test
ifconfig
迁移虚拟机
首先关闭虚拟机
virsh shutdown test
virsh domblklist test
//查看虚拟机磁盘所在目录
virsh dumpxml test > /etc/libvirt/qemu/test03.xml
//如果是远程机器,需要把该配置文件拷贝到远程机器上
rsync -av /kvm_data/test.img /kvm_data/test03.img
//如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
因为是迁移到本机,配置文件用的是test子机的配置,不改会有冲突,所以需要修改该文件。如果是远程机器不用修改
vi /etc/libvirt/qemu/test03.xml
<name>test03</name>
//修改domname:
//修改uuid(随便改一下数字,位数不要变)
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/kvm_data/test03.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
//修改磁盘路径
定义新虚拟机
virsh define /etc/libvirt/qemu/test03.xml
virsh list --all
//查看虚拟机列表,会发现新迁移的虚拟机test03