Jellyfin 数据库后端史诗级更新
坑边闲话:Jellyfin 作为一个开源免费且声誉良好的媒体服务器一直被玩家追捧,然而 Jellyfin 早期与 SQlite 绑定非常深,导致无法丝滑迁移到其他的高级数据库。在数据非常多且数据库查询插入操作很频繁的情况下,SQlite 显现出了巨大的弊端。
哔哩哔哩原文
此前我 follow 这个版本已经很久了,终于,等到了正式版。
Jellyfin 脱胎于 Emby,因此前期的很多代码与 Emby 重复很多,不过这些陈年历史就不讲了。下面单纯围绕媒体服务器的一些特点进行讲解。
此前 Jellyfin 使用的后端数据库是 sqlite,这是一个超级强大的本地数据库,据说其源代码的测试框架有 9000 多万行代码(仅仅是为了测试 sqlite),基本实现了百分百代码覆盖率测试。
然而 sqlite 有个致命问题,那就是无法扩展。注意,不是扩展很难,而且没有任何办法横向扩展。因为 sqlite 基于单个文件。一旦某个进程占有了这个数据库文件并上锁,别人就没办法使用这个数据库。
可怕的是前期的 Jellyfin 完全基于 sqlite 开发,换言之,你的电影元数据、演员元数据全都 ...
成为 B 站创作者 2000 天之后我选择了频道付费
坑边闲话:B 站后台提示我成为 UP 主已经 1999 天了。如果加上我第一个视频的制作筹备时间,总天数已经达到 2000 天。这是一个非常重磅的纪念日。今天我选择把我频道绝大多数与技术教程相关的内容转变为仅付费才可以观看。本文解释我这么做的原因。
1. 为内容付费是时代价值观·
如果一个视频能够让你对某项技术有更深的洞察,或者直接帮助你优化工作流,我想大多数人都会愿意主动打赏:少则点赞投币,多则充电支持。
别人怎么想我不确定,但我自己确实是这样做的。
从成为 UP 主到现在已经 2000 天了。我创作了大量与网络、存储、计算相关的视频,也会不时分享一些对苹果产品和雷电生态的思考。前者往往技术含量极高,其中不少内容可能是你在中文互联网上唯一能找到的高质量资料。为了产出这些视频,我在前期需要投入大量时间学习、编程、排版,再加上录制、后期、发布与日常管理,总体投入可谓巨大。
如果你觉得这些内容对你有价值,我想付费观看属于情理之中。
2. 持续支持我的博客·
技术含量较高的视频,基本都能在我的博客找到相关的图文内容。考虑到博客的受众更广而且博客免费开放、记录细节更丰富,所以我会一直以博 ...
一个很特殊的双万兆雷电5扩展坞
坑边闲话:OWC 一直深耕专业工作室领域,出过不少很有价值的雷电扩展坞。比如知名的 Thunderbolt Pro Dock,当时这个才用 JHL7440 芯片的升级款 Pro Dock 给我留下了深刻的印象。如今 OWC 沿用相同的外观设计,推出了一款支持双万兆电口的雷电 5 扩展坞。
哔哩哔哩原文
OWC,型号:Thunderbolt 5 Dual 10GbE Network Dock
官网地址
看名字就知道,有俩10G万兆口,竟然还都是电口。
后置的两个 10G 网口彼此独立,均采用 AQC113 方案,支持 IEEE 802.1Qav,也就是一种为 audio/video 优化过的 QoS,保证音视频流的实时性。这个功能在 2.5G 网口上是不支持的。
此外这个 dock 砍掉了 CF-express 接口,小工作室拷卡更难受了。不过现在专业剧组为了防止素材流出,原始素材都是直接上锁,让专业 DIT 拷贝并存储在 NAS 上,远程只能挂载代理媒体进行剪辑,不允许直接访问原始素材,所以在剪辑机上弄个 CF-express 可能也显得不太专业。
不过这类设备离普通人很远 ...
Debian 13 系统初始化
坑边闲话:Linux 的系统初始化教程对新手非常有帮助,本文提供一个合适的流程化操作,方便用户使用相关服务。本文遵循最小化安装原则,帮助用户逐步构建自己的 Linux 系统。所谓最小化安装,指的是不添加过多的 package,只包含最基本的系统组件。当然,也不包括图形化界面。
前期必看步骤:使用 ZFSBootMenu 安装 Linux
重装前先备份
若用户是重装系统,请务必记得备份重要数据,比如
zsh 历史记录 ~/.config/zsh/.zhistory
systemd 的自定义条目,如
多容器组合启动服务 harbor.service, minio.service
ZFS 定期快照任务 zfs_snapshot.service
/etc/fstab 的特殊挂载条目
家目录中的工程项目
某些特殊的、只存储在本地的容器镜像孤本
1. 配置常规用户·
遵照 使用 ZFSBootMenu 安装 Linux 指导安装的用户,可以直接跳到本章最后一节,此前的步骤已经轻松地完成了前面的这些内容。
1.1 创建新用户·
最小化安装之后,系统里仅有 root 用户,因此先要在 ...
Debian 13 发布了,有些小事说一下
坑边闲话:感觉 27 岁之后,明显感觉到时间加快,Debian 12 还没用多久,Debian 13 就要出来了。截至笔者编辑这篇文章,Debian 13 已经更新挺长一阵子了。时光易逝,劝君惜取少年时!
哔哩哔哩原文
Debian 13 镜像发布了!
有没有提前升级的小白鼠出来介绍一下经验,没有坑的话我也要升级了!
2023 年的时候升级 bookworm 还是很顺利的,这次据说 bookworm 升 trixie 有 OpenSSH 问题,如果不希望通过 stable-updates 升级 openssh,就只能等 12.12 版本修复问题之后再升级。
另外,trixie 的 tmp 目录默认使用 tmpfs,也就是拿内存的一部分来做存储,以后跑网络文件协议测速可方便了,直接 NFS/SMB 共享 tmp 目录即可,无需使用第三方软件创建内存盘。不过据说默认使用一半内存做 tmpfs,感觉有点激进了,另外不知道会不会和 ZFS 的 ARC 产生冲突。
好消息是 systemd 继续一往无前,吃掉了自动发现和挂载加密文件系统的功能。
这次升级过后,网络接口的名称可能会有变化, ...
Linux 命令行配置 iSCSI target
坑边闲话:iSCSI 块共享协议在数据中心里应用非常广泛,但是许多 NAS 玩家只会在群晖、TrueNAS 等系统上使用 GUI 进行配置。其实在标准的通用 Linux 上配置 iSCSI server 非常简单,理解了原理之后,配置所需的实际步骤非常少。本文详细介绍如何在 Debian 12 系统上配置 iSCSI target.
iSCSI 服务端被称为 target,在 Linux 生态中有不同的 target 代码实现,本文推荐使用现代内核支持的 LIO(Linux-IO Target),这是官方主流方案,稳定、灵活、内核级支持。
常见 target 不同实现的特性如下表所示。
实现方式
服务名称
管理工具
备注
LIO (Linux-IO Target)
内核模块,服务名 rtslib-fb-targetctl
targetcli / targetcli-fb
默认、内核集成、现代系统首选
TGT (SCSI Target Framework)
tgt 服务
tgtadm, tgt-admin
老牌项目,用户态,简单轻量,但不再积极维护
SCST
s ...
哔哩哔哩频道两万订阅纪念
坑边闲话:这是一期 B 站专栏,首发在 B 站。还是老样子,最权威版本以本博客为准。自笔者在 2020 年 4 月 3 日发布第一个随手拍摄的视频开始,到 2025 年 5 月 6 日正式达成两万订阅量,笔者足足花了五年零一个月的时间。对于一个不会整活儿的知识区业余 UP 主,这实在是一个很漫长但很有意义的过程。
B 站的朋友们好啊,最近后台提醒粉丝量达到两万,看到这个消息我是非常开心的。
平时每次看到 B 站创作中心右上角的「成为UP主的第 xxx 天」提醒,我都感觉很不可思议,仿佛前几天才上传第一个视频。
恍然间,五年零一个月就过去了。
1. 自媒体成绩单·
如果做自媒体有一个赚钱成绩单,我想我肯定是不及格。
我在上大学的时候就是知乎用户。大概是 2019 年的某一天,我在知乎看到一个问题:简中互联网是不是已经彻底沦为垃圾场?(大概是这个意思,反正不是很乐观的描述)
我浏览完几个回答后感觉心里很难过,因为当时我还是一个很正直、很傻瓜的热血青年,尚未经历各种现实的毒打。那时我自信满满地立志要从自我做起,输出有价值的内容,绝不复制粘贴一些无从考证、不可复现的内容。
这世界上最珍贵的 ...
对群晖官方认证硬盘的看法
坑边闲话:在企业级存储领域,群晖和威联通都是事实上的小厂,但笔者认为这两家公司颇有世界级正规公司的风范:控制产品销售单价,严禁经销商窜货,配套设施完善,拥有精心设计的多语言官网。最近群晖尝试在 Plus 机型上进行强制硬盘认证,即非 Synology 认证/出品的硬盘将不被系统支持。毫无疑问,这一举措在许多 NAS 玩家中引起了轩然大波。本文将尝试不加任何情绪地对这件事进行分析。
截至 2025 年 4 月 28 日,
参见图 1,在群晖全球官网可以发现,对于较老的机型如 DS923+,官方依然提供第三方硬盘认证列表,支持如下硬盘:
希捷 IronWolf, SkyHawk, SkyHawkAI;
东芝 N300, MN06, MN07, MN08;
西部数据红盘、紫盘;
参见图 2,在群晖中国官网可以发现,对于较新的机型如 DS925+,官方只提供自家的硬盘。虽然不排除 Synology 后面会扩展兼容性列表,但以目前的风向来看,群晖上层大概率是想只允许用户使用自家认证的硬盘。
1. 小小吐槽·
为方便头铁的读者选购群晖认证硬盘,此处提前分析一下群晖认证硬盘的弊端。 ...
漫谈 CloudDrive2 的文件缓冲机制
坑边闲话:这篇文章属于临时起意,后来发现技术上有严重问题。如果你看到这句话,说明问题没有被纠正,请带着批判的眼神来看。
哔哩哔哩原文
此前我在视频里提到 BV1iAPgexEi6 里提到可以使用 Alist/CloudDrive/Rclone/Raidirve 这种网盘工具把网络盘挂载到本地,实现云盘本地化使用。现在我感觉有点过于理想了。
想说的东西很多,今天这篇专栏就当作打草稿,读者且来批判性观看。
1. CD2 的缓存模型·
任何读写模型都有流控机制,哪怕是本地的 PCIe NVMe 硬盘,也会借助 PCIe 协议的 Credit-Based Flow Control 做流控。当然,这不同于 TCP 的滑动窗口,PCIe 流控协议更倾向于低延迟,目标是防止缓冲区溢出。
所以按照这个观点来看,我们的 PC 透过 cd2 往网盘写入数据,cd2 在接收本地的写入请求时,也需要有一个缓存、流控协议,防止本地的文件浏览器或者 rsync 这种 sender 把 cd2 的缓存写爆。
今天我发现一个有趣的现象,cd2 有一个缓存机制:
我一般把它放到 C:\Windwos\temp ...
使用 Sanoid 自动管理 ZFS 快照
坑边闲话:ZFS 快照任务非常关键,然而仅使用手动快照在大多数情况下无法避免意外事件,借助自动化的快照机制,可以有效提高抗风险能力。本文基于 Debian bookworm 系统介绍开源快照管理软件 Sanoid 的使用方法。
1. 快照的自动管理·
此前笔者的快照也是自动化编排的,只是行为比较简单。笔者编写了一个自动执行快照的 Systemd Timer,然后定期执行某个脚本:
在脚本里定义了执行快照的逻辑;
在 Systemd Timer 和 Service 定义执行时间和执行路径。
然而,自己重复造轮子的代价就是会翻车,然后重复解决前人已经解决的问题。因此推荐使用开发多年的工具 Sanoid. 该工具原理与笔者此前的开发工作类似,只是它以 TOML 配置文件对快照任务进行了抽象,而且增加了对快照生命周期的支持,能够自动销毁过期的快照。
2. 安装 Sanoid·
Sanoid 的主要开发语言是 Perl,因此不需要经过复杂的编译即可使用。目前 Sanoid 没有集成到 ZFS 工具链上游,也没有集成到 Debian 发行版的软件包仓库,因此用户需要安装 Debian 打包 ...
使用 ZFSBootMenu 安装 Debian 12 系统
坑边闲话:ZFS 有千般好,但是将 Linux 安装在 ZFS 上仍颇具挑战性。GRUB 2 已支持引导 Linux on ZFS,但只有 Ubuntu 等胆大的发行版内置了 ZFS 启动支持,而 Debian 这种比较尊重开源许可的发行版并不支持。本文介绍使用 ZFSBootMenu 在 ZFS 文件系统上安装 Debian 的方法。注意,本方案仅适用于 x86 架构。
1. 前期准备·
ZFSBootMenu 是一个专为 root-on-ZFS 设计的 Linux bootloader,它支持快照和磁盘加密。ZFSBootMenu 本质上是一个小型的、独立的 Linux 系统,它知道如何在 ZFS 文件系统中查找目标 Linux 系统的内核和 initramfs 镜像。当识别出合适的内核与 initramfs,ZFSBootMenu 会使用 kexec 命令启动该内核。
kexec
kexec 是 Linux 内核中的一个功能,它允许在不经过硬件重新引导的情况下直接加载并启动一个新的内核。这可以显著加快内核的重启过程,因为跳过了固件(BIOS/UEFI)初始化和引导加载程序(如 ...
Linux Samba 文件共享配置与调优
坑边闲话:使用 Linux 系统做文件服务器其实很简单,需要的步骤其实相当少。本文介绍基本的共享配置流程。
1. 安装 SAMBA 服务器·
以 Debian 12 为例安装 samba 服务器:
12sudo apt updatesudo apt install samba
2. 添加 Samba 用户·
smb 是典型的 Client-Server 架构,基于内建的统一身份认证。在使用 smbpasswd 添加用户时,该用户名必须已经存在于 Linux 系统中,即作为一个本地系统用户存在。这是因为 Samba 的用户管理基于系统用户,但它为每个用户单独维护了一个 Samba 用户密码数据库。
如果用户尚不存在,可使用以下命令创建一个新的系统用户:
1sudo useradd -m -s /sbin/nologin <NEW_USERNAME>
-m:创建用户的主目录。
-s /sbin/nologin:指定一个无效的登录 shell 以防止用户直接登录到系统。如果你希望允许用户登录到系统,可以选择其他 shell 如 /bin/bash.
为该用户添加 Samb ...
Linux KVM 虚拟机配置教程
坑边闲话:KVM (Kernel-based Virtual Machine) 是一个基于 Linux 内核的开源虚拟化技术,它在 2006年 由 Avi Kivity 和他的团队开发,并于 2007年 合并到 Linux 内核中,成为主流虚拟化解决方案之一。KVM 使用较为方便,生态非常良好,本文介绍如何在 Linux 上配置并使用 KVM 虚拟机,同时会介绍 Intel VT-D、AMD-V、IOMMU 等硬件功能。
1. 初始化 Linux 系统·
在开始之前,读者需要有一个支持裸机安装的 Linux 系统,本文以 Debian 12 为例。
强烈建议使用最小化安装程序,因为有些新手非常依赖图形化界面配置虚拟机,导致迟迟无法深入理解技术细节,学到最后发现只是学了一个类似 VMware Workstation Pro 的软件。GUI 是用户友好型发明,但是对于学习技术、了解细节、拓展思维并不友好。
1.1 调整 Console 界面字体大小·
最小化安装的 Linux 没有桌面环境,只有一个 console tty,因此建议执行以下命令,将界面字体设置为 Termius,并按 ...
预算不足也可以玩 ZFS NAS
坑边闲话:闲话
哔哩哔哩原文
好几年前我为了不买软路由工控机,琢磨了一套不需要额外硬件的软路由方案,虽然很复杂,但确实有效。BV1Hv411H7WS
最近一段时间也想搞个NAS,但是预算实在有限,于是用这套 GTR7 小主机 Windows 10 系统打造了一个性能还挺不错的 ZFS NAS.
1. 难点在于如何使用物理硬盘。·
Hyper-V 虚拟机可以直接通过块映射的方式使用雷电硬盘,基于相同原理,另一个三星 T5 用来做备份。
该方法的一大好处是后续换了物理 NAS,无需迁移数据,硬盘插上去就能读出来。总的来看,除了 Hyper-V 块设备虚拟化层带来了一些开销,其余方面还是颇为简洁。
可惜的是虚拟化层开销还挺大,再加上雷电转接的 debuff,三星 990 Pro 只剩下四成左右的性能,好在还是可以接受的。
2. 如何让 Windows 也能用一部分 ZFS 特性·
纵然 Windows 有个 dirty 状态的 OpenZFS 移植,而且该构建号称不会丢数据,最多造成蓝屏。但是蓝屏的那一刻就说明有些数据没来得及保存因此丢失。
在 Windows 上直接安装 Open ...
如何代理 Docker 官方镜像的流量
坑边闲话:现代软件的开发、测试、部署基本离不开容器技术,然而大陆地区的防火墙屏蔽了 Docker 官方的 Registry,这无疑给普通开发者带来了很大的负担和痛苦。本文介绍一般场景下绕过防火墙的阻断的方法,帮助开发者较快地访问官方 Docker 镜像平台。
1. 使用 OpenClash 规则集·
作为一个成熟的程序员,应该学会使用 Clash 等代理工具,毕竟良好的技术网站访问体验是增进技术的重要支撑。笔者选择使用 OpenClash 这款 OpenWrt 插件作为主代理工具,用以给局域网中的所有设备提供透明代理服务。
如图 1 所示,在 OpenWrt 的「服务」→「OpenClash」→「覆写设置」→「规则设置」页面,勾选「自定义规则」,随后将如下内容按照图示添加进去。
12- DOMAIN-SUFFIX,docker.com,🔰国外流量- DOMAIN-SUFFIX,docker.io,🔰国外流量
提醒:请查阅你 Clash 配置文件中的国外分流规则的名字,用以替换示例中的「🔰国外流量」。
重启 OpenClash 后,以 docker.com、docker.io ...
TrueNAS SCALE 数据备份教程
坑边闲话:存储是数字资产的基石,没有可靠的存储,就没有可靠的服务。基于 ZFS 文件系统的 TrueNAS SCALE 具有强大的数据复制能力。本文详细介绍 TrueNAS SCALE 的备份功能。
1. TrueNAS Replication 功能介绍·
Replication 指的是「复制」,在 TrueNAS 语境里指的是 zfs send 和 zfs recv 过程,即直接复制 ZFS 数据集。这里的复制并非是 rsync 的文件级别复制,而是 LUN 级别的复制。
TrueNAS SCALE 的 Data Protection 面板集成了所有可用的备份服务,以 24.04 为例:
Scrub Tasks
Cloud Sync Tasks
Periodic Snapshot Tasks
Rsync Tasks
Replication Tasks
Periodic S.M.A.R.T. Tests
2. 创建 SSH 机密和 SSH 连接·
TrueNAS 或者其他的系统,实时远程备份均依赖网络。既然有了网络,就需要考虑认证问题。本节介绍 TrueNAS Replicat ...
个人银行、互联网海外账号创建指南
坑边闲话:中国大陆的银联系统和中国大陆的互联网类似,都有着不可描述的局域网属性。纵然该体系下的服务在中国境内比较方便(如果你愿意付出一定的隐私代价),但是出国之后几乎是寸步难行。许多海外 App 因为审查机制门槛,并没有选择在中国的苹果 App Store 同步上架,而中国人创建海外账号则面临支付问题。本文介绍了笔者身处英格兰时,创建海外银行账户和大型互联网公司用户账户的经历。
1. 手机号·
手机号、银行卡、Apple ID 都很重要,但是申请时有先后顺序。目前来看,手机号是先要拥有的。
1.1 CMLink·
从中国来到海外,可以办理 CMLink 临时用一用,随后可按需选择 Vodafone 或者 O2 等本地服务商。
虽说 CMLink 价格便宜,但是它有被窃听的风险。因此不建议长期使用。
CMLink Fair Use Policy
CMIUK 对通过我们的服务或通过互联网(包括通过指定的任何服务器传输的数据信息)传输的数据或信息的安全性和完整性不作任何保证,也不承担任何责任。CMIUK 不监控,不控制,也不对通过我们的网络或服务传递的信息内容承担任何责任。
所有通过我们 ...
使用 Dropbox 替代 OneDrive、坚果云
坑边闲话:作为一个 OneDrive 和坚果云双持的用户,多年来笔者一直对自己的数据同步与存储机制感到较为满意。其中:OneDrive 凭借几乎免费的价格和 1TB 的可靠云存储,被笔者当作照片备份工具;坚果云凭借着强大的国内、国际可用性及增量同步机制,被笔者当作主力文件同步工具。
笔者在读本科时一直想使用 Dropbox 作为单一云存储,可惜因当时的网络和价格问题最终没有成行。如今笔者发现在 30% UniDays 优惠券加持下,Dropbox Plus 2TB 服务一年仅需 £67.12,约合 ¥627,总体还是可以接受的。
本文介绍如何在遵循狡兔三窟、鸡蛋不放到一个篮子里等原则下,使用不同服务商的云服务的过程。
1. 迁移动机·
随着中国大陆言论审核越来越严格,云盘随时面临资料「被和谐」的隐患。本人自认为云盘里没有违规的文件,如色情、暴力、反动内容。然而「违规内容」的认定缺乏统一标准,比如难以确定在未来的某一天某个关键词是否会成为违禁词。上述情况使得原本正常或有些许擦边的文件也可能在未来的某一天变得不可用。此外,本人未来相当长的一段时间将会居住在海外,因此把资料同步到一个海外 ...
Ghidra 逆向 p2:使用 Python 编程
坑边闲话:Ghidra 使用 Java 进行开发,因此核心运行时是 JVM. 与 JVM 沟通的最简单方法自然是用 Java 语言,但用 Java 写插件、脚本的代价太高,因此 Ghidra 内置了 Jython(类似于 CPython 2,是一种 Python 2 的 Java 实现),支持使用 Python 2 语法开发脚本。Python 程序通常比等价语义的 Java 程序短很多,大概只有 Java 的五分之一到十分之一长度。不幸的是,Jython 目前仅支持到 Python 2.7 标准。
1. Ghidrathon:Ghidra 的 Python 3 框架·
继续使用 Python 2 语法开发插件是不明智的,本章介绍 Ghidra 扩展:Ghidrathon.
1.1 Ghidrathon 框架简介·
Ghidrathon 基于 Jep 进行开发。Jep 通过 JNI 将 CPython 嵌入到 Java 中。
在 JVM 中嵌入 CPython 3 的一些好处:
解释器更加专业成熟:相比较 Jython,使用本机 Python 3 解释器快得多。Python 3 已 ...
Ghidra 逆向 p1:工具的基本使用方法
坑边闲话:笔者使用 IDA Pro 进行程序分析已经有很多年了,来到欧洲之后发现大部分人喜欢用开源免费的 Ghidra,或许是他们比较尊重版权而不屑于使用盗版的 IDA Pro 吧。既然决定入乡,随俗便是不可避免的。经过一番学习,我终于初步学会了如何使用 Ghidra 进行逆向分析。
1. Ghidra 安装·
Ghidra 使用 Java 进行开发,因此具有极好的跨平台能力。Java 代码“一次编译,处处运行”,因此所有平台的 Ghidra 安装包是相同的。Java 的图形化界面没有原生开发那么细腻,所以 Ghidra 初看上去有些粗陋,但看习惯了也还好,毕竟它的功能强大、逻辑严密。这就好比找了个外貌没那么惊艳的女朋友,但是因为她内在修养很好,相处久了也感到舒服。
1.1 安装 JDK·
JDK 是 Java 开发库,只有安装了 JDK 才可以运行 Ghidra. macOS 和 Linux 通过包管理器安装完之后,需要在 ~/.bashrc 或 ~/.config/zsh/.zshrc 或其他 shell init 脚本里指定 ${JAVA_HOME} 环境 ...
使用 ksmbd 配置文件共享
坑边闲话:ksmbd 是韩国三星集团工程师 Namjae Jeon 基于 Linux 内核态开发的一个 SMB 文件共享服务器,其源码现已合并到 Linux 内核主干。传统的 Samba 工作在用户态,使用时会有较大的性能开销。但截至目前,Samba 的 smbd 明显要更加完善,支持的功能更多。因此,本文并不尝试带领读者将 Samba 替换为 ksmbd,而是想带大家尝试新鲜事物,窥探未来的文件存储发展方向。
SMB 协议:全称 Server Message Block. SMB 协议最初由 IBM 的 Barry A. Feigenbaum 于 1983 年开发,用于在 IBM OS/2 的网络里共享文件和打印机;
smbd:Samba 的 SMB 实现。
ksmbd:前缀 k 代表它工作在 Linux 内核态。
1. SMB 协议简史·
SMB 是非常重要的一个网络文件系统协议,它涉及到多个彼此差异很大的版本,因此有必要对其发展历史进行梳理。
历史部分主要参考维基百科相关页面,使用 ChatGPT 4 机器翻译加人工精调。
1.1 SMB 1.0·
Barry Feig ...
在容器中运行群晖 DSM
坑边闲话:群晖的 DSM(DiskStation Manager) 系统是家用 NAS 的典范,有着易用的人机交互界面和丰富的系统套件,而这些特性是开源方案所不具备的。然而,DSM 只能运行在群晖的硬件上。
1. 缘起 DSM·
笔者早在 2017 年 2 月也即本科二年级的时候,曾对群晖 NAS 产生过一丢丢的兴趣,主要原因是网上很多人都说 NAS 很有用。本科时候总是满脸热忱,对新奇的东西充满了研究的兴趣。当时用了一台基于 Intel Core i3 550(第一代酷睿)的 PC 机打造了黑群晖系统。那时候新版系统还是 5.x,采用 U 盘引导。因为人在数学系,接触计算机设备的时间不多,所以这台设备很快就被搁置,年底已经彻底变为了 Linux 学习机。
不过当时的 DSM 给我留下了深刻的印象。
再到后来,我拥有了自己的 NAS,而这时已经是 2021 年 4 月,距离我第一次用 DSM 已过去了四年时光。
可惜后来我用的并非白群晖,而是基于 VMware ESXi 的虚拟化 TrueNAS SCALE.
TrueNAS SCALE 和 ZFS 的教程我已经写过很多很多,该系 ...
关于 NAS 系统稳定性的思考
坑边闲话:有大佬曾说过,一个可用的文件系统需要三到五年的开发时间。一个基于某种存储系统的 NAS 系统显然需要的时间更多一些,毕竟 NAS 系统还要解决网络和服务的问题。
最近绿联新系统翻车的新闻刷爆了 NAS 圈,对此我感到毫不意外。我想发表三点个人意见。
1. 存储系统的研发是困难的·
难就难在如何让普通用户也能轻松使用。
知乎用户 AlphaArea 曾经无情嘲笑群晖系统卖的贵,认为群晖就是 Linux 加 KVM,然后靠容器撑起一片天。事实真的如此吗?
说到底,事实确实就是如此,但这并不代表群晖没有科技地位。事实证明,把一套复杂的东西封装好并做成绝大多数人都能上手的产品,绝非一件容易的事情。而且,这里面还会涉及到一些核心组件的开发。
文件系统是最重要的,但是在 NAS 系统中貌似也是最不起眼的,毕竟绝大多数厂商都没有能力订制属于自己的文件系统,只有强如 Apple、Microsoft、IBM 才有兴趣、有实力打造自己的文件系统。此外,很多优秀的文件系统都是开源的,拿来主义岂不美哉?
做民用 NAS 本质上是做用户交互。用命令行确实管用,但是并不好用,只有对 Linux ...
ZFS 存储教程 p2:优化、备份与共享
坑边闲话:本文前作已经较为细致地讲解了 ZFS 的很多基础原理,包括卷管理以及部分性能优化。本文从缓存、快照、权限管理、迁移备份入手,讲解一些很常见的高级操作。
1. ARC 与 L2ARC:是否有必要用 L2ARC 呢?·
1.1 到底什么是 ARC 读缓存·
ZFS 中的读缓存即 ARC,他是一种采用了适应性技术的智能读缓存。传统的 LRU 算法在块存储上是存在问题的,ARC 能很好地解决 LRU 和 LFU cache 策略的问题。但是要注意,所有的 cache 都是打擦边球,妄图以小聪明解决某些性能瓶颈,诚然这种小聪明有时候效果很明显,但是一旦你的使用场景与设计者的预设不同,那么必然遇到缓存失效问题。一旦失效,有缓存还不如无缓存。
ZFS 的 L2ARC 是很常用的功能,特别多见于内存容量不是超级大但是会对某个大工程做频繁读取的工作。比如多人剪辑视频。
注意⚠️:L2ARC 算是一个锦上添花的功能,特别是对单用户场景,L2ARC 并不具有明显优势。
L2ARC 中的 2 就是第二层的意思,而不是 L to ARC(L 到 ARC),它实际上就是一个缓存。ZFS 认为内存中的 ...
ZFS 存储教程 p1:卷管理
坑边闲话:笔者曾经一再强调,存储是计算机服务生命周期的最底层,一定要通过各种手段确保存储的安全,毕竟自古以来,从结绳记事到固态硬盘,其目的都是持久化地存储某些信息。ZFS 作为开源存储解决方案里的翘楚,得到了诸多玩家的青睐。然而,正确理解 ZFS 的诸多概念以及正确使用 ZFS 的特性,往往需要用户付出相当的学习时间。
1. 安全三原则·
一般来说,安全的系统至少要做到以下三点。
可用性。系统是可用的。为了防范黑客而关机、断网,就失去了可用性。
私密性。系统通信、存储的数据不被窃听、破解。HTTP、FTP 明文通信就不够安全。
完整性。通信、存储的信息不能被随机因素所改变,更不能被有心之人篡改!
(不可抵赖性算第四原则吧)
可能你会觉得我在给大众普及安全常识,但是安全恰恰是所有上网的人都需要的。如果你的 NAS 被黑客黑了,那你再聪明也只能在一堆没有灵魂的硬件面前怀疑人生。所以本期内容看似是在讲存储,实际上是在讲安全。希望你能秉持着安全至上的原则看下去。
2. 常规存储服务器介绍·
首先介绍一下存储服务器。
现今的大企业一般标配存储服务器。PureStorage、NetApp、 ...