20.kvm
kvm部署
kvm属于虚拟化技术,需要开启虚拟化技术
安装kvm
关闭防火墙和SELinux
setenforce 0
systemctl stop firewalld
查看CPU是否支持虚拟化
cat /proc/cpuinfo | grep -E 'vmx|svm'
清理kvm环境
yum -y remove `rpm -qa | egrep 'qemu|virt|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端口,和prometheus冲突,需要自行解决端口问题
- 进入web管理界面,输入的用户名和密码就是该机器的登录账密
创建虚拟机(图形化)
进入可视化桌面(VNC),打开图形界面控制器
virt-mananger
点击左上角Create a new virtual machine
提前传入一个kali的iso文件,点击local install
使用ISO image选项后,点击Browse查找ISO文件
在下面的Browse Local中找到自己iso文件保存的位置
之后就是下一步下一步,分配空间,CPU内核、命名等,/var/lib/libvirt/images
为虚拟机的存储介质文件
创建虚拟机后和VMWare操作一样,如果要对虚拟机进行配置,点击左上角第二个灯泡状的按钮,同时把启动选项改成CDROM,并在IDE CDROM1中挂载iso文件
配置文件位置
/etc/libvirt/qemu/ # 虚拟机的配置文件
/var/lib/libvirt/images/ # 虚拟机的存储介质文件
创建虚拟机(命令行)
挂载iso文件及命令行安装工具
mount /home/xxx.iso # 挂载iso文件到home目录下
yum -y install virt-install
根据已有的虚拟机配置注册新的虚拟机
virsh define /etc/libvirt/qemu/kali1.xml
查看和启动虚拟机
virsh list --all
virsh start kali1 # 此时virtul manager显示running
# 配置好后直接进入命令行
grubby --update-kernel=ALL --args='console-ttyS0'
virsh console vm2
需要有qcow2的存储介质,进去后还要连接一下光盘,启动改为CDROM
命令行复制虚拟机生成副本虚拟机
cp vm1.xml vm2.xml
cp vm1.qcow2 vm2.qcow2
vi /etc/libvirt/qemu/vm2.xml
修改name,uuid,source file,mac address
这里只是说明不同虚拟机之间区别只是通过xml文件体现,如果想快速生成虚拟机副本可以参考下面的虚拟机克隆
kvm高级操作
磁盘管理
磁盘重置
# 创建新的磁盘
cd /var/lib/libvirt/images
qemu-img create -f qcow2 vm-1.qcow2 10G
把创建出来的新磁盘替换到xml文件里
virsh define kali1 # 重新定义虚拟机
热添加内存提高到1024MB
virsh qemu-monitor-command kali1 --hmp --cmd balloon 1024
# 查看虚拟机当前内存情况
virsh qemu-monitor-command kali1 --hmp --cmd info balloon
有些Linux无法成功,CentOS7可以成功
存储管理
查看默认存储池
virsh pool-list --all
默认存储位置:
/var/lib/libvirt/images/
自定义存储池
mkdir -p /data/vmfs
定义池
virsh pool-define-as vmdisk --type dir --target /data/vmfs # 存储池名为vmdisk
构建池
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,但是支持快照
生成kali1的快照
virsh snapshot-create-as kali1 kali1kuaizhao.snap
查看kali1的快照
virsh snapshot-list kali1
还原kali1快照
virsh snapshot-revert kali1 kali1kuaizhao.snap
删除kali1快照
virsh snapshot-delete --snapshotname kali1kuaizhao.snap kali1
虚拟磁盘挂载到宿主机
查看磁盘镜像信息
virt-df -h -d kali1
可以看到磁盘文件系统,类似kali1:/dev/sda1,kali1:/dev/centos/root
查看文件系统
virt-filesystems -d kali1
挂载磁盘镜像分区
guestmount -d kali1 -m /dev/centos/root --rw /root/kali1
挂载完成后可以通过ls /root/kali1
可以在宿主机看到虚拟机的文件
取消挂载
guestunmount /root/kali1
虚拟机克隆
克隆kali1虚拟机
virt-clone -o kali1 --auto-clone
指定名字的克隆
virt-clone -o kali1 -n kali2 --auto-clone
指定位置和名字的克隆
virt-clone -o kali1 -n kali2 --auto-clone -f /var/lib/libvirt/images/kali2.qcow2
kvm网络
查看虚拟机网卡和mac地址
virsh domiflist kali1
添加新的网卡(网桥br0)
virsh attach-interface --domain kali1 --type bridge --source br0 --config
删除网卡
virsh detach-interface kali1 bridge [mac地址] --config
配置网络信息(命令行)
# 以ens33作为模板添加一块新网卡ens34
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens34
vi ifcfg-ens34
TYPE=Bridge # 或Ethernet
DEVICE=ens34
ONBOOT=yes
IPv6INT=no
USERCTL=no
BOOTPROTO=static # 或dhcp
IPADDR=192.168.1.154 # 自己配一个静态IP
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
# 重启网络服务
systemctl restart network libvirtd
#修改虚拟机的xml配置文件中的interface内容
<interface type='direct'>
<mac address="xx.xx.xx.xx"> # 自己编一个mac地址
<source dev="ens33" mode="bridge"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x08" function="0x00"/>
</interface>
# 之后重启虚拟机
如果不知道如何配置,直接在Virtual Machine Manager可视化界面添加网卡即可
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16669593.html