收起左侧

【eaves】在fnOS上使用原生btrfs(一)

4
回复
729
查看
[ 复制链接 ]

5

主题

12

回帖

0

牛值

fnOS系统内测组

2025-6-5 01:03:17 显示全部楼层 阅读模式

前言

这是part1,part2是更换硬盘,懒得写了改天更新

不是新手向的,不是新手向的,不是新手向的

mdadm挺稳定的,mdadmin挺稳定的,mdadm挺稳定的

fnOS的文件系统嵌套的层数有点过分,用着一直不是很痛快,他的文件系统是这样套娃的:

/dev/sdX -> mdadm(raid) -> lvm -> btrfs
image.png

由于fnOS的盘换了系统能直接识别,所以一定会在一些地方留下标记,比较显然的就是vgname的格式:trim_{uuid},用fapolicyd记录一下trim是怎么创建存储空间的

吐槽一下自己,好像没拿fapolicy来做过audit,全用来分析软件行为了

image.png

image.png

可以看到过程中除了vgname=trim_{uuid} lvname=0外,trim进程没有留下别的tag

大胆推测小心取证,只要我们的vgname和lvname符合上述规律,飞牛就可以在/dev/mapper里识别到trime_{uuid}-0,只要trim支持这个lv最后做成的格式,就可以使用了

已经帮大家试过了,结论就是目前只支持ext4和btrfs,前端有报错,就懒得用fapolicyd看了, 应该是写死在trim的二进制程序里的,fapolicyd也看不到啥
image.png

所以按理来说,xfs的支持真的有手就行,只差一个挂载了,不知道飞牛团队什么时候能安排一下

操作步骤

pvcreate

pvcreate /dev/sdX

image.png

vgcreate

uuidgen |awk '{gsub("-","_",$1); print "trim_"$1}
vgcreate trim_{uuid} /dev/sdX

image.png

lvcreate

lvcreate -l +100%FREE -n 0 -y trim_{uuid}/dev/sdX

image.png

mkfs.btrfs

mkfs.btrfs \
  -d raid0 \
  -m raid1 \
  /dev/trim_77613c80_e0c3_4e95_8f6e_114ae5b7330d/0 \
  /dev/trim_77613c80_e0c3_4e95_8f6e_114ae5b7330d/1 \
  /dev/trim_77613c80_e0c3_4e95_8f6e_114ae5b7330d/2

image.png

尝试挂载

image.png

另外两个盘会提示未挂载

重启看看有没有问题

image.png升级看看有没有问题

image.png

good

因为没有套一层mdadm,可以直接当条带用了,对于重要文件可以做多副本或raid5

btrfs subvolume create /vol1/1000/data
btrfs property set /vol1/1000/data disk_space raid5

已知问题

image.png

image.png

收藏
送赞
分享

本帖子中包含更多资源

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

x

3

主题

193

回帖

0

牛值

小有名气

2025-6-5 11:49:56 显示全部楼层

这是不是意味着 ZFS又能进一步了?

和zfs没啥关系,方便利用btrfs的特性罢了,比如我不需要对所有数据进行保护,但是希望部分重要数据多副本  详情 回复
2025-6-5 12:52

5

主题

12

回帖

0

牛值

fnOS系统内测组

2025-6-5 12:52:49 楼主 显示全部楼层
yyywd 发表于 2025-6-5 11:49
这是不是意味着 ZFS又能进一步了?

和zfs没啥关系,方便利用btrfs的特性罢了,比如我不需要对所有数据进行保护,但是希望部分重要数据多副本

1

主题

2

回帖

0

牛值

江湖小虾

2025-6-15 18:08:19 显示全部楼层

madam都去掉了,LVM 作用也不大,直接用 btrfs 的 raid0/1 好了。可惜飞牛没办法直接管理和使用,我在用的 Debian NAS ,就是直接用 btrfs RAID1,一直想换飞牛但是这里解决不了。

请教一下设置这个属性能让子卷使用 RAID5 吗?我在文档和网上找,没有找到这个属性的作用。

btrfs property set /vol1/1000/data disk_space raid5
不用管那个,btrfs没有办法按subvol同步硬盘,命令有问题忽略即可。 lvm是为了让fnOS读到trim_uuid,让他以为这是飞牛创建和管理的,不然会识别为外部硬盘 官方不解耦没法玩,我折腾不动了,最近倒是对redhat的文件  详情 回复
2025-6-16 23:00

5

主题

12

回帖

0

牛值

fnOS系统内测组

2025-6-16 23:00:36 楼主 显示全部楼层
时空_tGojJ 发表于 2025-6-15 18:08
madam都去掉了,LVM 作用也不大,直接用 btrfs 的 raid0/1 好了。可惜飞牛没办法直接管理和使用,我在用的  ...

不用管那个,btrfs没有办法按subvol同步硬盘,命令有问题忽略即可。
lvm是为了让fnOS读到trim_uuid,让他以为这是飞牛创建和管理的,不然会识别为外部硬盘
官方不解耦没法玩,我折腾不动了,最近倒是对redhat的文件系统解决方案挺感兴趣的(https://people.redhat.com/pladd/ ... system_Features.pdf),反正个人五个免费license
之前飞牛的文件系统还做过这个尝试,但是对btrfs不熟悉怕有意料之外的错误,没有继续往下折腾了
```
dd if=/dev/zero of=~/vdisk bs=1M count=1024 conv=sparse
losetup /dev/loop0 /dev/vdisk
kpartx -av /dev/loop0
pvcreate /dev/loop0
vgcreate /dev/loop0
vgcreate trim_raid /dev/loop0
lvcreate -n 0 trim_raid -l +100%free -y
# 省略btrfs device add,btrfs property set这个loop0的文件系统只读
vim /etc/systemd/system/vdisk-setup.service
'''
[Unit]
Description=Setup Virtual Disk Loop Device
Before=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/losetup /dev/loop0 /root/vdisk
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
'''
vi /etc/systemd/system/trim_file_monitor.service
'''
After=trim_main.service
+ After=vdisk-setup.service

[Service]
'''
systemctl start vdisk-setup.service
systemctl enable vdisk-setup.service
```
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则