Delta的技术笔记 - 默认分类
type: channel
link: https://www.deltanote.site/index.php/category/default/
description: 只是一个默认分类
items: 飞牛 fnOS 深度解析（三）：系统目录结构与技术栈全览
items: 飞牛 fnOS 深度解析（二）：存储架构深挖——ZFS、LVM 与自研 trimafs 联合文件系统
items: 飞牛 fnOS 深度解析（一）：系统基础与启动流程全揭秘

飞牛 fnOS 深度解析（三）：系统目录结构与技术栈全览
type: item
date: 2026-09-03T18:36:59+08:00
description: 本系列文章将对国产 NAS 系统飞牛 fnOS 进行全方位深度解析。本文是系列第三篇，聚焦系统目录结构与技术栈，详细解析 fnOS 的安装目录布局、100+ 自研程序分类、前端技术栈、配置文件体系，以及二次开发的目录布局参考。阅读本文前，建议先阅读前两篇：飞牛 fnOS 深度解析（一）：系统基础与启动流程全揭秘飞牛 fnOS 深度解析（二）：存储架构深挖——ZFS、LVM 与自研 trimafs 联合文件系统前言前两篇我们解析了 fnOS 的系统基础、启动流程和存储架构，对系统的整体面貌有了认知。但如果要基于 fnOS 做二次开发，或者要快速解构另一台 NAS 设备，还需要搞清楚一个关键问题：厂商的东西都放在哪？Linux 发行版有标准的目录规范（FHS），但 NAS 厂商通常会把自己的自研程序、配置、前端文件、内核模块等放在一个统一的目录下，和系统自带的东西隔离开。找到这个目录，就找到了厂商的全部家当。本文将带大家完整解析 fnOS 的安装目录 /usr/trim/，看看里面到底有什么、怎么组织的、用了哪些技术栈，以及对二次开发有什么参考价值。测试环境：fnOS 1.2.0505，x86_64 平台。一、fnOS 安装根目录总览从启动流程的分析中我们已经知道，fnOS 的核心程序在 /usr/trim/bin/ 下。我们来看看整个 /usr/trim/ 目录的结构：ls -la /usr/trim/输出：drwxr-xr-x 12 root root 4096 Sep 3 08:03 . drwxr-xr-x 14 root root 4096 Sep 3 08:00 .. drwxr-xr-x 5 root root 4096 Sep 3 08:03 bin drwxr-xr-x 2 root root 4096 Sep 3 07:59 config drwxr-xr-x 7 root root 4096 Sep 3 08:03 etc drwxr-xr-x 6 root root 4096 Sep 3 07:59 lib drwxr-xr-x 3 root root 4096 Sep 3 08:03 logs drwxr-xr-x 8 root root 4096 Sep 3 08:00 modules drwxr-xr-x 13 root root 4096 Sep 3 08:03 nginx drwxr-xr-x 6 root root 4096 Sep 3 07:59 share drwxr-xr-x 11 root root 4096 Sep 3 07:59 var drwxr-xr-x 9 root root 4096 Sep 3 08:03 www/usr/trim/ 下有 11 个子目录，整体布局参考了 Linux 的 FHS 标准，但做了简化和定制：目录作用类比系统目录bin/所有自研程序和脚本（100+个）/usr/bin/etc/服务级配置文件（40+个）/etc/lib/库文件/usr/lib/logs/日志/var/log/modules/内核模块（多个版本）/lib/modules/nginx/自编译 Nginx（独立目录）—share/共享文件/usr/share/var/各服务运行时数据/var/lib/www/Web 前端文件—config/运行时配置—logs/日志—设计思路很清晰：把所有 fnOS 自研的东西统一放在 /usr/trim/ 下，和 Debian 系统自带的东西完全隔离。这样做的好处：升级方便：系统升级时，直接替换 /usr/trim/ 目录就行，不会影响系统自带的文件卸载干净：如果要移除 fnOS，删掉 /usr/trim/ 目录和相关的 systemd 服务就行结构清晰：开发者一眼就能找到自研程序、配置、前端文件的位置权限可控：可以对整个 /usr/trim/ 目录统一设置权限下面我们逐个目录详细解析。二、bin 目录：100+ 自研程序全览bin/ 是 fnOS 最核心的目录，所有自研程序和脚本都在这里。ls /usr/trim/bin/输出有 100+ 个文件，包括二进制程序和 shell 脚本。我们按功能分类整理：2.1 核心基础设施程序作用trim核心主进程（trim_main.service 执行的就是它）rpc_brokerRPC 消息代理（服务间通信的总线）triminit / triminitd系统初始化（一次性 + 常驻）trimacl飞牛自研 ACL 工具（跨文件系统统一权限）trimtools飞牛工具集handlers事件处理器2.2 Web 与 API程序作用trim_http_cgiHTTP CGI 接口trim_open_gateway开放…

飞牛 fnOS 深度解析（二）：存储架构深挖——ZFS、LVM 与自研 trimafs 联合文件系统
type: item
date: 2026-09-03T18:24:00+08:00
description: 本系列文章将对国产 NAS 系统飞牛 fnOS 进行全方位深度解析。本文是系列第二篇，聚焦存储架构，从物理盘、RAID、LVM 到文件系统，一层一层剥开 fnOS 的存储底层，重点解析飞牛自研的 trimafs 联合文件系统和 trimacl 权限机制。阅读本文前，建议先阅读第一篇：飞牛 fnOS 深度解析（一）：系统基础与启动流程全揭秘前言存储是 NAS 系统的核心。一台 NAS 不管界面多漂亮、功能多丰富，底层的存储架构决定了它的数据安全性、扩展性和性能上限。群晖有 SHR，威联通有 Qtier，飞牛 fnOS 的存储方案是什么？官方宣传里提到的"存储池"、"智能合并"背后是什么技术？是用的开源 ZFS？还是 mdadm + LVM 的传统方案？还是自研了什么东西？本文将通过 SSH 登录系统，用最原始的命令行方式，从物理盘到文件系统，一层一层解析 fnOS 的存储架构。测试环境：fnOS 1.2.0505，x86_64 平台，4 块硬盘（1×NVMe SSD 119G + 1×SATA 931G + 2×SATA 465G），8G 内存。一、存储架构总览先看最终的挂载情况：df -h关键输出：Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 63G 14G 46G 24% / /dev/nvme0n1p1 93M 8.1M 85M 9% /boot/efi trim_6c71e3b3-... 900G 99M 900G 1% /vol2 /dev/mapper/trim_d1c5b5d5-... 932G 15G 915G 2% /vol3 /dev/mapper/trim_a7d015a3-... 56G 25G 29G 47% /vol1 trimafs 1.9T 40G 1.8T 3% /fs可以看到，fnOS 有 4 个数据挂载点：/vol1、/vol2、/vol3、/fs，加上系统盘 /。再看块设备层级：lsblk输出：NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 931.5G 0 disk └─sda1 8:1 0 931.5G 0 part sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part └─md1 9:1 0 931.3G 0 raid0 └─trim_d1c5b5d5_... 253:1 0 931.3G 0 lvm /vol3 sdc 8:32 0 465.8G 0 disk └─sdc1 8:33 0 465.8G 0 part └─md1 9:1 0 931.3G 0 raid0 └─trim_d1c5b5d5_... 253:1 0 931.3G 0 lvm /vol3 nvme0n1 259:0 0 119.2G 0 disk ├─nvme0n1p1 259:1 0 94M 0 part /boot/efi ├─nvme0n1p2 259:2 0 63.9G 0 part / └─nvme0n1p3 259:3 0 55.2G 0 part └─md0 9:0 0 55.2G 0 raid1 └─trim_a7d015a3_... 253:0 0 55.2G 0 lvm /vol1综合这两条命令，fnOS 的存储架构是一个四层混合架构：┌─────────────────────────────────────────────────────────────┐ │ 挂载点（用户可访问） │ │ / /vol1 /vol2 /vol3 /fs │ └──┬────────┬──────────┬───────────┬────────────┬──────────────┘ │ │ │ │ │ ┌──▼────────▼──────────▼───────────▼────────────▼──────────────┐ │ 文件系统层 │ │ ext4 ext4 ZFS ext4 trimafs(联合层) │ └──┬────────┬──────────┬───────────┬────────────┬──────────────┘ │ │ │ │ │ ┌──▼────────▼──────────▼───────────▼────────────▼──────────────┐ │ 逻辑卷层 │ │ 无 LVM 无(ZFS自带) LVM 无 │ └──┬────────┬──────────┬───────────┬────────────┬──────────────┘ │ │ │ │ │ ┌──▼─────…

飞牛 fnOS 深度解析（一）：系统基础与启动流程全揭秘
type: item
date: 2026-09-03T18:18:00+08:00
description: 本系列文章将对国产 NAS 系统飞牛 fnOS 进行全方位深度解析，从系统底层、存储架构、文件服务、用户权限，到 Web 前后端架构、应用生态、镜像定制，力争讲清楚每一个模块"是什么、怎么实现、配置文件在哪、关键命令是什么"。本文是系列第一篇，聚焦系统基础信息摸底与启动流程追踪。前言飞牛 fnOS 是近年来国产 NAS 系统中关注度较高的一款，以易用的 Web 管理界面和丰富的应用生态著称。但作为一个基于 Linux 的 NAS 系统，它的底层到底做了哪些定制？启动流程是怎样的？Web 界面背后跑着哪些服务？本系列将通过 SSH 登录系统，用最原始的命令行方式，一层一层剥开 fnOS 的外壳，看看里面到底是什么。测试环境：fnOS 1.2.0505，x86_64 平台，4 块硬盘（1×NVMe SSD + 3×SATA HDD），8G 内存。一、系统基础信息摸底1.1 系统版本与内核首先看系统版本：cat /etc/os-release输出：PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debianfnOS 基于 Debian 12 (bookworm)，但有意思的是，/etc/os-release 里完全没有 fnOS 自己的版本标识，是纯 Debian 的内容。fnOS 的版本号存在别的地方（后面会提到）。再看内核：uname -a输出：Linux DIO 6.18.18.c1032-trim #1032 SMP PREEMPT_DYNAMIC Fri Aug 21 01:49:29 UTC 2026 x86_64 GNU/Linux这里有几个关键点：内核版本 6.18.18，非常新，远高于 Debian 12 自带的 6.1 内核c1032-trim 后缀，这是飞牛自己的编译标记，说明内核是飞牛定制编译的PREEMPT_DYNAMIC，动态抢占内核，偏向桌面/响应式优化，不是服务器吞吐量优先编译时间 2026-08-21，非常新结论：fnOS 没有用 Debian 自带内核，而是自己编译了一个很新的 6.18 内核，并打上了自己的标记。1.2 硬件与分区概览lsblk输出：NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 931.5G 0 disk └─sda1 8:1 0 931.5G 0 part sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part └─md1 9:1 0 931.3G 0 raid0 └─trim_d1c5b5d5_... 253:1 0 931.3G 0 lvm /vol3 sdc 8:32 0 465.8G 0 disk └─sdc1 8:33 0 465.8G 0 part └─md1 9:1 0 931.3G 0 raid0 └─trim_d1c5b5d5_... 253:1 0 931.3G 0 lvm /vol3 nvme0n1 259:0 0 119.2G 0 disk ├─nvme0n1p1 259:1 0 94M 0 part /boot/efi ├─nvme0n1p2 259:2 0 63.9G 0 part / └─nvme0n1p3 259:3 0 55.2G 0 part └─md0 9:0 0 55.2G 0 raid1 └─trim_a7d015a3_... 253:0 0 55.2G 0 lvm /vol1这台机器有 4 块硬盘：设备类型大小用途nvme0n1NVMe SSD119.2G系统盘 + vol1sdaSATA 硬盘931.5GZFS 存储池（vol2）sdbSATA 硬盘465.8GRAID0 成员（vol3）sdcSATA 硬盘465.8GRAID0 成员（vol3）存储架构是混合的：系统盘用 NVMe SSD，数据盘同时使用了 mdadm 软 RAID + LVM 和 ZFS 两种方案。这部分我们将在系列第二篇《存储架构深挖》中详细展开。1.3 运行服务统计systemctl list-units --type=service --state=running一共 81 个服务在运行。这个数字相当可观，说明 fnOS 的功能模块拆得很细。快速浏览服务列表，会发现一个明显的规律：fnOS 自研的服务大多以 trim_ 开头，这和内核版本里的 c1032-trim 标记对应上了——"trim" 应该是飞牛的内部代号。二、服务清单…