KVM虚拟化服务器平台主要有几大部分:
kvm:linux内核模块,需要CPU支持,intel-vt, AMD-V
qemu:虚拟化的仿真工具
libvirtd:虚拟化管理的接口和工具,提供与用户交互的程序virsh,virt-install,virt-manager,virt-view等
先用 lsmod 确认服务器支持虚拟化:
安装:
需要安装的软件包:qemu-kvm(底层仿真支持)、libvirt-daemon(守护进程)、libvirt-client(客户端软件)、libvirt-daemon-driver-qemu(libvirtd连接qemu的驱动)
安装必要的软件包
yum install -y epel-release net-tools vim unzip zip wget ftp
yum install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu
systemctl start libvirtd #起服务
systemctl enable libvirtd
管理虚拟机:
需要一个XML文件,默认在 /etc/libvirt/qemu/ 下
需要一个磁盘镜像文件,默认在 /var/lib/libvirt/images/ 下
虚机管理工具:virsh
virsh 常用命令:
list [–all] # 列出虚拟机
nodeinfo #查看KVM节点信息
net-list [–all] #列出虚拟网络
dominfo 虚拟机名称 #查看虚拟机信息
start | reboot | shutdown 虚拟机名称 #运行|重启|关机
destroy 虚拟机名称 #强制关闭虚拟机
autostart [–disable] 虚拟机名称 #奖指定的虚拟机设置为开机自动运行
console 虚拟机名称 #进入虚拟机的控制台
help #帮助信息
#virsh -c qemu+ssh://root@192.168.1.11/system 远程连接其他KVM主机
virt-manager客户端可以在图形界面下管理虚拟机
qemu-img 常用命令
create 创建一个磁盘
convert 转换磁盘格式
info 查看磁盘信息
snapshot 管理磁盘快照
创建新的镜像盘文件:
qemu-img create -f qcow2 test.img 50G
查询惊喜盘文件信息:
qemu-img info disk.img
使用后端模版文件:
qemu-img create -b moban.img -f qcow2 test.img 50G
创建虚拟机交换机:
创建配置文件 /etc/libvirt/qemu/networks/vbr.xml
#vim /etc/libvirt/qemu/networks/vbr.xml
启动vbr虚拟网络:
#virsh net-define vbr
#virsh net-start vbr
设置vbr虚拟网络开机自启动:
#virsh net-autostart vbr
虚拟机模版(后端文件)制作:
在CentOS官方网站上下载已经安装好的镜像文件
wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
下载下来的文件是.xz格式的,需要解压缩
#xz -d CentOS-7-x86_64-GenericCloud.qcow2.xz
#mv CentOS-7-x86_64-GenericCloud.qcow2 centos7.qcow2 改个名字便于操作
然后对这个系统镜像做相关修改以便作为后端盘文件:
1、安装需要用到的工具 virt-edit和guestfish 命令,可以通过 yum install libguestfs* 进行安装
2、默认这个系统镜像无法用root登录,需要清空root密码:
virt-edit -a ./centos7.qcow2 /etc/shadow -e ‘s/root:[:]*:/root:?’
3、禁用cloud-init服务,这个服务启动太慢,所以禁用掉
guestfish -a ./centos7.qcow2 -i rm ‘/etc/systemd/system/multi-user.target.wants/cloud-config.service’
guestfish -a ./centos7.qcow2 -i rm ‘/etc/systemd/system/multi-user.target.wants/cloud-final.service’
guestfish -a ./centos7.qcow2 -i rm ‘/etc/systemd/system/multi-user.target.wants/cloud-init-local.service’
guestfish -a ./centos7.qcow2 -i rm ‘/etc/systemd/system/multi-user.target.wants/cloud-init.service’
创建虚拟机:
先创建一个XML文件
vim centos7.xml
<domain type='kvm'>
<name>node1</name>
<memory unit='KiB'>1048576</memory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/centos7.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'>
<source bridge='vbr'/>
<model type='virtio'/>
</interface>
<console type='pty'>
<target type='serial' port='0'/>
</console>
</devices>
</domain>
启动虚拟机:
#virsh define centos7.xml
#virsh start centos7
#virsh console centos7
login: root
安装扩展分区软件:
yum install -y cloud-utils-growpart
第一次开机自动扩容:
#/usr/bin/growpart /dev/vda 1
#/usr/sbin/xfs_growfs /
关闭虚拟机后执行信息清理工作
#virsh shutdown centos7
#virt-sysprep -d centos7
后端盘文件到这里就制作好了,建议在virsh中去掉该虚拟机,防止文件被修改
利用后端盘文件创建新的虚拟机:
vim node1.xml :可以复制后端盘的xml文件进行修改
<domain type='kvm'>
<name>local</name> //修改名字
<memory unit='KiB'>2048000</memory> //修改内存
<currentMemory unit='KiB'>2048000</currentMemory>
......
<source file='/var/lib/libvirt/images/node1.img'/> //img文件位置
注意:除这些外还要把mac地址删掉,带address字样的全部删除
#cd /var/lib/libvirt/images/
#qemu-img create –b centos7.qcow2 –f qcow2 node1.img 50G
#virsh define /etc/libvirt/qemu/node1.xml
#virsh start node1
#virsh console node1
guestmount实现离线访问:
基本用法:guestmount -a 虚拟机磁盘路径 -i /挂载点
-a:指定虚拟磁盘
-i:挂载点
#mkdir /mnt/kdisk
#guestmount -a node1.qcow2 -i /mnt/kdisk
#cd /mnt/kdisk
kdisk]# ls
bin home media opt sbin tmp
boot lib misc proc selinux usr