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

【虚拟化】KVM-virsh离线工具进行客户机虚拟机磁盘访问

目录

一、简介

二、常用离线命令

三、具体使用实例

1.virt­-inspector

2.virt-cat

3.virt-edit

4.virt-df

5.virt-copy-out/virt-copy-in

6.guestmount

7.virt-diff

8.virt-customize

9.virt-sparsify


一、简介


Red Hat Enterprise Linux 7 提供多个 libguestfs 工具,可访问、编辑和创建客户机虚拟机磁盘或其他磁盘镜像。这些工具有多种用途,包括:

  • 查看或下载位于客户机虚拟机磁盘中的文件。
  • 在客户机虚拟机磁盘上编辑或上传文件。
  • 读取或写入客户机虚拟机配置.
  • 准备包含文件、目录、文件系统、分区、逻辑卷和其他选项的新磁盘镜像。
  • 修复无法引导的客户机虚拟机,或者需要启动配置更改的客户机虚拟机。
  • 监控客户机虚拟机的磁盘使用情况.
  • 审计客户虚拟机合规性,例如组织安全标准。
  • 通过克隆和修改模板来部署客户机虚拟机.
  • 读取 CD 和 DVD ISO 映像以及软盘磁盘映像.

二、常用离线命令


  • guestfish
  • guestmount
  • virt-alignment-scan
  • virt-cat
  • virt-copy-in
  • virt-copy-out
  • virt-df
  • virt-edit
  • virt-filesystems
  • virt-inspector
  • virt-ls
  • virt-rescue
  • virt-sysprep
  • virt-tar-in
  • virt-tar-out

三、具体使用实例


1.virt­-inspector

显示os版本、内核、驱动、挂载点、应用等等,执行时间比较长,输出内容也多 很少使用。

virt-inspector -a  /images/kvm/study02.qcow2 > report.xmlvirt-inspector -d study02 > report.xml

结果将是一个 XML 报告(report.xml)。XML 文件的主要组件是一个顶层 <operatingsytems> 元素,它通常包含一个 <operatingsystem> 元素。

2.virt-cat

类似于cat命令,参数:-a 需要指定虚拟机储存文件;-d 需要指定虚拟机名称,用法相同。

3.virt-edit

类似于vim,执行命令后在文本编辑器内修改文件内容。例如在下面修改主机名,原主机名为localhost,修改后主机名为study02,通过virt-cat命令查看主机名已经修改成功。

virt-edit -d study02 /etc/hostname

4.virt-df

类似于df -h用于查看虚拟机磁盘信息

5.virt-copy-out/virt-copy-in

类似于scp命令,把虚拟机中的文件远程复制到宿主机中或者把宿主机中的文件远程复制到虚拟机中。

virt-copy-out -d study02  /etc/os-release ./virt-copy-in  -d study02  /etc/hostname    /opt/
virt-cat -d study02 /opt/hostname

拷贝宿主机的hostname文件到虚拟机study02

6.guestmount

在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。

guestmount -d 虚拟机名 -m 磁盘路径 --rw 挂载点

如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个磁盘路径,挂载后,进入mnt目录下就是myvm01的根目录,可以进行正常操作。

guestmount -d study02 -i --rw /mnt

将/mnt下的挂载进行卸载

7.virt-diff

virt-diff 命令行工具可用于列出两个虚拟机磁盘映像中的文件差异。输出显示了虚拟机运行之后虚拟机磁盘映像的更改。命令也可用于显示覆盖的不同。

# 要指定两个虚拟机,您必须在第一个 guest 中使用 -a 或 -d 选项,#第二个客户机使用 -A 或 -D 选项。virt-diff -a /images/kvm/study02.qcow2  -A /images/kvm/study03.qcow2virt-diff -d study02 -D study03

8.virt-customize

virt-customize 命令行工具可用于自定义虚拟机,提早安装和配置虚拟机。例如,通过安装软件包并编辑配置文件:

要使用 virt-customize,客户端虚拟机必须离线,因此您必须在运行命令前关闭它。请注意,virt-customize 修改客户机或磁盘镜像而无需复制它。如果要保留客户端虚拟机的现有内容,则必须首先复制或克隆磁盘。

# 设置时区
virt-customize -a  /images/kvm/study02.qcow2  --timezone "Asia/Shanghai" 
# 追加配置
virt-customize -a  /images/kvm/study02.qcow2 --append-line '/root/.bash_profile:export LANG="en_US.UTF-8"'

9.virt-sparsify

virt-sparsify 命令行工具可用于生成虚拟机磁盘(或任何磁盘镜像)稀疏。这也被称为精简配置。磁盘镜像上的可用磁盘空间转换为主机上可用空间。

virt-sparsify 命令可以处理大多数文件系统,如 ext2、ext3、ext4、btrfs、NTFS。它还可用于 LVM 物理卷。virt-sparsify 可以针对任何磁盘镜像操作,而不只是虚拟机磁盘镜像。

如下示例命令解释:使用virt-sparsify工具将原镜像 /images/kvm/study02.qcow2 稀疏,最后得到study02-new.qcow2。

其中会在/images/kvm/tmp/目录下生成一个临时文件,其目的是为了保护原镜像磁盘文件不会损毁。

--tmp选项可自行指定,也可不用,具体根据服务器的情况来选择。

virt-sparsify --compress  /images/kvm/study02.qcow2  /images/kvm/study02-new.qcow2 --tmp /images/kvm/tmp/

具体操作步骤

[root@kvm kvm]# ll -h
total 24G
-rw-------. 1 qemu qemu  32G Sep  1 17:34 study01.img
-rw-------. 1 qemu qemu  21G Sep  1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root    6 Sep  1 17:34 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk
[root@kvm kvm]# virt-sparsify --compress  /images/kvm/study02.qcow2  /images/kvm/study02-new.qcow2 --tmp /images/kvm/tmp/
[   0.1] Create overlay file in /images/kvm/tmp/ to protect source disk
[   0.1] Examine source disk
[   4.1] Fill free space in /dev/centos/root with zero100% ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 00:00
[ 172.6] Fill free space in /dev/sda1 with zero
[ 178.9] Copy to destination and make sparse
[ 369.8] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the 
target disk boots and works correctly.
[root@kvm kvm]# ll -h
total 25G
-rw-------. 1 qemu qemu  32G Sep  1 18:07 study01.img
-rw-r--r--. 1 root root 536M Sep  1 17:40 study02-new.qcow2
-rw-------. 1 qemu qemu  21G Sep  1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root    6 Sep  1 17:40 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk


参考地址:

21.13. virt-diff:列出虚拟机文件间的差异 | Red Hat Product Documentation

相关文章:

  • 2024年CCPC网络赛 D题个人理解
  • AI绘画笔记
  • Eprime学习【E-basic语言、心理学实验程序设计】
  • 视频回放 | DolphinDB 2024 年度峰会主会场演讲精彩回顾
  • matplotlib画动态图
  • 【Unity踩坑】创建新项目后提示编译错误要进入安全模式
  • Linux - Linux安装部署Maven以及环境变量配置
  • 测试开发基础——测试用例的设计
  • 信创实践(3):基于x2openEuler将CentOS升级成openEuler,享受其带来的创新和安全特性
  • 解决 webpack 配置 sass-loader后报错,无法正常build
  • EasyExcel 学习之 导出 “类型及精度问题”
  • requests请求设置超时时间python
  • Debezium系列之:大规模应用debezium server采集数据库,从每个Debezium Server中导出JMX采集指标
  • 怎么利用接口发送图文彩信
  • 所有即将登陆iPhone 16的Apple智能功能以及预期发布时间
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 30天自制操作系统-2
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • css属性的继承、初识值、计算值、当前值、应用值
  • ECS应用管理最佳实践
  • EOS是什么
  • JAVA并发编程--1.基础概念
  • js如何打印object对象
  • JWT究竟是什么呢?
  • Less 日常用法
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SQL 难点解决:记录的引用
  • 笨办法学C 练习34:动态数组
  • 初识MongoDB分片
  • 责任链模式的两种实现
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 积累各种好的链接
  • ​【已解决】npm install​卡主不动的情况
  • # Redis 入门到精通(一)数据类型(4)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #Linux(Source Insight安装及工程建立)
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (Forward) Music Player: From UI Proposal to Code
  • (Git) gitignore基础使用
  • (SpringBoot)第七章:SpringBoot日志文件
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (初研) Sentence-embedding fine-tune notebook
  • (二)JAVA使用POI操作excel
  • (分类)KNN算法- 参数调优
  • (力扣)循环队列的实现与详解(C语言)
  • (南京观海微电子)——COF介绍
  • (三)SvelteKit教程:layout 文件
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)四层和七层负载均衡的区别
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ../depcomp: line 571: exec: g++: not found
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案