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

image

提前传入一个kali的iso文件,点击local install

image

使用ISO image选项后,点击Browse查找ISO文件

image

在下面的Browse Local中找到自己iso文件保存的位置

image

之后就是下一步下一步,分配空间,CPU内核、命名等,/var/lib/libvirt/images为虚拟机的存储介质文件

image

创建虚拟机后和VMWare操作一样,如果要对虚拟机进行配置,点击左上角第二个灯泡状的按钮,同时把启动选项改成CDROM,并在IDE CDROM1中挂载iso文件

image

配置文件位置

/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可视化界面添加网卡即可

image

posted @ 2022-09-08 15:29  icui4cu  阅读(80)  评论(0)    收藏  举报