当前位置: 首页 > news >正文

KVM笔记

第一章 概述
1.1 云计算

  1. 是一种基于互联网的计算方式, 通过这种方式来共享软硬件资源, 可以按照需求分配各种软硬件资源
    1.2 云计算服务模型
    1.2.1 SaaS模型
  2. 概念: 云厂商直接提供给用户软件服务, 用户不必维护软件本身, 只需要使用软件提供的服务
    1.2.2 PaaS模型
  3. 概念: 云厂商提供给用户软件运行环境, 用户负责维护自己的软件来提供服务, 但不需要维护网络, 硬件以及操作系统
    1.2.3 IaaS模型
  4. 概念: 云厂商仅提供给用户一个虚拟的主机环境, 用户负责在环境上维护自己的操作系统, 网络, 服务等资源
    第二章 虚拟化技术
    2.1 虚拟化
  5. 概念: 将计算机的各种实体资源进行重组与分割, 来提高对硬件资源的利用率
  6. 作用: 一个物理机可以安装多个虚拟机, 每个虚拟机的资源都是独立的, 以此来提高资源利用率
    2.2 虚拟化技术
    2.2.1 半虚拟化
  7. 虚拟机监视器不完全模拟硬件, 虚拟机中的操作系统知道自己是虚拟的
    2.2.2 全虚拟化
  8. 虚拟机监视器完全模拟整套硬件, 虚拟机中的操作系统不知道自己是虚拟的
    注意:
    全虚拟化: 不用更改系统内核, 兼容行好, 性能差
    半虚拟化: 需要更改系统内核, 性能好, 兼容性差
    2.3 虚拟技术的组成
  9. 硬件: 将硬件资源虚拟成多分, 并隔离使用, 是虚拟化技术的载体
  10. VMM(虚拟机监视器): 负责管理, 调度以及虚拟机的隔离
  11. 虚拟机: 拥有虚拟的硬件资源, 每套硬件资源之间是隔离的, 可以独立安装操作系统
  12. 虚拟网络: 是虚拟机与虚拟机, 虚拟机与外网通信的关键, 有桥接, net, vhost模式
  13. 虚拟机管理平台: 统一管理集群, 宿主机与虚拟机
    第三章 KVM
    3.1 KVM概念
  14. KVM是采用全虚拟化技术实现的虚拟化, 基于linux内核原生的虚拟化技术
    3.2 KVM的三大组件
  15. KVM内核模块: 对CPU与内存进行虚拟化, 嵌入linux内核, 将普通Linux变成虚拟化管理程序
  16. QEMU用户态: 对IO设备进行虚拟化, 也可配合virtio驱动实现半虚拟化
  17. libvirt管理工具: 统一封装KVM, 提供virsh命令, 与虚拟机管理的图形化界面
    注意:
  18. 在KVM中, 一个虚拟机是一个Linux进程, 进程的名称是qemu-kvm
  19. KVM是实现虚拟机的技术, 虚拟机是KVM+QEMU的实例
    3.3 KVM的网络模式
    3.3.1 NET模式
  20. 原理: 虚拟机共享宿主机IP, 通过宿主机的NET转发, 实现上网
  21. 特点: 虚拟机在私有网段, 可访问外网, 但不能被外网直接访问
    3.3.2 桥接模式
  22. 原理: 虚拟机通过网桥直接连接到宿主机的物理网卡, 与宿主机在同一个局域网
  23. 特点: 虚拟机有独立的公网ip与局域网ip
    3.3.3 仅主机模式
    3.4 基于桥接模式创建KVM虚拟机
    3.4.1 安装QEMU虚拟化工具
#使用git下载虚拟化工具 git clone https://gitee.com/mirschao/kvmvirtual.git #安装虚拟化工具 bash ./kvmvirtual/installer/deploy.sh``` 3.4.2 配置桥接模式网络 ```Bash #配置桥接网卡, 将物理网卡桥接到桥接网卡 vim /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE="br0" #网桥设备名称 NAME="br0" #网络连接名称 BOOTPROTO="static" #静态IP ONBOOT="yes" #开机自启 TYPE="Bridge" #桥接网卡 IPADDR="192.168.255.130" GATEWAY="192.168.255.2" NETMASK="255.255.255.0" DNS1="8.8.8.8" DEFROUTE="yes" #将桥接网卡设置为默认路由 #配置物理网卡 vim /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE="ens33" NAME="ens33" BOOTPROTO="none" #对外ip由网桥承担 NM_CONTROLLED="no" #禁用networkmanager管理 ONBOOT="yes" TYPE="Ethernet" #以太网 BRIDGE="br0" #将ens33桥接到br0 DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" #重启网络配置 systemctl restart network #查看网桥状态 brctl show #查看br0网卡配置 ip addr show br0``` 3.4.3 基于KVM创建虚拟机 ```YAML #使用qeum的创建工具, 创建一个20G的磁盘, 磁盘格式为raw qemu-img create -f raw /kvm/vdisks/tmplate.raw 20G #安装centos7虚拟机, 名称为template virt-install --name=template\ #虚拟机cpu2个, 内存2G, 磁盘是template.raw --vcpus=2 --memory=2048 --disk=/kvm/vdisks/template.raw\ #安装的镜像为最小化centos7 --cdrom=./kvm/isos/CentOS-7-x86_64-Minimal-2009.ios --os-variant=rhel7\ #虚拟机网络为桥接模式 --network bridge=br0\ #使用VNC图形界面工具, 并且允许任意IP的5900端口进行访问 --graphics vnc,listen=0.0.0.0,port=5900 #查看虚拟机列表 virsh list #查看虚拟机详细信息 virsh dump template | grep -A5 bridge #测试VNC端口是否可以访问 telnet 192.168.255.130 5900 #宿主机打开VNC工具, 访问虚拟机 宿主机ip:5900``` 第四章 KVM生命周期管理 4.1 KVM上虚拟机进程管理 1. 关闭虚拟机 ```YAML virsh shutdown 虚拟机名称``` 2. 虚拟机断开电源 ```YAML virsh destroy 虚拟机名称``` 3. 开启虚拟机 ```YAML virsh start 虚拟机名称``` 4. 重启虚拟机 ```YAML virsh reboot 虚拟机名称``` 5. 连接虚拟机 ```YAML virsh console 虚拟机名称``` 4.2 虚拟机硬件管理 1. 调整虚拟机内存 ```YAML virsh edit template #虚拟机最大可使用内存为16G <memory unit="KiB">16000000</memory> #当前虚拟机分配内存大小为4G <currentMemory unit="KiB">4000000</currentMemory> #重启虚拟机 virsh reboot template #验证 virsh console template free -h``` 2. 调整虚拟机CPU ```YAML virsh edit template <vcpu placement='static'>3</vcpu> #重启虚拟机 virsh reboot template #查看cpu virsh console template lscpu | grep CPU(s)``` 3. 调整虚拟机磁盘 ```YAML #新增磁盘 #为templat虚拟机创建大小为20G, 格式为raw的磁盘 qemu-img create -f raw /kvm/vidsks/template_data_3.raw 20G #为虚拟机template, 临时挂载磁盘vdb, perisitent永久挂载 virsh attach-disk template /kvm/vidsks/template_data_3.raw vdb --persistent #配置虚拟机xml文件 virsh edit template #在devices标签中, 新增吸盘配置 <disk type='file' device='disk'> #配置磁盘创建方式与类型 <driver name='qemu' type='raw'/> #磁盘文件对应路径 <source file='/kvm/vdisks/template_data_3.raw'/> #磁盘名称vdb <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> #重启虚拟机 virsh reboot template #进入虚拟机 virsh console template #查看磁盘 lsblk #对磁盘进行格式化 mkfs -ext4 /dev/vdb #临时挂载 mount /dev/vdb /mnt/vdb #卸载磁盘 #取消挂载 umount /dev/vdb /mnt/vdb #卸载 virsh detach-disk template vdb``` 4.3 虚拟机快照与克隆管理 ```YAML #为虚拟机拍摄快照 virsh snapshot-create-as template template-snapshot-$(date+%Y%m%d%H%M%S) #恢复快照 virsh snapshot-revert template template-snapshot-年月日时分秒 #删除快照 virsh snapshot-delete template template-snapshot-年月日时分秒 #克隆虚拟机 virsh-clone -o template -n new-template -f /kvm/vdisks/new-template.raw``` 第五章 web端管理KVM 5.1 安装webvirtcloud 1. 环境准备 ```YAML sed -ri 's/SELINUX=enforcing/SELINUX=disabled/w' /etc/sysconfig/selinux getenforce``` 2. 安装依赖 ```YAML yum -y install epel-relase python3-virtualenv python3-devel libvirt-devel glibc gcc nginx supervisor python3-lxml git python3-libguestfs iproute-tc cyrus-sasl-md5 python3-libguestfs``` 3. 下载webvirtcloud源码安装包 ```YAML cd /srv/ git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple pip install -U setuptools virtualenv cp webvirtcloud/settings.py.template webvirtcloud/settings.py # 复制配置模板 virtualenv -p $(which python3) /srv/envs/webvirtcloud # 创建Python3虚拟环境 source /srv/envs/webvirtcloud/bin/activate # 激活虚拟环境``` 4. 生成密钥并配置Django ```YAML (webvirtcloud) $ python /srv/webvirtcloud/conf/runit/secret_generator.py # 生成Django SECRET_KEY (webvirtcloud) $ vim /srv/webvirtcloud/webvirtcloud/settings.py # 写入秘钥 SECRET_KEY = "生成的秘钥字符串"``` 5. 安装python依赖并初始化数据库 ```YAML cd /srv/webvirtcloud/ pip install -r conf/requirements.txt # 安装WebVirtCloud的Python依赖 python manage.py makemigrations # 生成数据库迁移文件(Django ORM) python manage.py migrate # 执行数据库迁移(默认使用SQLite,无需额外配置)``` 6. 配置supervisor ```Markdown vim /etc/supervisord.d/webvirtcloud.ini # 配置supervisor管理进程 # [program:webvirtcloud]:管理Django服务(gunicorn运行) # [program:novncd]:管理VNC代理服务(实现Web端VNC访问虚拟机) systemctl enable --now supervisord # 启动并开机自启supervisor supervisorctl reload # 重载配置 supervisorctl update # 更新进程配置 supervisorctl restart all # 重启所有进程 supervisorctl status # 检查状态(两个进程均为RUNNING则正常)``` 7. 配置nginx ```YAML cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/ # 复制Nginx配置模板 systemctl enable --now nginx # 启动并开机自启Nginx``` 8. 验证 ```YAML # 检查supervisor管理的进程(必须均为RUNNING) supervisorctl status # 检查Nginx状态 systemctl status nginx # 检查libvirt服务(WebVirtCloud依赖) systemctl status libvirtd``` 9. 访问webvirtcloud界面 ```YAML http://192.168.255.130 账号: admin 密码: admin```
http://www.jsqmd.com/news/571641/

相关文章:

  • YOLOv9镜像小白友好教程:手把手教你训练自己的检测模型
  • 5步快速上手:Duix.Avatar完全指南 - 免费开源的AI数字人克隆工具
  • 用美团外卖点单有没有什么必须知道的省钱秘诀?周末五折外卖直接省一半 - 资讯焦点
  • 从概念到代码:电机控制中的归一化实战解析
  • 2026年4月全球美国投资移民中介推荐:五家口碑服务评测对比知名 - 十大品牌推荐
  • 5分钟快速上手:foobox-cn打造专业级foobar2000美化界面完整指南
  • 从无人机到VR眼镜:聊聊Mahony滤波算法在消费电子里是怎么‘稳住’画面的
  • 专业级foobar2000个性化配置方案:提升音乐管理效率的foobox-cn
  • 2026海外AI营销公司哪家好?推荐几家AI社媒营销平台与海外社媒运营推广公司(附带联系方式) - 品牌2026
  • GPEN错误码排查指南:常见问题与解决方案汇总
  • QQ空间导出助手:社交媒体数据备份的完整解决方案
  • 卡特兰数在LeetCode刷题中的5种经典应用场景(附Python代码)
  • Ostrakon-VL-8B保姆级教程:Streamlit Theming定制品牌色像素UI主题包
  • XTDrone仿真环境配置踩坑实录:我是如何解决Gazebo插件冲突和MAVROS地理库安装失败的
  • MySQL不同隔离级别下,都会使用什么锁?
  • 从内存分区到智能指针:C++面试中的内存管理全攻略
  • 2026年PVC塑胶地板厂家:解读行业三大核心趋势 - 速递信息
  • 探索DeepCAD:AI驱动的三维CAD模型智能生成革命
  • 快速验证openclaw安装:用快马AI一键生成环境配置脚本原型
  • MacOS+PadOS双端党必看:Zotero搭配坚果云同步文献的5个隐藏技巧
  • Phi-4-mini-reasoning+ollama推理性能横评:对比Qwen2.5与Phi-3-mini
  • 大模型风口已至!普通人如何逆袭拿高薪?学员真实案例告诉你答案!
  • Postman便携版:Windows环境下API开发的免安装解决方案
  • 丹青幻境保姆级教程:LoRA卷轴版本管理与热更新机制在生产环境落地
  • 实战复盘:我是如何用CobaltStrike的Socks4代理+Proxychains穿透内网扫描的
  • 美团外卖超时怎么补偿?周末五折外卖帮你省回损失 - 资讯焦点
  • 华勤技术通过上市聆讯:2025年营收1714亿 净利41亿
  • 2026年贵州交通标志杆采购避坑指南,低价陷阱要当心 - 精选优质企业推荐榜
  • Flutter项目打包未签名ipa的保姆级教程(含Xcode配置与常见错误解决)
  • SQLCoder模型压缩:剪枝技术应用效果