跳转至

折腾记录

台式机升级-硬件篇

随着做种资源原来越多,原本 4T + 2T 的机械硬盘配置不够用了。即使已经做了很多缓解措施,比如将比较大的视频文件转成 av1 编码(4k h264可以达到30G -> 6G的效果),仍然是捉襟见肘。随着最近想要下载一些 VR 游戏资源,硬盘不够用了越来越明显,看来添加硬盘是必须做的了。

同时我也觉得现有的数据管理有点不安全。目前只对一些文档数据做了备份,然而一些虚拟机磁盘镜像,比如主力使用的 windows 虚拟机的磁盘镜像,由于数据量太大,只存了一份。这些都是单点故障点,一旦硬盘坏了,对我的影响是非常大的。

为了解决容量和安全性的问题,决定在台式机上添加一些机械硬盘组 raid10。

为什么是 raid10

有两个原因,一个是 raid 10 重建时更安全。不像 raid 5 重建时存在 URE 问题(指需要读取阵列全部的数据,数据量大,有很大概率遇到 URE 错误导致重建失败),raid 10 只需要读取一个 mirror 中另一块盘的数据,数据量很小。第二是 raid 10 远比其它 raid 灵活。raid 10 两块硬盘为 1 组,只需要保证两块硬盘容量相同即可。而其它 raid 均需要所有盘容量相同,这意味着我得一次性把所有的盘都买来,而一块 14T 的企业盘需要一千多,3-4 块一次购入显然成本太高。另外,raid 10 后续扩容也非常容易,插入即可扩容。而其它 raid 则需要重建整个阵列,非常费时。

这篇文章主要记录下硬件的升级点,以及人生第二次装机总结的一些经验

epilogue

经过 1 周的规划与实践,台式机终于升级完成。现在它真的成了一个 all in one 完全体了

  • AMD 5800x + 96 GB 内存,PVE 系统
  • 拥有 1G, 2.5G 双网卡,搭建了 openwrt 软路由
  • 拥有 zotac GTX 1063, 公版 GTX 1070 双显卡,分别直通给 linux 和 windows 两个虚拟机系统。
  • 插满 8 块机械硬盘,提供 6T + 8T (6 盘 zfs raid 10) 的存储空间

然而也有一些之前没有考虑到的:

  • 没想到换主板、机箱是一件非常费时费力的事情,从下午 3 点搞到了晚上 11 点。遇到问题有:清洗总共 9 把风扇太费时。插电开机没有一次点亮,差点以为主板翻车。进 BIOS 后系统还要修复引导,zfs 作为 root 分区不太熟悉等。
  • 功耗高了 70 w,从 130 w -> 200 w,从每日 3.3 度涨到 4.4 度。购买硬盘时没有考虑到硬盘的功耗,没想到硬盘功耗可以有 1 倍的差距(最低 4.4 w,最高 8.0 w)。当有 8 块硬盘时,总的差距就可以相差 20-30 w。
    • AMD PBO2 的降压功能非常重要,开与不开功耗相差可能 50 w

hexo 迁移到 mkdoc

我比较喜欢 hexo 的 tags 字云的效果,不过由于以下原因,我打算迁移到新的静态博客框架 mkdocs material theme

  • hexo nodejs 的依赖实在是太麻烦了
  • hexo 展示的信息量太少了(也可能是我使用的模板的问题)
    • 我感觉这一点上 mkdoc 效果就很好,在大显示器上能够显示更多信息,查阅博客的效率更高

TODO

参考方案

p.s. 由于我使用的 markdown 编辑器的原因,才发现标准 MD 中 list 前面需要有一个空行。也就是迄今写的博客均踩了这个坑。。。而 mkdocs 不支持这个非标准行为,以后慢慢更正吧

openwrt x86 升级

我的台式机 pve 充当软路由功能,包含一个 openwrt LXC 容器。该容器使用了很长时间,配置了 wiregurad,以及复杂的防火墙和路由规则。但是在一开始创建 lxc 容器时,rootfs 选择了 x86/generic 版本。该版本实质上是 32 位的系统

Generic is for 32-bit-only hardware (either old hardware or some Atom processors), should be i686 Linux architecture, will work on Pentium 4 and later. Use this only if your hardware can't run the 64-bit version.

虽然不知道会对性能等有多大影响,但是对于有点完美主义的人来说还是无法接受。因此研究如何将其升级到 64 位版本。

本来以为应该是一件很简单的事情,但是阅读 openwrt wiki 后,发现并没有想象中的简单。并且也学习到了一些关于镜像、分区、文件系统的知识。特此记录。

捡垃圾-rk3399 DIY KVM

由于我的台式机承载了 NAS,做种,Jellyfin,博客,文件同步等功能,已然成为一台服务器,因此其可靠性非常重要。但是我还是经历过几次由于网络故障导致其无法访问的情形,此时则只能去实验室维护比较麻烦,因此需要一个 IPMI 的管理功能,使得网络出故障情况下也能远程访问。

而家用 PC 主板很少有支持 IPMI 功能的,支持的板子一般都要 2000 元以上。因此需要一个成本低廉的方案,在网上搜索一阵后发现确实有基于树莓派 DIY 的方案,并且有一个比较大的开源项目 PI-KVM。

然而由于树莓派 400-500 昂贵的价格,使得 DIY 的成本仍然很高。直到我看到使用普通 arm 板子的方案。甚至可以使用 40 元的电视盒子。因此价格完全可以保证在 200 元以内,我觉的是一个可以接受的方案。

最后成本

  • king3399 开发板:咸鱼 120
  • ms2130 USB 采集卡,支持 1080p 60 帧:淘宝 60

KVM-bios.jpg

记一次 linux 系统无法启动修复过程

背景

我想要把第二张显卡也直通给虚拟机,然后就自己编译了一个打了 acs overide patch 的内核。之后启动也没有问题。但是当我第一次运行虚拟机后,电脑就卡死了。然后我强制关机后,无法进入系统,而进入了 busybox initramfs 交互命令行。提示文件系统错误,让我 fsck 系统盘。我照做后就成功进入系统了。

  • 这里进入系统后一切正常,但是 lxc 的 storage 显示 unavailable,zpool import zfs_lxd.img 显示损坏。

然后我想再试试,结果启动虚拟机后又卡死了。我强制重启后,好像又进入 busybox 进行 fsck 了,但结果还是进不了系统,这次进入了紧急模式。

虚拟游戏房

打算弄多个 windows 虚拟机,分享给 guest。

好处

  • pcie 4.0 的固态作系统 (6000MB 的读写)
  • Ryzen 5800x + 16GB 内存
  • 共享高性能显卡(目前为 1060 3G)

具体

  • 所有 windows 虚拟机的 C 盘共用一个基本镜像
    • 虚拟机的修改关机后不保存
  • 所有 windows 虚拟机共享 2TB 的游戏盘
    • 普通用户关机后,数据不保存
    • 管理员虚拟机对其修改可以保存
  • 一个存储盘,50GB。数据私有并进行保存

实现

  • 通过 COW 文件系统的 overlay 技术,在 base 镜像上创建一个 overlay 镜像。之后删除 overlay 即可回退到基础状态。

VLAN 实现单网口软路由

起因是发现在原本的两个路由器间架设 wireguard 隧道,其中一个路由器 (小米 4A 千兆版) 遇到了 CPU 瓶颈,导致带宽只能达到 100-200 左右。后面研究了市面上的各种路由器的 CPU 型号,包括矿渣路由器。购买了一个 100 元的可以刷 openwrt 的竞斗云 2.0,带宽可以达到 200-300M,但仍远低于理想的千兆。目前即便是 500 元以上的高端路由器,其配置仍然只有 4 核 Cortex A53@2.0GHz 的水平。

偶然看到用旧笔记本做软路由的视频,遂萌生了折腾软路由的想法。仔细研究其方案后发现为 pppoe 拨号上网的方式,不适用于 dhcp 上网的情况。后偶然发现所购买路由器支持 vlan 功能(其实后面发现所有 openwrt 路由器都支持),于是自己独立构思了后面的架构图。并尝试成功 (11/5),最终在红米 AX6S+ 软路由的情况下,达到了 500M 的带宽,此时 AX6S 的双核 Cortex A53@1.2GHz CPU 占用率也达到了 100%。

之后再接再励,将 AX6S 也配置了 vlan,并在旧笔记本实现软路由。最终带宽达到了 880Mbps,scp 文件达到 98MB/s 的速率。并且之后还成功配置了 Guest WIFI,将其和主网络隔离开来,更加保证了安全性。

通过本次项目,学会了:

  • linux 下,ip, netplan 创建 bridge 和 vlan
  • lxc 容器的使用
  • openwrt DSA 架构配置 vlan

Wireguard 组网

wireguard 是一种基于 UDP 的隧道协议,可以在不同设备间建立虚拟隧道,从而连接不同子网。本文总结了不同使用场景

尝试非官方 openwrt

说明

我的红米 ac2100 不知道怎么回事,使用自己编译的固件,无法开启 5G 无线。radio1 显示 not active,并且为 802.11n 协议。先后尝试编译 22.03-rc6, 21.02 稳定版都是如此。(官方稳定版是有的)(想到一些第三方的 openwrt 说针对国内进行了优化,因此想尝试下第三方的 openwrt

Openwrt Mesh 和快速漫游配置

背景

家里原本有两个路由器,一个负责楼上,一个负责楼下。但是仍然有许多覆盖不到的地方,比如厨房。并且更影响体验的是楼上楼下的 WIFI 使用不同的 SSID,手机无法很好地自动切换。经常是楼上连接到楼下的网络导致信号很差。因此决定对家里的网络改造一番。

以前听过 mesh 这个技术,可以将很多台路由器通过无线连接起来,共同提供一个网络。于是去搜索了 openwrt 是否支持 mesh,发现是可以的。并且经过进一步的了解,纠正了自己之前对无线网络的一些错误认知。

  • 首先,mesh 解决的并不是如何让设备自动切换网络,而是如何进行无线组网,可以避免布线的困难。mesh 节点通过同一个信道的的无线相互连接,而通过另一个无线提供 WIFI。
  • 快速漫游(fast roaming) 协议,准确来说叫做 802.11r 协议,可以减少设备切换无线网络的耗时。

硬件设备上,我选择使用小米路由 3G 来搭建,主要是因为硬件配置上在 wifi5 的路由器中算是很不错的了,且某鱼上一个只需要 50 元。于是又买了两个,加上原本的,现在有 4 台 openwrt 路由器,一个红米 AC2100 作为主路由,3 个 R3G 作为 AP 节点。

为了方便配置还实现了一个自动配置脚本放在 github:TheRainstorm/my-openwrt-config (github.com)

openwrt DNS 详解

openwrt DNS 说明

参考:

  • openwrt DNS 和 DHCP 配置均位于/etc/config/dhcp
  • openwrt 使用 dnsmasq 和 odhcpd。它们功能如下:

    image-20220816220011245

  • 总结来说:
    • dnsmasq 将自己设置为 DHCP 客户端的 DNS
    • dnsmasq 使用缓存来提升性能。到达的 dns 请求如果没有命中则转发给上游 DNS

      Dnsmasq serves as a downstream caching DNS server advertising itself to DHCP clients. This allows better performance and management of DNS functionality on your local network. Every received DNS query not currently in cache is forwarded to the upstream DNS servers.

linux 系统迁移

linux 系统迁移

买了一条三星的 PM9A1 SSD,想要把原本的 linux 迁移到新的固态上。

系统信息

  • 原本的系统(windows 和 ubuntu 双系统)安装在固态上,包含 EFI 分区。
  • 系统引导方式:EFI/GPT(其它方式有 BIOS/MBR, BIOS/GPT)

    BIOS system

    On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk.

如何实现网络自由

如何实现网络自由:-)

这里说的网络自由,是指通过网络工具极大地便利生活的某些方面。这篇文章是我自己对折腾路由器刷机、openwrt、ipv6 的总结,并尽量说明了各种玩法的实际用途。其中有些操作确实给我带来了极大便利,比如其中使用 iSCSI 通过网络挂载其它设备的硬盘,这充分解放了我只有 500GB 的轻薄本。在上面安装游戏后,又可以实现在不同设备上无缝玩同一个游戏的体验。

记录红米 AC2100 折腾

第一次尝试自己刷路由器,网上搜索了很多资料,忙活了 2 天,期间差点以为将路由器刷成砖了。

红米 AC2100 这款路由器确实算是很火,网上有很多资料。刚开始在恩山论坛查找各种资料,但是觉得恩山论坛的帖子有点乱,对新手不太友好。看精华帖时帖子之间的联系性不大,要是有一个板块进行总结性的介绍就好了。