大家好,今天分享centos7部署kvm
首先,我们要了解一下kvm
KVM 自 Linux 2.6.20 版本后就直接整合到 Linux 内核,它依托 CPU 虚拟化指令集(如
Intel-VT、AMD-V)实现高性能的虚拟化支持。由于与 Linux 内核高度整合,因此在性能、
安全性、兼容性、稳定性上都有很好的表现。
这是它的结构图
文章图片
也许这个图不太好懂,我简而言之
在我们宿主机上按了一个VMware 虚拟机, 在VMware虚拟机上安装了centos7系统,在centos7上安装kvm虚拟化的软件
就是这个样子
我们来演示一下
- 关闭虚拟机
文章图片
文章图片
打开虚拟机centos7
连接xshell
文章图片
测试网络,现在就是没问题的,因为我们要使用网络源
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=128 time=11.6 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=128 time=11.1 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=128 time=9.69 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=4 ttl=128 time=10.3 ms
安装 GNOME 桌面环境
[root@localhost ~]# yum groupinstall -y "GNOME Desktop"//安装 GNOME 桌面环境
安装KVM 模块
[root@localhost ~]# yum -y install qemu-kvm//安装KVM 模块
安装KVM 调试工具
[root@localhost ~]# yum -y install qemu-kvm-tools
构建虚拟机的命令行工具
[root@localhost ~]# yum -y install virt-install
qemu 组件,创建磁盘、启动虚拟机等
yum -y install qemu-img//默认已经有了
yum -y install bridge-utils//网络支持工具,默认已经有了
yum -y install libvirt//安装虚拟机管理工具
yum -y install virt-manager
输入这条命令,只要有输出,就是支持虚拟化
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq
vmx
ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities检查 KVM 模块是否安装:
[root@localhost ~]# lsmod | grep kvm
kvm_intel1748410
kvm5785181 kvm_intel
irqbypass135031 kvm
将 系 统 的 默 认 运 行 target 更 改 为
graphical.targe。
[root@localhost ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
开启 libvirtd 服务,以开启相关支持。
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# virt-manager
文章图片
http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
进入这个目录
[root@localhost images]# pwd
/var/lib/libvirt/images
在这个目录当中上传一个centos7镜像,这个比较小
[root@localhost images]# ll
总用量 996352
-rw-r--r--. 1 root root 1020264448 6月24 16:52 CentOS-7-x86_64-Minimal-2009.iso
[root@localhost images]#
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
然后,点击“开始安装”
文章图片
文章图片
文章图片
重启就可以了
文章图片
我们已经进入到字符界面了
文章图片
使用管理员用户登录
文章图片
发现迷你版的镜像没有ifcofig命令
文章图片
yum -y install net-tools
文章图片
文章图片
[root@localhost ~]# virsh -h //查看命令帮助
virsh [options]... []
virsh [options]... [args...]options:
-c | --connect=URIhypervisor connection URI
-d | --debug=NUMdebug level [0-4]
-e | --escape set escape sequence for console
-h | --helpthis help
-k | --keepalive-interval=NUM
keepalive interval in seconds, 0 for disable
-K | --keepalive-count=NUM
number of possible missed keepalive messages
-l | --log=FILEoutput logging to file
-q | --quietquiet mode
-r | --readonlyconnect readonly
-t | --timingprint timing information
-vshort version
-Vlong version
--version[=TYPE]version, TYPE is short or long (default short)
commands (non interactive mode): Domain Management (help keyword 'domain')
attach-device从一个XML文件附加装置
attach-disk附加磁盘设备
attach-interface获得网络界面
autostart自动开始一个域
blkdeviotune设定或者查询块设备 I/O 调节参数。
blkiotune获取或者数值 blkio 参数
blockcommit启动块提交操作。
blockcopy启动块复制操作。
blockjob管理活跃块操作
blockpull使用其后端映像填充磁盘。
blockresize创新定义域块设备大小
change-media更改 CD 介质或者软盘驱动器
console连接到客户会话
cpu-stats显示域 cpu 统计数据
create从一个 XML 文件创建一个域
define从一个 XML 文件定义(但不开始)一个域
desc显示或者设定域描述或者标题
destroy销毁(停止)域
detach-device从一个 XML 文件分离设备
detach-device-aliasdetach device from an alias
detach-disk分离磁盘设备
detach-interface分离网络界面
domdisplay域显示连接 URI
domfsfreezeFreeze domain's mounted filesystems.
domfsthawThaw domain's mounted filesystems.
domfsinfoGet information of domain's mounted filesystems.
domfstrim在域挂载的文件系统中调用 fstrim。
domhostname输出域主机名
domid把一个域名或 UUID 转换为域 id
domif-setlink设定虚拟接口的链接状态
domiftune获取/设定虚拟接口参数
domjobabort忽略活跃域任务
domjobinfo域任务信息
domname将域 id 或 UUID 转换为域名
domrenamerename a domain
dompmsuspend使用电源管理功能挂起域
dompmwakeup从 pmsuspended 状态唤醒域
domuuid把一个域名或 id 转换为域 UUID
domxml-from-native将原始配置转换为域 XML
domxml-to-native将域 XML 转换为原始配置
dump把一个域的内核 dump 到一个文件中以方便分析
dumpxmlXML 中的域信息
edit编辑某个域的 XML 配置
eventDomain Events
inject-nmi在虚拟机中输入 NMI
iothreadinfoview domain IOThreads
iothreadpincontrol domain IOThread affinity
iothreadaddadd an IOThread to the guest domain
iothreaddeldelete an IOThread from the guest domain
send-key向虚拟机发送序列号
send-process-signal向进程发送信号
lxc-enter-namespaceLXC 虚拟机进入名称空间
managedsave管理域状态的保存
managedsave-remove删除域的管理保存
managedsave-editedit XML for a domain's managed save state file
managedsave-dumpxmlDomain information of managed save state file in XML
managedsave-defineredefine the XML for a domain's managed save state file
memtune获取或者数值内存参数
perfGet or set perf event
metadatashow or set domain's custom XML metadata
migrate将域迁移到另一个主机中
migrate-setmaxdowntime设定最大可耐受故障时间
migrate-getmaxdowntimeget maximum tolerable downtime
migrate-compcache获取/设定压缩缓存大小
migrate-setspeed设定迁移带宽的最大值
migrate-getspeed获取最长迁移带宽
migrate-postcopySwitch running migration from pre-copy to post-copy
numatune获取或者数值 numa 参数
qemu-attachQEMU 附加
qemu-monitor-commandQEMU 监控程序命令
qemu-monitor-eventQEMU Monitor Events
qemu-agent-commandQEMU 虚拟机代理命令
reboot重新启动一个域
reset重新设定域
restore从一个存在一个文件中的状态恢复一个域
resume重新恢复一个域
save把一个域的状态保存到一个文件
save-image-define为域的保存状态文件重新定义 XML
save-image-dumpxml在 XML 中保存状态域信息
save-image-edit为域保存状态文件编辑 XML
schedinfo显示/设置日程安排变量
screenshot提取当前域控制台快照并保存到文件中
set-lifecycle-actionchange lifecycle actions
set-user-passwordset the user password inside the domain
setmaxmem改变最大内存限制值
setmem改变内存的分配
setvcpus改变虚拟 CPU 的号
shutdown关闭一个域
start开始一个(以前定义的)非活跃的域
suspend挂起一个域
ttyconsoletty 控制台
undefine取消定义一个域
update-device从 XML 文件中关系设备
vcpucount域 vcpu 计数
vcpuinfo详细的域 vcpu 信息
vcpupin控制或者查询域 vcpu 亲和性
emulatorpin控制火车查询域模拟器亲和性
vncdisplayvnc 显示
guestvcpusquery or modify state of vcpu in the guest (via agent)
setvcpuattach/detach vcpu or groups of threads
domblkthresholdset the threshold for block-threshold event for a given block device or it's backing chain element Domain Monitoring (help keyword 'monitor')
domblkerror在块设备中显示错误
domblkinfo域块设备大小信息
domblklist列出所有域块
domblkstat获得域设备块状态
domcontrol域控制接口状态
domif-getlink获取虚拟接口链接状态
domifaddrGet network interfaces' addresses for a running domain
domiflist列出所有域虚拟接口
domifstat获得域网络接口状态
dominfo域信息
dommemstat获取域的内存统计
domstate域状态
domstatsget statistics about one or multiple domains
domtimedomain time
list列出域 Host and Hypervisor (help keyword 'host')
allocpagesManipulate pages pool size
capabilities性能
cpu-baseline计算基线 CPU
cpu-compare使用 XML 文件中描述的 CPU 与主机 CPU 进行对比
cpu-modelsCPU models
domcapabilitiesdomain capabilities
freecellNUMA可用内存
freepagesNUMA free pages
hostname打印管理程序主机名
hypervisor-cpu-baselinecompute baseline CPU usable by a specific hypervisor
hypervisor-cpu-comparecompare a CPU with the CPU created by a hypervisor on the host
maxvcpus连接 vcpu 最大值
node-memory-tune获取或者设定节点内存参数
nodecpumap节点 cpu 映射
nodecpustats输出节点的 cpu 状统计数据。
nodeinfo节点信息
nodememstats输出节点的内存状统计数据。
nodesuspend在给定时间段挂起主机节点
sysinfo输出 hypervisor sysinfo
uri打印管理程序典型的URI
version显示版本 Interface (help keyword 'interface')
iface-begin生成当前接口设置快照,可在今后用于提交 (iface-commit) 或者恢复 (iface-rollback)
iface-bridge生成桥接设备并为其附加一个现有网络设备
iface-commit提交 iface-begin 后的更改并释放恢复点
iface-definedefine an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy删除物理主机接口(启用它请执行 "if-down")
iface-dumpxmlXML 中的接口信息
iface-edit为物理主机界面编辑 XML 配置
iface-list物理主机接口列表
iface-mac将接口名称转换为接口 MAC 地址
iface-name将接口 MAC 地址转换为接口名称
iface-rollback恢复到之前保存的使用 iface-begin 生成的更改
iface-start启动物理主机接口(启用它请执行 "if-up")
iface-unbridge分离其辅助设备后取消定义桥接设备
iface-undefine取消定义物理主机接口(从配置中删除) Network Filter (help keyword 'filter')
nwfilter-define使用 XML 文件定义或者更新网络过滤器
nwfilter-dumpxmlXML 中的网络过滤器信息
nwfilter-edit为网络过滤器编辑 XML 配置
nwfilter-list列出网络过滤器
nwfilter-undefine取消定义网络过滤器
nwfilter-binding-createcreate a network filter binding from an XML file
nwfilter-binding-deletedelete a network filter binding
nwfilter-binding-dumpxmlXML 中的网络过滤器信息
nwfilter-binding-listlist network filter bindings Networking (help keyword 'network')
net-autostart自动开始网络
net-create从一个 XML 文件创建一个网络
net-definedefine an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy销毁(停止)网络
net-dhcp-leasesprint lease info for a given network
net-dumpxmlXML 中的网络信息
net-edit为网络编辑 XML 配置
net-eventNetwork Events
net-info网络信息
net-list列出网络
net-name把一个网络UUID 转换为网络名
net-start开始一个(以前定义的)不活跃的网络
net-undefineundefine a persistent network
net-update更新现有网络配置的部分
net-uuid把一个网络名转换为网络UUID Node Device (help keyword 'nodedev')
nodedev-create根据节点中的 XML 文件定义生成设备
nodedev-destroy销毁(停止)节点中的设备
nodedev-detach将节点设备与其设备驱动程序分离
nodedev-dumpxmlXML 中的节点设备详情
nodedev-list这台主机中中的枚举设备
nodedev-reattach重新将节点设备附加到他的设备驱动程序中
nodedev-reset重置节点设备
nodedev-eventNode Device Events Secret (help keyword 'secret')
secret-define定义或者修改 XML 中的 secret
secret-dumpxmlXML 中的 secret 属性
secret-eventSecret Events
secret-get-valuesecret 值输出
secret-list列出 secret
secret-set-value设定 secret 值
secret-undefine取消定义 secret Snapshot (help keyword 'snapshot')
snapshot-create使用 XML 生成快照
snapshot-create-as使用一组参数生成快照
snapshot-current获取或者设定当前快照
snapshot-delete删除域快照
snapshot-dumpxml为域快照转储 XML
snapshot-edit编辑快照 XML
snapshot-info快照信息
snapshot-list为域列出快照
snapshot-parent获取快照的上级快照名称
snapshot-revert将域转换为快照 Storage Pool (help keyword 'pool')
find-storage-pool-sources-as找到潜在存储池源
find-storage-pool-sources发现潜在存储池源
pool-autostart自动启动某个池
pool-build建立池
pool-create-as从一组变量中创建一个池
pool-create从一个 XML 文件中创建一个池
pool-define-as在一组变量中定义池
pool-definedefine an inactive persistent storage pool or modify an existing persistent one from an XML file
pool-delete删除池
pool-destroy销毁(删除)池
pool-dumpxmlXML 中的池信息
pool-edit为存储池编辑 XML 配置
pool-info存储池信息
pool-list列出池
pool-name将池 UUID 转换为池名称
pool-refresh刷新池
pool-start启动一个(以前定义的)非活跃的池
pool-undefine取消定义一个不活跃的池
pool-uuid把一个池名称转换为池 UUID
pool-eventStorage Pool Events Storage Volume (help keyword 'volume')
vol-clone克隆卷。
vol-create-as从一组变量中创建卷
vol-create从一个 XML 文件创建一个卷
vol-create-from生成卷,使用另一个卷作为输入。
vol-delete删除卷
vol-download将卷内容下载到文件中
vol-dumpxmlXML 中的卷信息
vol-info存储卷信息
vol-key为给定密钥或者路径返回卷密钥
vol-list列出卷
vol-name为给定密钥或者路径返回卷名
vol-path为给定密钥或者路径返回卷路径
vol-pool为给定密钥或者路径返回存储池
vol-resize创新定义卷大小
vol-upload将文件内容上传到卷中
vol-wipe擦除卷 Virsh itself (help keyword 'virsh')
cd更改当前目录
echoecho 参数
exit退出这个非交互式终端
help打印帮助
pwd输出当前目录
quit退出这个非交互式终端
connect连接(重新连接)到 hypervisor(指定 help 获取组中命令的详情)(使用 --help 来获得这个命令的详细信息)
查看 KVM 的配置文件存放目录
[root@localhost ~]# ll /etc/libvirt/qemu/
总用量 8
-rw-------. 1 root root 4631 6月30 16:11 centos7.0.xml
drwx------. 3 root root42 4月28 2021 networks
[root@localhost ~]#
查看虚拟机状态
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
4centos7.0running[root@localhost ~]#
centos7.0 就是我们刚才安装的虚拟机
关闭虚拟机
[root@localhost ~]# virsh shutdown centos7.0
域 centos7.0 被关闭
开启虚拟机
[root@localhost ~]# virsh start centos7.0
域 centos7.0 已开始
强制关闭
[root@localhost ~]# virshdestroycentos7.0
这个时候,我们再看一下状态:
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
-centos7.0关闭
【Linux运维理论+实战笔记|centos7安装部署kvm,照做就行】通过配置文件启动虚拟机系统
[root@localhost ~]# virsh create /etc/libvirt/qemu/centos7.0.xml
域 centos7.0 被创建(从 /etc/libvirt/qemu/centos7.0.xml)
看状态
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
6centos7.0running
挂起虚拟机
[root@localhost ~]# virshsuspend centos7.0
域 centos7.0 被挂起
看一下状态
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
6centos7.0暂停[root@localhost ~]#
配置虚拟机实例伴随宿主机自动启动
[root@localhost ~]# virsh autostart centos7.0
域 centos7.0标记为自动开始
恢复虚拟机
[root@localhost ~]# virsh resume centos7.0
导出虚拟机配置
把centos7.0 的配置放到centos7.1 里面
[root@localhost ~]# virsh dumpxml centos7.0 > /etc/libvirt/qemu/centos7.1
看现在的配置文件
[root@localhost ~]# ls /etc/libvirt/qemu/
autostartcentos7.0.xmlcentos7.1networks
删除虚拟机
[root@localhost ~]# virsh undefine centos7.0
域 centos7.0 已经被取消定义
这是的centos7.0 的配置文件已经没有了
[root@localhost ~]# ls /etc/libvirt/qemu/
autostartcentos7.1networks
现在没有运行的虚拟机
[root@localhost ~]# virshlist --all
Id名称状态
----------------------------------------------------[root@localhost ~]#
进入到配置文件目录
[root@localhost ~]# cd /etc/libvirt/qemu/
进行配置文件的重命名
[root@localhost qemu]# mv centos7.1centos7.0
重新定义
[root@localhost qemu]# virsh define centos7.0
定义域 centos7.0(从 centos7.0)[root@localhost qemu]#
看现在的状态
[root@localhost qemu]# virsh list--all
Id名称状态
----------------------------------------------------
-centos7.0关闭[root@localhost qemu]#
修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
直接通过 vim 命令修改:
[root@localhost qemu]# vim centos7.0
或者这样也可以
[root@localhost qemu]# virsheditcentos7.0
相当于编辑上面的配置文件
安装一下这个东西
[root@localhost ~]# yum installlibguestfs-tools -y
var/lib/libvirt/images/: 这是我们放镜像的地方
大家在做的时候看自己的情况
查看当前磁盘格式
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/centos7.0.qcow2
image: /var/lib/libvirt/images/centos7.0.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 5.0G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
[root@localhost ~]#
这个也装一下
[root@localhost ~]# yum -y install libguestfs-tools-c
[root@localhost ~]# virt-cat -a /var/lib/libvirt/images/centos7.0.qcow2 /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
在宿主机上查看kvm虚拟机centos7.0 的dns地址
root@localhost ~]# virt-edit -a /var/lib/libvirt/images/centos7.0.qcow2/etc/resolv.conf # Generated by NetworkManager
查看虚拟机状态
[root@localhost ~]# virt-df -h centos7.0
文件系统大小 已用空间 可用空间 使用百分比%
centos7.0:/dev/sda11014M105M909M11%
centos7.0:/dev/centos/root3.5G1.3G2.2G39%
[root@localhost ~]#
看状态
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
-centos7.0关闭[root@localhost ~]#
克隆一个机器
[root@localhost ~]# virt-clone -o centos7.0 -n centos7.1 -f /var/lib/libvirt/images/centos7.1.qcow2
正在分配 'centos7.1.qcow2'| 5.0 GB00:00:24成功克隆 'centos7.1'。
再看一下状态,发现有centos7.1
[root@localhost ~]# virsh list --all
Id名称状态
----------------------------------------------------
-centos7.0关闭
-centos7.1关闭
开启这个图centos7.1
[root@localhost ~]# virsh startcentos7.1
域 centos7.1 已开始
生成快照(理解成VMware的快照)
[root@localhost ~]# virsh snapshot-create centos7.0
已生成域快照 1656584049
[root@localhost ~]#
查看虚拟机快照的版本信息
[root@localhost ~]# virshsnapshot-current centos7.0
1656584049
>shutoff
1656584049
centos7.0
8f9cd4d6-a1d1-4296-bf6e-379682af6b05
1048576
1048576
1
/machine
hvm
Broadwell-IBRS
destroy
restart
destroy -to-mem enabled='no'/>
-to-disk enabled='no'/>
/usr/libexec/qemu-kvm
='/var/lib/libvirt/images/centos7.0.qcow2'/>
='default'/>
='pty'>
='ich6'>
='dynamic' model='selinux' relabel='yes'/>
='dynamic' model='dac' relabel='yes'/>
查看快照时间
[root@localhost ~]# virsh snapshot-list centos7.0
名称生成时间状态
------------------------------------------------------------
16565840492022-06-30 18:14:09 +0800 shutoff[root@localhost ~]#
创建新的快照
[root@localhost ~]# virsh snapshot-create centos7.0
已生成域快照 1656584521
查看快照时间
[root@localhost ~]# virsh snapshot-list centos7.0
名称生成时间状态
------------------------------------------------------------
16565840492022-06-30 18:14:09 +0800 shutoff
16565845212022-06-30 18:22:01 +0800 shutoff
切换原先的状态
[root@localhost ~]# virshsnapshot-revert centos7.0 1656584049
看信息
[root@localhost ~]# virshsnapshot-current centos7.0
1656584049
>shutoff
1656584049
[root@localhost ~]# virsh snapshot-delete centos7.0 1656584049
已删除域快照 1656584049
好了,有关于centos7安装部署kvm 以及kvm的基本操作就到这里了,谢谢大家
推荐阅读
- 网络配置大熔炉|Rocky/GNU之Zabbix部署(1)
- linux|K8S复习(一)(kubernetes设计架构)
- web|文件上传漏洞详解
- 网络安全|永恒之蓝MS17-010exp复现
- oscp|INE Penetration Testing Basics 黑盒渗透测试过程
- Linux 中的“大内存页”(hugepage)是个什么
- CPu|CPU虚拟化的三种技术
- linux|Linux curl 命令详解
- linux|Linux curl 常用示例