惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
V
V2EX
博客园_首页
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
H
Help Net Security
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
云风的 BLOG
云风的 BLOG
D
Docker
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
N
News and Events Feed by Topic
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏
Hacker News: Ask HN
Hacker News: Ask HN
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy International News Feed
T
Troy Hunt's Blog
T
Tenable Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Recorded Future
Recorded Future
F
Fortinet All Blogs
D
DataBreaches.Net
B
Blog
T
Threat Research - Cisco Blogs
MyScale Blog
MyScale Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
The GitHub Blog
The GitHub Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence

博客园 - think8848

[原]使用BPI-R4开发板实现5G上网、Wi-Fi AP、文件共享和Docker服务 mongocxx-driver编译安装 Mapnik 3.0.20编译安装 [原]Webpack 3 + AngularJS1.* + Bootstrap 4 + Mapbox-gl VSCode下调试mocha测试用例 Mapbox Studio Classic 闪退问题解决方案 EventEmitter事件处理器中的this问题 Rappid 消除试用版的弹出框 CentOS7.2 1511部署RabbitMQ shp2pgsql向postgresql导入shape数据 node.js的Promise库-bluebird示例 [原]Docker部署SuperMap8.1.1 Docker初步 node.js 调试问题 [原]OpenStreetMap数据瓦片服务性能篇 [原]CentOS7.2部署KVM虚拟机 [原]使用node-mapnik和openstreetmap数据初步搭建瓦片服务 [原]使用node-mapnik生成openstreetmap-carto风格的瓦片 [原]CentOS7.2部署node-mapnik
[原]挂载oVirt虚拟机磁盘
think8848 · 2024-01-06 · via 博客园 - think8848

转载请注明作者(think8848)和本文链接http://think8848.cnblogs.com

挂载oVirt虚拟机磁盘

目标: oVirt Engine挂了后虚拟机无法启动,在其他Linux系统中挂载虚拟机磁盘找回数据。

此文目的是记录找回数据的过程,使用的方法不一定是最佳方案,欢迎有更好方法的大神提供最优方案

1. 准备工作

1.1 安装用于找回数据的Linux系统,我使用的是Ubuntu 22.04.3, 在安装过程中磁盘不采用lvm格式;此系统的磁盘一定要大,最好有接近要找回磁盘文件2倍大的剩余空间。

1.2 在oVert Node中找到磁盘文件,通常位于oVirt Node数据存储目录下的images目录中,例: /data/hdd1/230845d7-1164-4e44-8d98-a77ccfcd6fc8/images

为了能够在Engine挂了后还能找到对应的磁盘文件,强烈建议在创建虚拟机磁盘时填写磁盘的备注信息,否则可能无法确定哪个磁盘是您所需要找回的目标。

1.3 将磁盘文件复制到新安装的Ubuntu系统中。如果磁盘文件过大,或者在复制期间要关闭terminal工具(WiFi不稳定,下班要回家等等情况),建议使用后台复制,命令如下:

nohup scp -r xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx root@xxx.xxx.xxx.xxx:/root > nohup.out 2>&1

在复制的过程中可以使用bg命令查看复制是否正在进行。

如果磁盘过大,转输的网速又不够快,建议在传输磁盘文件之前先行压缩,推荐使用pigz进行多线程压缩/解压。

nohup tar --use-compress-program="pigz -p 70" -xvpf file.tar.gz &

上面示例中的-p 70参数意为使用70个线程进行解压,如果不指定-p参数则默认使用8个线程进行解压(经测试,在压缩时确实可以跑满70个线程,但是解压时貌似指定了70个线程,但实际上还是使用8个线程,不过确实比直接使用tar快很多)

强烈建议在oVirt Engine上创建虚拟机时按需分配虚拟机磁盘空间,否则在找回磁盘文件将消耗大量的磁盘空间和时间

2. 查看并处理Raw文件

2.1 为了方便操作文件,可将xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx形式的文件名修改为raw

mv xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx raw

2.2 查看raw文件分区情况

fdisk -l raw

2.3 将raw格式文件(注意:此处的文件名正好也是raw)转换为qcow2格式文件

# 安装qemu-utils工具
apt install -y qemu-utils
# 将raw格式文件转换为qcow2格式文件
nohup qemu-img convert -O qcow2 raw newfile.qcow2 & 

以上的文件操作在采用了SSD固态硬盘的情况下耗时数小时(我要挂载的虚拟机磁盘为2.5T),如果换作机械硬盘估计至少需要24小时以上。

3. 挂载qcow2格式磁盘

3.1 安装libguestfs-tools虚拟机磁盘管理工具

apt install libguestfs-tools -y

3.2 查看qcow2格式磁盘中的磁盘分区情况

virt-filesystems -a newfile.qcow2

3.3 挂载磁盘

guestmount -a newfile.qcow2 -m /dev/ubuntu-vg/ubuntu-lv /mnt

如果不出意外,进入/mnt目录就可以看到虚拟机磁盘中的数据了!

4. 其他需要说明的情况

4.1 本方法适用于在创建虚拟机时使用lvm逻辑卷的情况。使用lvm逻辑卷的好处很多,但是在挂载磁盘数据时会导致出现mount: unknown filesystem type 'LVM2_member'的情况。针对这个情况本文提供了解决方案。

4.2 如果在创建虚拟机时不使用lvm,而是使用了ext4磁盘格式,那么可以使用本文的方法,直接挂载ext4分区。

从某些层面而言,如果您大概率确定虚拟机的磁盘在将来使用时不需要扩容或者缩容,那么直接在创建虚拟机的时候就采用ext4格式,将来一旦出现oVirt Engine故障时,您可以快速高效的把文件抢救出来:)