收起左侧

针对SSD缓存池丢失,造成存储空间不可用的恢复方法

13
回复
289
查看
[ 复制链接 ]

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 16:37:15 显示全部楼层 阅读模式

本人初入牛NAS

昨天心血来潮,给小牛升级个内存,没关机,直接拔的电源,(重点啊,直接断 电)

系统盘装在SSD上,有空余空间,就分配给了不同的存储空间上(一定不要用系统SSD,最好单独一块SSD,血的教训)

内存升级完开机,就找不到引导了,检查时文件损坏了,只能修复或者重装,(这只是第一步坑)

重新安装FNOS就不赘述了,装完之后登录进去绝望的来了(如下图)
mmexport1752395588316.jpg

存储空间无法挂载了呗,提示缓存已经损坏了但是咱们删除缓存又提示

mmexport1752395583701.jpg

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 16:49:26 楼主 显示全部楼层

看到这里,大部分牛友是不是已经开始找各种数据恢复软件了呢?

要解决这个问题,咱们要了解一下造成这个问题的原理,

基础原理就不说了,实际就是SSD空余的空间被咱们分配给了存储空间,在存储空间VG信息里,记录SSD的PV,但是SSD系统重装了,或者SSD损坏了,导致记录缓存池的PV变成无效的了。

那咱们怎么办呢?

我用了两种方法来恢复。但是需要你有一些Linux操作的基础,对VG的概念有一定了解

两种方法都是挂载VG出来,

btrfs restore -v /dev/mapper/trim_f1ae1363_6f27_47ce_8cb7_04347f557d77-0_corig /mnt/restore_dir

btrfs restore -v /你挂载的逻辑卷名称 /你保存的路径/(要求有足够空间),这个是没有任何图形化界面的,看不到文件树,但是你在你保存的路径上,可以实时看到你正在恢复的文件和文件夹。

这个操作还是比较费时间的,我的存储空间2,保存数据,用了这个方式,时间太久,所以不推荐。

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 16:57:12 楼主 显示全部楼层

咱们现在说说第二种方法,前面说了一些基础的理论,那咱们的存储空间,可以认为就是一个VG,VG配置里会记录里面有多少PV,raid几,等等信息。

哪咱们就开始尝试了,
# 查看所有块设备及挂载情况
lsblk
sdb                                                 8:16   0  12.7T  0 disk   
**─sdb1                                              8:17   0  12.7T  0 part   
  **─md127                                           9:127  0  12.7T  0 linear 
    **─trim_f1ae1363_6f27_47ce_8cb7_04347f557d77-0 253:1    0  12.7T  0 lvm    /vol1


# 查看当前物理卷状态
pvs

root@jackOS:~# pvs
  PV         VG                                        Fmt  Attr PSize    PFree
  /dev/md0   trim_698181f1_742b_4d94_8504_95370511c2d7 lvm2 a--  <931.27g    0 
  /dev/md127 trim_f1ae1363_6f27_47ce_8cb7_04347f557d77 lvm2 a--    12.73t    0 

# 查看卷组状态
vgs

root@jackOS:~# vgs
  VG                                        #PV #LV #SN Attr   VSize    VFree
  trim_698181f1_742b_4d94_8504_95370511c2d7   1   1   0 wz--n- <931.27g    0 
  trim_f1ae1363_6f27_47ce_8cb7_04347f557d77   1   1   0 wz--n-   12.73t    0 

# 查看逻辑卷状态
lvs -a -o +devices

root@jackOS:~# lvs -a -o +devices
  LV   VG                                        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices  
  0    trim_698181f1_742b_4d94_8504_95370511c2d7 -wi-ao---- <931.27g                                                     /dev/md0(0)  
  0    trim_f1ae1363_6f27_47ce_8cb7_04347f557d77 -wi-ao----   12.73t                                                     /dev/md127(0)

先对你自己的存储设备做个摸底,
确认一下你要恢复的设备存在,且正常,
我这里是要恢复/dev/md127

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 17:04:42 楼主 显示全部楼层

确认完你的设备正常,确认你的逻辑卷信息,我的逻辑卷trim_f1ae1363_6f27_47ce_8cb7_04347f557d77,请根据你自己的进行操作、

导出VG的元数据

命令:vgcfgbackup -f /vol00/Expansion/backup-original.txt trim_f1ae1363_6f27_47ce_8cb7_04347f557d77

vgcfgbackup -f /你保存的位置.txt (你的逻辑卷名)

vi命令,打开你导出的元数据,

我的元数据内容

contents = "Text Format Volume Group"
version = 1

description = "Fixed VG metadata to remove missing cache pool and convert stripes to linear"

creation_host = "jackOS"
creation_time = 1752340931

trim_f1ae1363_6f27_47ce_8cb7_04347f557d77 {
id = "CL7sDX-rfT4-6rhe-8qKh-VxBU-tvlN-JTqqO0"
seqno = 18
format = "lvm2"
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 4096
max_lv = 0
max_pv = 0
metadata_copies = 0

physical_volumes {

	pv0 {
		id = "MWNY0W-P**-5kT3-31Qs-oGsL-Cw2N-dSWYRJ"
		device = "/dev/md127"

		status = ["ALLOCATABLE"]
		flags = []
		dev_size = 27344496640
		pe_start = 2048
		pe_count = 3337951
	}
}

logical_volumes {

	0 {
		id = "wVNnXR-RGZw-gj2U-Tv5y-XLXA-rRSS-RP9YTt"
		status = ["READ", "WRITE", "VISIBLE"]
		flags = []
		creation_time = 1751799410
		creation_host = "jackOS"
		segment_count = 1

		segment1 {
			start_extent = 0
			extent_count = 3337951
			stripe_count = 1

			type = "linear"

			stripes = [
				"pv0", 0
			]
		}
	}

	0_corig {
		id = "M8RmKY-1WDQ-X5fm-weLf-B5PG-ws0O-Q0hxcY"
		status = ["READ", "WRITE"]
		flags = []
		creation_time = 1751801621
		creation_host = "jackOS"
		segment_count = 1

		segment1 {
			start_extent = 0
			extent_count = 3337951
			stripe_count = 1

			type = "linear"

			stripes  = [
				"pv0", 0
			]
		}
	}
}

}

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 17:08:56 楼主 显示全部楼层

咱们解决思路是什么,是将缓存池的PV删除掉,

x# Generated by LVM2 version 2.03.16(2) (2022-05-18): Sun Jul 13 01:22:11 2025

contents = "Text Format Volume Group"
version = 1

description = "Fixed VG metadata to remove missing cache pool and convert stripes to linear"

creation_host = "jackOS"
creation_time = 1752340931

trim_f1ae1363_6f27_47ce_8cb7_04347f557d77 {
	id = "CL7sDX-rfT4-6rhe-8qKh-VxBU-tvlN-JTqqO0"
	seqno = 18
	format = "lvm2"
	status = ["RESIZEABLE", "READ", "WRITE"]
	flags = []
	extent_size = 8192
	max_lv = 0
	max_pv = 0
	metadata_copies = 0

	physical_volumes {
		pv0 {
			id = "MWNY0W-P**-5kT3-31Qs-oGsL-Cw2N-dSWYRJ"
			device = "/dev/md127"

			status = ["ALLOCATABLE"]
			flags = []
			dev_size = 27344496640
			pe_start = 2048
			pe_count = 3337951
		}
	}

	logical_volumes {
		0 {##修改这里##
			id = "wVNnXR-RGZw-gj2U-Tv5y-XLXA-rRSS-RP9YTt"
			status = ["READ", "WRITE", "VISIBLE"]
			flags = []
			creation_time = 1751799410
			creation_host = "jackOS"
			segment_count = 1

			segment1 {
				start_extent = 0
				extent_count = 3337951
				stripe_count = 1(####添加内容####)

				type = "linear"####这里修改成linear####

				stripes = [
					"pv0", 0
				]
			}
		}
	}
}

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 17:11:46 楼主 显示全部楼层

分析并修正元数据文件

打开备份文件,定位 logical_volumes 部分,发现:

  • 主逻辑卷 0 条带类型为 linear,配置正常。如果不是请修改
  • 缓存池逻辑卷 0_corig 可能已丢失或损坏,导致恢复错误。
  • 部分 stripe_countstripes 配置不匹配,影响恢复。

修正方案:

  • 删除或注释掉 0_corig 逻辑卷部分。
  • 确保 0 逻辑卷 segment1 配置中,stripe_count = 1stripes[ "pv0", 0 ]
  • 保留物理卷 pv0,对应设备 /dev/md127
  • 修正 max_lvmax_pv 字段,根据实际情况可暂设为 0。
0_corig {
		id = "M8RmKY-1WDQ-X5fm-weLf-B5PG-ws0O-Q0hxcY"
		status = ["READ", "WRITE"]
		flags = []
		creation_time = 1751801621
		creation_host = "jackOS"
		segment_count = 1

		segment1 {
			start_extent = 0
			extent_count = 3337951
			stripe_count = 1

			type = "linear"(###这里应该是缓存模式要修改的,如果是整个删除,就不用管了)

			stripes  = [
				"pv0", 0
			]
		}
	}
}信息删除了,这段信息应该就是SSD缓存池的PV,这里请各位结合自己的情况进行操作。

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-13 17:23:38 楼主 显示全部楼层

咱们使用修正后的元数据恢复卷组

vgcfgrestore -f /vol00/Expansion/backup-fixed-linear.txt trim_f1ae1363_6f27_47ce_8cb7_04347f557d77

根据自己的的文件路径和卷组名称修改

一般会成功输出

Restored volume group trim_f1ae1363_6f27_47ce_8cb7_04347f557d77.

root@jackOS:/# vgcfgrestore -f /vol00/Expansion/backup-fixed-linear.txt trim_f1ae1363_6f27_47ce_8cb7_04347f557d77
Restored volume group trim_f1ae1363_6f27_47ce_8cb7_04347f557d77.

后面就一系列操作

激活VG卷组逻辑卷 、验证状态

vgchange -ay trim_f1ae1363_6f27_47ce_8cb7_04347f557d77

root@jackOS:/# lvdisplay trim_f1ae1363_6f27_47ce_8cb7_04347f557d77
--- Logical volume ---
LV Path /dev/trim_f1ae1363_6f27_47ce_8cb7_04347f557d77/0
LV Name 0
VG Name trim_f1ae1363_6f27_47ce_8cb7_04347f557d77
LV UUID wVNnXR-RGZw-gj2U-Tv5y-XLXA-rRSS-RP9YTt
LV Write Access read/write
LV Creation host, time jackOS, 2025-07-06 18:56:50 +0800
LV Status NOT available
LV Size 12.73 TiB
Current LE 3337951
Segments 1
Allocation inherit
Read ahead sectors auto

lvs -a -o +devices

root@jackOS:/# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
0 trim_698181f1_742b_4d94_8504_95370511c2d7 -wi-a----- <931.27g /dev/md0(0)
0 trim_f1ae1363_6f27_47ce_8cb7_04347f557d77 -wi------- 12.73t /dev/md127(0)

后面就是正常挂载了,如果你在飞牛OS系统看不到存储空间,或者存储空间还有问题,

那就给他直接挂载到系统的上,以只读的方式,挂载上去,先看看文件是否都在,

如果OS系统里可以看到,存储空间显示未挂载,可以尝试挂载。

重要数据最好赶紧保存。

重要数据最好赶紧保存。

重要数据最好赶紧保存。

重要数据最好赶紧保存。

重要数据最好赶紧保存。

重要数据最好赶紧保存。

0

主题

12

回帖

0

牛值

江湖小虾

2025-7-18 17:22:39 显示全部楼层

确实是高手,看得都头晕。

实际就是修改VG的配置文件,我只是把配置给写出来了,只是一个思路,遇到这个问题,大家可以按这个思路去解决尝试一下  详情 回复
2025-7-19 17:00

1

主题

27

回帖

0

牛值

江湖小虾

2025-7-19 17:00:13 楼主 显示全部楼层
cohanfn 发表于 2025-7-18 17:22
确实是高手,看得都头晕。

实际就是修改VG的配置文件,我只是把配置给写出来了,只是一个思路,遇到这个问题,大家可以按这个思路去解决尝试一下

1

主题

7

回帖

0

牛值

江湖小虾

我也是系统SSD上,看有空余空间,就将空余空间做成缓存了,如果这样的话,是不是为了不给自己找麻烦,就不要做缓存比较好呢?毕竟看这一串恢复,头都绕晕进去了。。。。

缓存建议单独一块SSD,只做缓存。  详情 回复
3 天前

1

主题

27

回帖

0

牛值

江湖小虾

3 天前 楼主 显示全部楼层
dt. 发表于 2025-7-29 09:51
我也是系统SSD上,看有空余空间,就将空余空间做成缓存了,如果这样的话,是不是为了不给自己找麻烦,就不 ...

缓存建议单独一块SSD,只做缓存。
可以远程吗 有偿 我现在提示的是硬盘非etx4格式  详情 回复
3 天前

0

主题

2

回帖

0

牛值

江湖小虾

可以远程吗有偿

0

主题

2

回帖

0

牛值

江湖小虾

♈⌒༄ེུ 发表于 2025-7-29 21:23
缓存建议单独一块SSD,只做缓存。

可以远程吗 有偿 我现在提示的是硬盘非etx4格式
你之前的存储信息是啥,raid几?几块盘?文件系统类型是什么的,数据是否有完整备份?  详情 回复
3 天前

1

主题

27

回帖

0

牛值

江湖小虾

3 天前 楼主 显示全部楼层
βios 发表于 2025-7-29 22:26
可以远程吗 有偿 我现在提示的是硬盘非etx4格式

你之前的存储信息是啥,raid几?几块盘?文件系统类型是什么的,数据是否有完整备份?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则