Day12 KVM构建与管理(Service01)

简介:

一、虚拟化概述

1.1 定义

通过X个物理资源生成Y个逻辑资源
系统服务名:libvirtd

1.2 程度

完全
部分
硬件辅助(CPU):主流CPU都集成了虚拟化技术如VT、VD

1.3 虚拟机主要厂商和产品

虚拟化厂商 虚拟化产品
VMware VMware Workstation、vSphere
Microsoft VirtualPC、Hypre-V、Azure
RedHat KVM、RHEV(收费版)
Citrix Xen
Oracle Oracle VM VirtualBox

二、搭建KVM环境

2.1 安装虚拟化软件包组

LANG=en
yum grouplist hidden |grep Virtual #rhel7查看可用的虚拟化相关的软件包组
Virtualization Host
Virtualization Client
Virtualization Hypervisor
Virtualization Platform
Virtualization Tools

yum grouplist hidden |grep Virtual #rhel6查看可用的虚拟化相关的软件包组
Virtualization
Virtualization Client
Virtualization Platform
Virtualization Tools

yum -y group install Virtualization\ Client Virtualization\ Hypervisor Virtualization\ Platform Virtualization\ Tools

2.2 图形桌面上的快捷方式创建

cd /usr/share/applications
cp virt-manager.desktop ~/桌面/

2.3 一台KVM虚拟机的组成

2.3.1 /etc/libvirt/qemu

虚拟机的XML配置文件所在路径。XML配置文件定义虚拟机的名称、UUID、内存、虚拟磁盘、网卡等各种参数设置

2.3.2 /var/lib/libvirt/images

虚拟机的磁盘镜像文件所在路径。磁盘镜像文件用来保存虚拟机的操作系统及文档等数据

三、KVM管理命令

3.1 virt-manager

图形化管理工具

3.2 virsh nodeinfo

查看实体机的CPU、内存等信息

3.3 virsh list [--all]

查看正在运行的虚拟机,--all表示显示所有的虚拟机

3.4 virsh dominfo 虚拟机名

查看虚拟机的详细信息

3.5 virsh autostart [--disable] 虚拟机名

设置开机自动运行虚拟机,--disable表示取消开机自动运行功能

3.6 virsh start|reboot|shutdown 虚拟机名

启动、重启和关闭虚拟机

3.7 virsh destory 虚拟机名

强制关闭虚拟机

3.7 virsh define 虚拟机名.xml

导入虚拟机

3.8 virsh undefine 虚拟机名

删除虚拟机的XML文件,不在KVM管理器里面显示

3.9 virsh dumpxml 虚拟机名 > 新虚拟机名.xml

导出虚拟机的XML文件重定向到新虚拟机的XML文件

3.10 virsh edit 虚拟机名

导出修改再导入虚拟机的XML文件

3.11 virsh snapshot-list 虚拟机名

查看虚拟机现有的快照信息

3.12 virsh snapshot-create-as server nullmail

为server创建快照名为nullmail

3.13 virsh snapshot-delete server --snapshotname 快照名

删除虚拟机快照

3.14 virsh snapshot-edit server --snapshotname 1512630021 --rename nullmail

修改虚拟机快照的名称

3.15 virsh snapshot-revert server --snapshotname nullmail --running

server恢复快照,快照名称为nullmail,恢复后运行虚拟机

3.16 virsh setmem server --size 8192000 --live

在线修改server的使用内存为8192000KB

3.17 virsh setmaxmem server --size 8192000 --config

修改server的最大可用内存为8192000KB,无法在线修改,只能关机后修改,下一次开机后应用该设置

3.18 qemu-img info 虚拟机磁盘镜像文件名

查看镜像的相关信息

3.19 qemu-img create -f qcow2 -b 原始盘 前端盘

四、快速创建虚拟机

4.1 以example为模板生成另外一台虚拟机

virsh destroy example#强制关机example
cd /var/lib/libvirt/images#虚拟机的XML配置文件所在路径
qemu-img info example.qcow2#查看虚拟机磁盘镜像文件的信息
cp example.qcow2 test01.qcow2#拷贝镜像文件
cd /etc/libvirt/qemu#虚拟机的磁盘镜像文件所在路径
cp example.xml test01.xml#拷贝XML配置文件
vim test01.xml
删除两个<channel></channel>标记
修改虚拟机名称、虚拟机磁盘文件、网卡MAC地址、UUID
注意!UUID和网卡MAC地址都是16进制,修改的时候字母只有a~f可用
uuidgen#专业生成UUID的小工具
virsh define /etc/libvirt/qemu/test01.xml#导入test01虚拟机
virsh undefine /etc/libvirt/qemu/test01.xml#删除test01虚拟机

4.2 COW快速创建虚拟机

4.2.1 COW机制的概念

COW(Copy on Write)写(变化)时复制
直接映射原始盘的数据内容,当原始盘的旧数据有修改时,在修改之前将旧数据存入前端盘,对前端盘的修改将不再回写到原始盘
原始盘(后端盘):需要备份的原始数据
增量盘(前端盘):永远储存,在制作前端盘的那一瞬间,原始盘的数据内容
可以这么理解:
假设原始盘的容量很大,创建增量盘需要10分钟。那么在创建增量盘的这10分钟内,一旦原始盘的数据有写操作(修改、删除等),通过COW机制,原始盘会把要操作的数据实体,拷贝到增量盘中,以保证增量盘永远储存,在创建增量盘的那一瞬间原始盘的数据内容

举例来说:
原始盘有1.txt、2.txt、3.txt等文件
创建增量盘的时候,前端盘实际存储的是1.txt、2.txt、3.txt的快捷方式
用户访问增量盘的1.txt的时候,实际查看的是原始盘里面的1.txt的内容
而如果原始盘的1.txt被删除时,会把将删除的1.txt的数据实体而不是快捷方式,拷贝到增量盘。拷贝完毕后。用户再访问增量盘的1.txt的时候,就是查看存储在增量盘里面的数据,不再是原始盘里面的数据,因为原始盘里面以及没有数据了。

4.2.2 磁盘镜像格式分类

RAW:原始数据格式,被rhel7抛弃
QCOW2:rhel7新使用的格式

4.2.3 创建过程

cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b example.qcow2 test02.qcow2
cd /etc/libvirt/qemu/
cp example.xml test02.xml
vim test02.xml
修改虚拟机名、磁盘镜像名、UUID、MAC地址
virsh define test02.xml#导入test02虚拟机
virsh list --all|grep test02
virsh start test02

五、离线访问虚拟机

5.1 guestmount -a 虚拟机磁盘镜像路径 -i 挂载点

记得关闭SELinux,可以在虚拟机关机的情况下离线修改,但是花费的时间比较长

六、搭建新的教学环境

6.1 要求

资源端:由实体机提供
服务端:虚拟机A
客户端:虚拟机B
用clone-vm7脚本创建两台虚拟机8、9

虚拟机A:
主机名:svr7.tedu.cn
网卡:eth0
IP:192.168.4.7/24
帐号:root
密码:123456
虚拟机B:
主机名:pc207.tedu.cn
网卡:eth0
IP:192.168.4.207/24
帐号:root
密码:123456

yum仓库搭建
yum服务端:实体机
yum客户端:虚拟机

6.2 操作

6.2.1 生成两台虚拟机

实体机:
clone-vm7 8
clone-vm7 9

6.2.2 虚拟机配置主机名和IP地址

虚拟机A:
echo svr7.tedu.cn >/etc/hostname
hostname
nmcli c m eth0 ipv4.method manual ipv4.addresses '192.168.4.7/24' connection.autoconnect yes
nmcli c up eth0
ping 192.168.4.254
虚拟机B:
echo pc207.tedu.cn >/etc/hostname
hostname
nmcli c m eth0 ipv4.method manual ipv4.addresses '192.168.4.207/24' connection.autoconnect yes
nmcli c up eth0
ping 192.168.4.254

6.2.3 Yum仓库搭建

实体机:
systemctl restart httpd
systemctl enable httpd
mkdir -p /var/www/html/rhel7
echo '/ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rhel7 iso9660 defaults 0 0' >>/etc/fstab
tail -1 /etc/fstab
mount -a
firefox http://127.0.0.1/rhel7#验证web服务是否正常
虚拟机A,B:
vim /etc/yum.repos.d/dvd.repo
[dvd]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
yum clean all
yum repolist



本文转自 goldwinner 51CTO博客,原文链接:http://blog.51cto.com/355665/2068775,如需转载请自行联系原作者

相关文章
|
2月前
|
Kubernetes 容器
K8S的Service的LoadBanlance之Metallb解决方案
本文介绍了如何在Kubernetes中使用MetalLB来实现Service的LoadBalancer功能,包括MetalLB的部署、配置、以及通过创建地址池和部署服务来测试MetalLB的过程。
81 1
K8S的Service的LoadBanlance之Metallb解决方案
|
3月前
|
安全 数据可视化 数据安全/隐私保护
【Azure 微服务】新创建的Service Fabric集群,如何从本地机器上连接到Service Fabric Explorer(Service Fabric状态/错误查看工具)呢?
【Azure 微服务】新创建的Service Fabric集群,如何从本地机器上连接到Service Fabric Explorer(Service Fabric状态/错误查看工具)呢?
【Azure 微服务】新创建的Service Fabric集群,如何从本地机器上连接到Service Fabric Explorer(Service Fabric状态/错误查看工具)呢?
|
3月前
|
负载均衡 微服务 Windows
【Azure微服务 Service Fabric 】使用az命令创建Service Fabric集群
【Azure微服务 Service Fabric 】使用az命令创建Service Fabric集群
|
5月前
关于systemd自定义,一个service 启动多个实例
关于systemd自定义,一个service 启动多个实例
72 2
|
6月前
|
存储 缓存 网络协议
系统&服务管理进阶(SERVICE)
系统&服务管理进阶(SERVICE)
|
6月前
|
监控 安全 Java
有了容器化,还有必要制作 system service 来启动服务吗?
尽管有容器化技术,将服务作为 systemd 系统服务管理仍具有价值,因为它能实现系统整合、自动化管理、依赖处理、资源限制、安全增强及长期运行服务支持。systemd 允许设置服务间依赖、控制资源配额、日志监控和安全上下文。在 DevOps 环境中,通过 systemd 单元文件实现基础设施即代码,促进一致性与自动化部署。创建 systemd 服务涉及编写服务文件,定义描述、依赖、执行命令、重启策略等。
56 0
|
11月前
|
Kubernetes 网络协议 Cloud Native
Service 基础
Service 基础
|
API 开发工具 Android开发
Service基础
Service基础
87 0
Service基础
|
Kubernetes 负载均衡 监控
编排系统K8S之Service资源解析
今天我们来了解下K8S上的Service资源的相关话题,这是容器化体系的第1篇,基本的概念、基础理论不在本章描述。
136 0
|
存储 负载均衡 Kubernetes
简单说说K8S的Service底层,总感觉还是说不清楚。
简单说说K8S的Service底层,总感觉还是说不清楚。
189 0