我家服务器的死与重生
几天前的晚上,我和我的伴侣想安装这个特定的 Linux ISO。来自 Red Letter Systems 的家伙们对此评价很高,它在 boundingboxd 上也有不错的评论,我的伴侣喜欢它的安装预告片。我在手机上打开 Tremotesf 查看我是否已经在 Raspberry Pi 上安装了它,但种子列表无法加载。SMB 挂载也无法挂载。我也无法 SSH 进入它。为了不想因为当时开始调试而破坏这个晚上,我把这归结为我最近对 NixOS 配置所做更改的简单问题,决定第二天再看。第二天,我把 Raspberry Pi 连接到我在储藏室里的专用调试显示器,放松手指,随意说了一句“现在是调试时间”,然后重启了这个砖头。当前的 NixOS 版本开始启动,加载了内核,然后……停止了,没有更多的输出。前一个版本也做了同样的事情。我把 microSD 卡取出来进行进一步检查。第一个明显的步骤是 fsck;几天前,整个大楼的电力神秘中断,也许就在写入包含一些对启动过程重要的文件的块时发生了?无论如何,检查一下是值得的。fsck.ext4 报告并修复了许多错误。再运行一次时,报告文件系统是干净的,但拔出并重新插入卡后又出现了更多错误……长话短说,这张卡可能已经坏了,而停电只是给了它致命一击。按 F 键以示敬意。盘点一下这款 Raspberry Pi 4B 几乎全天候运行了多年,所以这并不令人惊讶。我了解到 SD 卡在开始出现故障之前可以坚持相对较少的写入周期。令人惊讶的是,考虑到我对它的糟糕对待,我的卡竟然运行了这么长时间而没有问题。microSD 被挂载为根文件系统,而我几乎没有采取任何措施来减少写入。总体而言,我没有失去太多。重要的数据大多存在于外部硬盘中,而配置几乎完全存在于我的 NixOS 配置中。唯一存放在 microSD 卡上且没有备份的东西是 .torrent 文件以及 Navidrome、Jellyfin 和 slskd 的缓存,而这些我可以轻松再生成。Immich 的数据安全地备份在外部驱动器上,我定期备份,所以那里没有任何丢失。我之前从未遇到过“主要”驱动器像这样死亡;我见过的最糟糕情况是几个包含无重要内容的死闪存驱动器。自从我青少年时期意外挂掉 macbook 的主 OS X 分区,试图第一次安装 Linux 后,担心死掉的驱动器和丢失的数据一直存在于我心中,但现在情况更糟,所以我想采取强有力的预防措施。配置新的设置我开始重建我的家用服务器,考虑了几个方面:尽量减少对 microSD 的写入。确保存储在外部硬盘上的数据有一些冗余。备份所有重要内容。交换、/tmp 和其他易失数据:即使我的 Pi 有 8GB 的 RAM,交换也是有用的,但如果我想让它长久保存,我认为交换到 microSD 不是个好主意,所以我可以选择交换到外部硬盘(非常慢)或使用 zram。zram,前称为 compcache,是一个 Linux 内核模块,用于在 RAM 中创建一个压缩块设备,即带有动态磁盘压缩的 RAM 磁盘。zram 的常见用途是交换或 /tmp。我选择为交换启用 zram,但不为 /tmp 启用,它仍然保持为普通的 RAM 磁盘;我不完全确定这两个功能如何互动,但我想让我让内核解决如何以及何时将 /tmp 中的冷页面交换到压缩交换中,而不是为它保留单独的块。{ # 启用内存中的压缩交换设备 zramSwap . enable = true; # 使用 RAM 磁盘作为 /tmp boot . tmp . useTmpfs = true; }我还选择让 journald 将日志记录到内存中,而不是记录到磁盘。我需要调查是否可以记录到内存并偶尔刷新到磁盘(在这种情况下,我会将 /var/log 挂载到外部硬盘上的子卷),但我还没有搞清楚这部分的内容。{ # 将日志存储在内存中到 /run/log/journal services . journald . storage = "volatile"; } microSD 卡仍挂载在 / 上,但我禁用了 atime,因为它在每次访问文件时会导致写入,而我认为这并不是非常有用。{ fileSystems . " / " = { device = " /dev/disk/by-label/takodachi "; fsType = " ext4 "; options = [ " noatime " ]; }; } 外部 HDD 如果你生活在 2026 这一年,你可能知道现在不是购买任何新驱动器(或 RAM、或 GPU、或任何可以用来构建数据中心并满足被 AI 精神错乱所迷住的高管的口袋)的好时机,最好是利用你拥有的设备,灵活创造。我有很多各种各样的驱动器闲置。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡