kvm部署(以Centos系统为例)

虚拟化技术

虚拟机需要开启虚拟化的支持

setenforce 0
systemctl stop firewalld
cat /proc/cpuinfo | grep -E 'vmx|svm'   #如果有内容出现 说明cpu支持虚拟化
yum -y remove `rpm -qa | egrep 'qemu|virt|kvm'`  #清理kvm环境
rm -rf /var/lib/libvirt /etc/libvirt

安装kvm

uname -r
yum -y install *qemu* *virt* librbdl-devel --skip-broken
yum -y upgrade

启动服务

systemctl start libvirtd.service
systemctl enable libvirtd.service  #设置为开机启动

查看现象 看是否已经启动好了

lsmod | grep kvm

安装飞机驾驶舱(web的管理界面)

yum -y install cockpit
systemctl start cockpit

浏览器要访问目标9090端口

输入用户名就是自己系统的用户名和密码

192.168.109.134:9090

1.图形界面安装虚拟机

接下来通过vnc连接这个centos的linux系统

进入以后在其终端内输入命令 进入图形界面控制器  一个非常类似vmware的软件

virt-mananger

进行相关设置  本质就是在虚拟机中玩虚拟机 虚拟机中创建kali一样

linux kvm虚拟化集群 kvm虚拟化部署_linux

配置文件位置

/etc/libvirt/qemu/  //虚拟机的配置文件 例如kali1.xml
/var/lib/libvirt/images/   //虚拟机的存储介质文件

2.命令行安装虚拟机(需要手动连接光盘 不方便 还是建议图形化界面)

已经存在一个安装好的虚拟机  通过命令方式快速复制一个新的虚拟机的方式

cp vm1.xml vm2.xml
cp vm1.qcow2 vm2.qcow2
vi /etc/libvirt/qemu/vm2.xml   修改name uuid  sourcefile  mac-address
mount /home/xxxx.iso
yum -y install virt-install
virsh define /etc/libvirt/qemu/vm2.xml  #创建虚拟机
virsh list --all   #查看和启动虚拟机  看到新的虚拟机的name
virsh start vm2    #vm2是上一条命令查看到的name信息
gurbby --update-kernel=ALL --args="console=ttyS0"
virsh console vm2  //此时直接可以进入控制台

创建新的空磁盘(吃多少拿多少 不是一下子就10G)

cd /var/lib/libvirt/images
qemu-img create -f qcow2 vm-1.qcow2 10G

可以把磁盘直接替换到xml文件里

之后重新定义虚拟机

virsh define vm1

热添加内存

virsh qemu-monitor-command kali-1 --hmp --cmd balloon 1024   //把kali-1添加内存到1024MB

查看虚拟机当前的内存

virsh qemu-monitor-command kali-1 --hmp --cmd info balloon

存储管理(vmdisk是自己定义的名字)

默认存储池(查看存储池)

virsh pool-list --all

默认存储的地方:

/var/lib/libvirt/images/

自定义存储池

mkdir -p /data/vmfs

定义池

virsh pool-define-as vmdisk --type dir --target /data/vmfs

构建池

virsh pool-build vmdisk

启动存储池(自动启动)

virsh pool-autostart vmdisk

删除存储池

virsh vol-delete --pool vmdisk vm1.qcow2

取消激活存储池

virsh pool-destroy vmdisk

取消定义存储池

virsh pool-undefine vmdisk

磁盘格式

raw类型磁盘  原始格式 性能最好  但是是直接占用最开始设置的磁盘空间 系统占用的就少了  且不支持快照

qcow  性能不如raw  很快就出来了qcow2

qcow2  性能不如raw  但是支持快照

快照(生成一个快照 假设虚拟机的名字是kali-1)

virsh snapshot-create-as kali-1 kali-1kuaizhao.snap

查看快照

virsh snapshot-list kali-1

还原快照

virsh snapshot-revert kali-1 kali-1kuaizhao.snap

删除快照

virsh snapshot-delete --snapshotname kali-1kuaizhao.snap kali-1

虚拟磁盘挂载到宿主机器(本机)

查看磁盘镜像信息   可以看到磁盘的文件系统

virt-df -h -d kali-1

查看文件系统

virt-filesystems -d kali-1

挂载磁盘镜像分区 挂载完成后可以看到磁盘的文件

guestmount -d kali-1 -m /dev/centos/root --rw /root/kalicipan1
ls /root/kalicipan1

取消挂载

guestunmount /root/kalicipan1

虚拟机的克隆操作  

克隆kali-1的虚拟机

virt-clone -o kali-1 --auto-clone

指定名字的克隆

virt-clone -o kali-1 -n kali-2 --auto-clone

指定位置和名字的克隆

virt-clone -o kali-1 -n kali-2 --auto-clone -f /var/lib/libvirt/images/kali-2.qcow2

网络管理

查看虚拟机网卡和mac地址

virsh domiflist kali-1

添加网卡

virsh attach-interface --domain kali-1 --type bridge --source br0 --config

删除网卡

virsh detach-interface kali-1 bridge [mac地址] --config

网卡的拷贝操作 

cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens34
vi ifcfg-ens33

linux kvm虚拟化集群 kvm虚拟化部署_linux_02

DEVICE=ens34
TYPE=Bridge  //或者Ethernet
ONBOOT=yes
IPV6INT=no
USERCTL=no
BOOTPROTO=static   //或者使用dhcp
IPADDR=192.168.1.154
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
systemctl restart network libvirtd
# /etc/init.d/network restart

修改虚拟机的配置(/etc/libvirt/qemu/kali-1.xml)

virsh edit kali-1

linux kvm虚拟化集群 kvm虚拟化部署_xml_03

可以尝试自己新添加一块网卡内容

<interface type='bridge'>
    <mac address='xx:xx:xx:xx:xx:xx'>
    <source bridge='br0'/>
    <model type='virtio'/>
    <address type='pci' domain=....../>
</interface>

之后重启虚拟机即可

也可以在图形化界面进行操作

linux kvm虚拟化集群 kvm虚拟化部署_linux kvm虚拟化集群_04

添加完成以后再查看配置文件

linux kvm虚拟化集群 kvm虚拟化部署_linux_05