整个 PVE 系统崩溃后,怎么恢复 PVE 给虚拟机分配的虚拟硬盘中的数据

news/2025/2/11 16:17:43 标签: PVE, 文件恢复, Ubuntu

背景

我有一块 ssd 用于 PVE 系统和 虚拟机 安装,还有一块 HDD 用来存储数据。这个HDD按照 把 PVE 下的机械硬盘(非SSD系统盘)分配给虚拟机使用 进行挂载和配置。主要过程是 PVE中 “数据中信” -> “存储” -> “添加” -> “目录”,新建一个 Nextcloud 目录。

在 debian 虚拟机中,添加硬盘,Bus/Device 选择 SCSI,format=raw,我只实验成功了 raw 格式。下图 大小是 32G。
在这里插入图片描述

Raw 格式的虚拟磁盘文件直接读取

  • 使用一块 ubuntu 系统安装盘,插入服务器,直接进入 Ubuntu U盘启动,选择试用 ubuntu 不选择安装。
  • 首先,查看已连接的磁盘:
lsblk

可以看到下图有个,sda 硬盘,如果没有挂载需要先挂载。参考Ubuntu 挂载硬盘,下图我挂载到 /mnt/share 中。
在这里插入图片描述

  • 打开 ubuntu 文件管理器,找到刚才挂载的文件夹 share,由于前面是挂载整个硬盘,Nextcloud 文件夹在整个硬盘中,所以直接进入 share/Nextcloud 文件夹中找 “*.raw” 文件。如果文件夹右上角有一个“x”,表示没权限,如下图右下角的 root 文件夹,这样需要先改文件权限。sudo chmod -R 777 /mnt/hare/Nextcloud 。记下来这个 vm-200-disk-0.raw 文件所在路径。
    在这里插入图片描述
  • 使用 losetup 挂载 raw 磁盘,使用下面语句,填入 “*.raw”文件路径
sudo losetup -Pf /mnt/share/Nextcloud/200/vm-200-disk-0.raw

  • 查看分区
lsblk

应该可以看到有一个硬盘是 32G,就是上一步创建的虚拟硬盘 vm-200-disk-0.raw。前面图中展示了 lsblk结果是 “loop14” 。

  • 挂载这个虚拟磁盘 loop14
sudo mkdir -p /mnt/nextcloud
sudo mount /dev/loop14 /mnt/nextcloud

  • 打开文件资源管理器,进入文件夹可以看到 samba 上的文件
    在这里插入图片描述

  • 解绑 raw 磁盘(完成后)
    当你读取完数据后,解绑 loop 设备:

sudo umount /mnt/???
sudo losetup -d /dev/loop14

qcow2 格式虚拟磁盘文件读取

类似前面 raw 虚拟磁盘文件处理过程,先把 HDD 挂载到 /mnt/share, 处理好权限问题,找到 “*.qcow2”格式文件,我的虚拟磁盘是 vm-110-disk-0.qcow2,

  • 安装 qemu-utils
sudo apt update
sudo apt install qemu-utils -y

  • 连接 QCOW2 文件到 NBD 设备
sudo modprobe nbd
sudo qemu-nbd --connect=/dev/nbd0 /mnt/share/Samba/images/110/vm-110-disk-0.qcow2

  • 查找 QCOW2 内部分区
lsblk

可以看到,有一个 nbd0的硬盘,容量是 200G,这个就是我放 Samba 共享文件夹的磁盘
在这里插入图片描述

  • 挂载 QCOW2 内的文件系统
sudo mkdir -p /mnt/samba
sudo mount /dev/nbd0 /mnt/samba

打开文件管理器,进入挂载的目录,可以看到 Samba 共享文件夹下的资料了。
在这里插入图片描述

  • 解绑 QCOW2 磁盘(操作完成后)
    当你完成数据读取后,安全卸载:
sudo umount /mnt/???
sudo qemu-nbd --disconnect /dev/nbd0

http://www.niftyadmin.cn/n/5841889.html

相关文章

『 C 』 `##` 在 C 语言宏定义中的作用解析

文章目录 ## 运算符的基本概念可变参数宏与 ## 的应用可变参数宏简介## 处理可变参数的两种情况可变参数列表为空可变参数列表不为空 示例代码验证 在 C 和 C 编程里,宏定义是个很有用的工具。今天咱们就来聊聊 ## 这个预处理器连接运算符在宏定义中的作用&#xff…

TensorFlow 示例平方米转亩

TensorFlow 和 Keras 来构建一个简单的神经网络模型,用于将输入的平方米数值转换为对应的亩数。代码包括了数据准备、模型构建、编译、训练、评估以及绘制损失曲线的过程。下面我会详细解释每一部分TensorFlow 和 Keras 来构建一个简单的神经网络模型,用…

读书笔记-《Redis设计与实现》(二)单机数据库实现(上)

相比前面我们学习的数据结构与对象(读书笔记-《Redis设计与实现》(一)数据结构与对象(上)、读书笔记-《Redis设计与实现》(一)数据结构与对象(下))&#xff0…

100 ,【8】 buuctf web [蓝帽杯 2021]One Pointer PHP(别看)

进入靶场 没提示&#xff0c;去看源代码。 user.php <?php // 定义一个名为 User 的类&#xff0c;该类可用于表示用户相关信息或执行与用户有关的操作 class User{// 声明一个公共属性 $count&#xff0c;可在类的内部和外部直接访问// 这个属性可能用于记录与用户相关…

【数据结构-Trie树】力扣677. 键值映射

设计一个 map &#xff0c;满足以下几点: 字符串表示键&#xff0c;整数表示值 返回具有前缀等于给定字符串的键的值的总和 实现一个 MapSum 类&#xff1a; MapSum() 初始化 MapSum 对象 void insert(String key, int val) 插入 key-val 键值对&#xff0c;字符串表示键 key…

3 卷积神经网络CNN

1 Image Classification (Neuron Version) – 1.1 Observation 1 1.2 Observation 2 如果不同的receptive field需要相同功能的neuron&#xff0c;可以使这些neuron共享参数 1.3 Benefit of Convolutional Layer 2 Image Classification (Filter Version) 不用担心filter大小…

98.2 AI量化开发:基于DeepSeek打造个人专属金融消息面-AI量化分析师(理论+全套Python代码)

目录 0. 承前1. 金融工程结构图2. Why is DeepSeek3. 项目实现代码3.1 导入python库3.2 参数设置3.3 获取数据3.4 数据处理3.5 AI人设提示词3.6 Messages构建3.7 AI Agent3.8 response格式处理3.9 汇总函数3.10 运行案例 4. 总结4.1 系统优点4.2 系统缺点4.3 可提升方向 0. 承前…

【router路由的配置】

router路由的配置 App.vuerouter在main.ts引入插件 App.vue <template><RouterView /> </template><script setup lang"ts"></script><style scoped lang"scss"></style>router import { createRouter, creat…