LVM2 以错误的方式使用“fio”命令部分损坏 - 如何恢复可以恢复的内容

LVM2 以错误的方式使用“fio”命令部分损坏 - 如何恢复可以恢复的内容

我已经在 Proxmox 论坛上发布了我的问题,因为那是我正在使用的虚拟机管理程序,但是我也借此机会在这里这样做,看到它的人越多,我恢复部分数据的机会就越大。我将在 Proxmox 论坛上粘贴我开始的内容,并详细说明当前情况。

经过多年的服务,我的 proxmox 主机决定放弃我,就在我计划更换新主机(不是全新的,但仍然是新存储)并且我正在准备构建 raid 等的正确时刻在新服务器上。

发生故障的主机是 DL380 G8 Dual Xeon E5-2430L 64GB RAM,带有 P822 RAID 卡,配置了 2 个 LUN:20 个 900GB SAS 10K rpm Seagate 磁盘(配置了 2 个热备用)RAID 10(根 LUN,包含 LVM 本地和本地) -thin,默认存储虚拟机、ISO 映像和备份) 24x 2TB SAS 7.2K rpm Seagate 磁盘(带 2 个热备用) 用于纯数据存储的 RAID 6

运行在 Proxmox 7.4 上,最近更新(一周前左右)。我正在新系统上进行一些基准测试,以配置 SSD 的 RAID 10,以实现最佳性能,设置缓存控制器、物理设备缓存等,并与我在旧主机上运行的仅 4 个基准测试进行比较,只是为了看看效果如何新系统将会执行。我运行了这 2 个命令,一个用于读取操作,一个用于 4K 和 1M 块大小的写入操作:

fio --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=4K --numjobs=1 --iodepth=1 --runtime=60 --time_based --name seq_read --filename=/dev/sda
fio --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=4K --numjobs=1 --iodepth=1 --runtime=60 --time_based --name seq_read --filename=/dev/sda
fio --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=1M --numjobs=1 --iodepth=1 --runtime=60 --time_based --name seq_read --filename=/dev/sda
fio --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=1M --numjobs=1 --iodepth=1 --runtime=60 --time_based --name seq_read --filename=/dev/sda

当然,像个该死的白痴一样,我确实在我的旧主机上运行了“写入”基准测试,而没有注意输出文件名==>磁盘本身而不是文件:(当然,我没有注意到这一点,并且最后,当我找到新主机的最佳设置时,我想重新启动它并进行全新安装,我确实重新启动了旧主机,当然,由于命令以fio写入方式运行,我杀死了该命令的开头。磁盘以及启动分区(可能还有更多)我的设置如下:

Controller Status OK
Serial Number PDVTF0BRH8Y1RD
Model Smart Array P822 Controller
Firmware Version 8.32
Controller Type HPE Smart Array
Cache Module Status OK
Cache Module Serial Number PBKUD0BRH8V4FT
Cache Module Memory

Logical Drive 01

Status OK
Capacity 5029 GiB
Fault Tolerance RAID 1/RAID 1+0
Logical Drive Type Data LUN
Encryption Status Not Encrypted

Logical Drive 02

Status OK
Capacity 37259 GiB
Fault Tolerance RAID 6
Logical Drive Type Data LUN
Encryption Status Not Encrypted

如果我重新开始 USB Proxmox 安装,启动 LVM 会丢失,根本无法检测到:

检测到的卷是第二个,即数据存储。由于甚至没有检测到音量,我什至不知道从哪里开始。我尝试运行 testdisk,但不确定这个工具在恢复分区方面有多大相关性,我能说的是他确实在我的 /dev/sda 中看到了 LVM2 卷:

在此输入图像描述

在我发现我的错误之后,到目前为止我所做的(也在 Proxmox 论坛上解释)fio是使用命令在另一台主机上克隆磁盘dd,我计划只处理这个副本,而不是杀死更多的目标磁盘。我幸运的是我知道我的分区是如何构造的,我对此进行了跟踪。所以问题是,如何重新创建它而不删除比我已经删除的更多内容,并尝试恢复该主机上剩余的内容。磁盘的写入速度总体为 1000MB/s,所以当它运行 60 秒时,假设我删除了该磁盘上的 60 到 70GB 数据,并且由于根分区约为 1.8TB,我希望“数据“LVM 内的卷完好无损。您对此有何看法?

谢谢大家的帮助,不要打这个该死的白痴,我想回收旧服务器作为我的备用服务器,而不想面对当前的情况,这不是很荒谬吗?

在此输入图像描述 在此输入图像描述 在此输入图像描述

编辑:Testdisk似乎找到了“数据”分区的一些痕迹,但他将其视为Linux文件系统,而不是LVM卷(不要注意磁盘的不同卷,我使用了更大的dd磁盘来源一)。

所以看起来好像有什么东西留下了痕迹。一个(也许)愚蠢的想法,一位朋友提议grep在磁盘上使用一个函数来寻找元数据文件,它是否总是以相同的文本开始?这可能是一些可行的事情吗? 在此输入图像描述

相关内容