菜单

Administrator
发布于 2026-05-04 / 1 阅读
0
0

NAS系统重新搭建

之前家里的自组nas一直都用的都是飞牛的系统,结果被报出严重漏洞,而且牛子本来就是闭源的,想着系统这一块还是更多掌握在自己手里更好,于是打算给nas换一个系统。

系统的选择

系统这一块首先肯定得是linux,至于选择哪个发行版就令人犹豫了。就我个人而言,日常使用的是arch,但是滚动更新的模式肯定不利于稳定,所以pass掉这个选择,那么剩下的就是debain系和RHEL系之间的选择了。简单考虑了一下,最后选择了RHEL系的AlmaLinux,主要看它风评不错。

遇到大问题

系统的安装肯定是一下子就装好了,不过紧接而来的就是花了我一整天时间的第一个坑。在阐述这个坑之前,我得先介绍一遍基本情况。

之前我在飞牛上有两个HHD和一个SSD,分别是10TB,4TB和1TB。我在SSD上安装了飞牛系统,而上面剩下的空间就用来做SSD缓存加速。另外两个HHD就分别创建了两个存储空间,并且使用btrfs(飞牛推荐的)。虽然有两个HHD,但是并没有选择组raid,因为当时不熟(现在也不熟)。总之因为SSD只装了系统没有我的任何重要数据,所以我当时我认为我不需要备份数据直接刷掉SSD就可以了(虽然事后证明确实是这样,但是重要数据最好还是要备份一下的),结果,在我尝试挂载的时候,我就傻眼了。

首先我运行了一下 lsblk,想看一看磁盘的结构。

sda 8:0 0 10.9T 0 disk 
└─sda1 8:1 0 10.9T 0 part 
  └─md126 9:126 0 10.9T 0 raid1 
sdb 8:16 0 3.6T 0 disk 
└─sdb1 8:17 0 3.6T 0 part 
  └─md127 9:127 0 3.6T 0 raid1

嗯, 那应该就是md126和md127了,不过为什么会有raid1啊,算了不管了,先挂载再说。

sudo mount /dev/md126 /vol1 
mount: /vol1: unknown filesystem type 'LVM2_member'. dmesg(1) may have more information after failed mount system call.

嗯😋,嗯😱?

LVM2_member是什么玩意,我不是btrfsm。当时脑子一片空白,总之先问问万能的chatgpt。

按照gpt的说法,/dev/md126 现在不是“文件系统分区”,而是 LVM 物理卷(PV)。于是顺着AI的方法,确认一下磁盘的真实结构。

sudo vgchange -ay
sudo pvs
sudo vgs
sudo lvs

结果,什么都没有,看起来现在情况有点不太乐观,但是如果是元数据加载不出来的话,我的真实数据应该还在,还不至于全部木大。但是从此刻开始chatgpt就开始打转转了,一直困在了怎么加载元数据这一块,确实,如果meta data加载不出来,就什么也做不了。

由于一直没有什么思路,于是我就做了一个艰难的决定,把飞牛刷回去,既然是飞牛创建的,那它一定能读出来。结果不负众望,它真读出来了。

sda 10.9T disk 
└─sda1 10.9T part linux_raid_member 
 └─md126 10.9T raid1 LVM2_member 
  └─trim_66c01ff8_1f95_4653_9472_afd7a93fc42f-0 10.9T lvm 
btrfs /vol1 
sdb 3.6T disk 
└─sdb1 3.6T part linux_raid_member 
 └─md127 3.6T raid1 LVM2_member 
  └─trim_9becce1e_6668_4cc8_b07b_2f435c509ee8-0 3.6T lvm 
btrfs /vol2

嗯,现在很清晰了。之所以显示LVM2_member,因为它真的是一个LVM的member。这里不得不解释一下什么是LVM了。

简单来讲,LVM(逻辑卷管理器)可以将磁盘或者分区抽象成逻辑上的一个卷LV。真实的磁盘或者分区会被安排成PV(物理卷),PV会组成VG(卷组),而LV就是在PV上面分出来的,这样子在逻辑卷上创建文件系统就可以正常使用了。LV可以很简单的动态扩容不需要重新分区,而且可以把多个磁盘合并成大逻辑卷,可以说非常好用。

于是,我们就可以解析出这个结构了。简单来说,两个磁盘分别被分了一个占用全部空间的分区,然后分区被分别扔进了一个raid,然后两个raid分别被扔进了一个VG,然后两个VG被分别做成了LV,LV被做成了btrfs。很好,我们已经充分的理解了这个结构了。

好个鬼啊!这不是脱裤子放屁吗。它写的raid1,但是其实一个raid里就放了一个磁盘,这两个磁盘给放在两个raid里面了,然后LVM也管了个寂寞,就是给两个磁盘的raid全分配了做了btrfs。这一套链路下来,本质上就是两个磁盘分了两区而已啊。

当然,这也不能怪牛子。nas这种系统,安全可靠的冗余还是很有必要的。虽然raid1只是套了个壳,但是说不定以后硬盘就多了。不过,现在问题依然没有解决,就算我们知道了它的结构,Alma上面也没法加载出来啊。算了,总之先把信息记下来吧。

突破口

又是经历了漫长的gpt的打转转,终于找到了突破口。在AI的建议下我运行了sudo pvscan -vvv强制扫描metadata,然后......

/dev/md126: Skipping (deviceid)
/dev/md127: Skipping (deviceid)
Scanning 0 devices for VG info
No matching physical volumes found

没错,它们都被skipped了🤨。

这其实是因为RHEL的LVM Devices File机制。简单来说,有一个/etc/lvm/devices/system.devices ,里面记录了一份白名单,明确告诉 LVM 只扫描哪些块设备,而不是扫描系统上的所有设备。当然,我的两个硬盘自然是不在里面的,不如说根本就是空的。

sudo lvmdevices --adddev /dev/md126
sudo lvmdevices --adddev /dev/md127

然后就正常挂载了。复杂的问题往往拥有着最简单的原因。

ps:llm总是喜欢详细的回答,但是又导致上下文过长注意力直接完全分散了,恶性循环了属于是。

事后

虽然现在是能用了,但是之前也说了,有些脱裤子放屁。之后得找个时间重构一下这个存储架构,不过现在没空间能装下了所有数据😩,等什么时候加了硬盘再说吧。


评论