TA的每日心情 | 慵懒 2024-12-6 00:09 |
---|
签到天数: 377 天 [LV.9]以坛为家II
|
相关链接:kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)
继之前的一篇文章,我们继续讲解今天的课程:kvm虚拟化,使用virt-install创建虚拟机,virsh管理虚拟机,同时也可以使用virt-manager图形化方式创建虚拟机并管理虚拟机
思考:之前我们通过qemu-kvm来创建管理虚拟机,我们是否可以跨物理主机平台使用qemu-kvm来远程创建虚拟机并管理虚拟机呢?
这里qemu-kvm实现不了,所以这是它的短板之处,所以这里我们使用到了virt-install来远程连接创建虚拟机,之后就可以virsh远程连接管理虚拟机了,图形化virt-manager亦之
当然这些工具最终还是要依赖最底层,最原始的工具qemu-kvm来创建虚拟机
环境:
系统:centos6.7 | 同时也是dhcp服务器,给我们创建的虚拟机动态分配地址,并通过web方式和kickstart自动化安装虚拟机
ip地址:192.168.87.60
简单介绍:
kvm相关安装包及其作用
- qemu-kvm 主要的KVM程序包
- python-virtinst 创建虚拟机所需要的命令行工具和程序库
- virt-manager GUI虚拟机管理工具
- virt-top 虚拟机统计命令
- virt-viewer GUI连接程序,连接到已配置好的虚拟机
- libvirt C语言工具包,提供libvirt服务
- libvirt-client 虚拟客户机提供的C语言工具包
- virt-install 基于libvirt服务的虚拟机创建命令
- bridge-utils 创建和管理桥接设备的工具
加载kvm模块以及网络桥接方式,这里就不讲述了,之前都说过,这里我们直接安装相关包来使用virsh、virt-install、virt-manager以及virt-viewer等
centos6安装方式:yum install libvirt libvirt-client python-virtinst virt-manager virt-viewer
centos7安装方式:yum install libvirt libvirt-client virt-install virt-manager virt-viewer
这里提一下:之前我们是通过以下这种方式把物理网卡eth0关联到桥接网卡br0上的
ip addr del 172.31.225.246/255.255.255.0 dev eth0; brctl addif br0 eth0; ip addr add 172.31.225.246/255.255.255.0 dev br0; route add default gw 172.31.225.1
这里我们也可以使用virsh一条命令搞定,命令如下:
virsh iface-bridge eth0 br0 --no-stp;route add default gw 172.31.225.1
下面我们正式使用virt-install创建虚拟机,所使用到的参数和qemu-kvm还是有些差别的,由于我们使用的是pxe方式安装虚拟机的,所以我们需要提前准备配置好pxe相关的环境,教程我之前也发过,Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统 ,pxe引导文件放在本地tftp对应的目录里,web镜像和ks文件,放在我的物理机里面,用nginx搭建的
安装之前,创建保存系统的磁盘映像文件,文件格式为qcow2
qemu-img create -f qcow2 -o size=120G,preallocation=metadata /images/centos/centos6.7.qcow2
virt-install命令依赖libvirtd服务,所以我们需要启动libvirtd服务
service libvirtd start
创建虚拟机并执行自动化安装
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,bus=virtio --network bridge=br0,model=virtio --force
这里可能会报错,提示:/image/centos这个存储池不存在,找不到。原因就是其默认的存储池是/var/lib/libvirt/images,所有的映像文件都保存在这里,所以我们在创建虚拟机时候,自动从/var/lib/libvirt/images这个存储池里面找centos6.7.qcow2这个映像文件,结果找不到。
我们需要添加一个存储池/image/centos,即可
1) 定义一个存储池
virsh pool-define-as vmdisk(存储池名称) --type dir --target /images/centos/
2) 查看创建的存储池信息
virsh pool-list --all (此时存储池处于未激活状态)
3) 建立基于文件夹的存储池
virsh pool-build vmdisk(根据定义的路径创建存储池)
4) 使存储池生效
virsh pool-start vmdisk (激活状态)
5) 这时候,存储池还不是自动运行,使用virsh pool-autostart
virsh pool-autostart vmdisk ( 自动运行,可以正常使用)
6) 验证存储池
[root@node5 centos]# virsh pool-info vmdisk
Name: vmdisk
UUID: cbaa7d57-77c9-c08a-0bc3-42193a08bcc9
State: running
Persistent: yes
Autostart: yes
Capacity: 17.36 GiB
Allocation: 13.05 GiB
Available: 4.31 GiB
之后再次执行以下命令:
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,bus=virtio --network bridge=br0,model=virtio --force
就可以自动执行安装系统了
我们这里也可以通过导入的方式,导入一个装好系统的映像,在后面加入参数--import,centos6.8.qcow2是我复制centos6.7.qcow2的,这里我们就可以直接开启一个虚拟机了
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.8.qcow2,bus=virtio --network bridge=br0,model=virtio --force --import
当然我们也可以通过virt-manager图形化的方式来创建虚拟机和管理虚拟机,直接运行virt-manager命令即可,会弹出图形界面。这里就不说了,有时间我会在单独些一篇文章给大家的(https://bbs.cnblackhat.com/thread-2815-1-1.html)
ok,系统已经安装成功了,我们登录系统,来查看一下ip地址是192.168.87.87,通过物理机上的dhcp获取到的
关于四种网络模型搭建,就不做了,之前都做过。
那么,我们如何远程管理其它物理机上的虚拟机呢?这里我们通过ssh的方式连接的
virsh -c qemu+ssh://172.31.225.246/system
安装用参数--connect,远程创建虚拟机
virsh管理虚拟机相关操作,主要分为这几类:(Domain Management、Domain Monitoring、Host and Hypervisor 、Interface、Network Filter、Networking、Node Device、SecretSnapshot、Storage Pool、Storage Volume、Virsh itself),这里说一些常用的相关操作
根据xml文件创建:
- create:创建并启动
- define:创建但不启动
关闭domain:
删除domain:
连接至console:
列出:
附加或拆除disk:
存储池一系列相关的操作:
- pool-define-as
- pool-list
- pool-build
- pool-start
- pool-autostart
- pool-info
- pool-autostart
- pool-delete
附加或拆除网卡:
- attach-interface
- detach-interface
添加桥设备,并关联网卡至桥设备或取消关联,删除桥设备:
- iface-bridge
- iface-unbridge
保存状态至磁盘文件或从磁盘文件恢复
暂停于内存或继续运行
虚拟化第三方管理工具:https://www.linux-kvm.org/page/Management_Tools
附:virsh如何去操作管理,这里大家看帮助文档,就不说了,实践记忆更深
|
|