LTSP 无盘机房运维笔记

机房几十台机器,逐台装系统维护到崩溃,于是上了 LTSP(Linux Terminal Server Project):所有客户端从网卡启动(PXE),系统镜像在服务器上统一维护。这篇记录架构和运维要点。

架构原理

1
2
3
4
5
6
7
8
9
┌────────────────────────────────────┐
│ LTSP 服务器 │
│ ├── DHCP:下发启动镜像地址 │
│ ├── TFTP:提供 PXE 引导文件 │
│ └── NFS/NBD:导出客户端根文件系统 │
├────────────────────────────────────┤
│ 客户端(无硬盘/忽略本地盘) │
│ 网卡 PXE 启动 → 加载内核 → 挂载根文件系统 → 图形登录
└────────────────────────────────────┘

客户机不需要本地磁盘,所有文件系统都在服务器上。装软件、改配置只在服务器改一次,全部客户端重启即生效——这是无盘最大的价值。

启动过程是严格分层的:客户端每个阶段要什么、服务器在哪一步提供什么,决定了排障时该查哪一环。

LTSP 从 PXE 到本地运行的启动时序与服务器/客户端职责划分

镜像:客户端系统的”母版”

LTSP 的镜像就是一台”样板客户机”的完整根文件系统,构建流程:

1
2
3
4
5
6
7
8
# 1. 用 debootstrap 或复制模板机构建基础镜像
ltsp-build-client --arch amd64

# 2. 进入镜像环境装需要的软件(chroot 进去操作)
ltsp-chroot -a amd64 -p /opt/ltsp/images/amd64

# 3. 退出后重新打包生成 initramfs
update-initramfs -u -k all

日常加装软件的姿势(不要直接在客户端上装,客户端重启会还原到镜像状态):

1
2
3
4
ltsp-chroot -a amd64 -p /opt/ltsp/images/amd64
# 镜像环境内:apt update && apt install xxx
# 退出后同步配置
ltsp-update-image -a amd64

国内源加速

默认的官方源在国内慢得要命,镜像构建前先换国内 mirror(以 ustc 为例):

1
2
3
4
# 在镜像 chroot 环境内执行
sed -i 's|http://.*.ubuntu.com|https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|http://.*.debian.org|https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
apt update

注意 chroot 内和服务器宿主机各换各的,两边的源配置互不影响,别只换一边。

启动链路排障

客户端起不来时,按启动顺序一层层看,不要瞎猜:

阶段现象排查点
PXE 启动网卡灯闪但无 DHCP offerDHCP 服务是否在跑,next-server 是否指向 LTSP 服务器,BIOS 是否开了网络启动
内核加载卡在 “Loading kernel”TFTP 根目录权限、防火墙 69/udp 是否放行
挂载根文件系统kernel panic: unable to mount root fsNFS/NBD 导出是否正常,/etc/exports 改动后是否 exportfs -ra
图形登录黑屏/登录后闪退显卡驱动(无盘机最爱在这翻车)、/var/log/Xorg.0.log

高频坑:显卡驱动。 无盘客户端显卡五花八门,镜像里装错驱动直接花屏。稳妥做法是镜像内置开源驱动(对虚拟机/办公场景足够),有 3D 需求的机器单独加闭源驱动并做成”例外镜像”。

日常运维清单

1
2
3
4
5
6
7
8
9
10
11
12
# 看当前连接的客户端
ltsp-info

# 重启某台客户端
ltsp-remote -b 00:11:22:33:44:55

# 重建镜像(改了配置/软件后)
ltsp-update-image -a amd64

# 磁盘清理:镜像快照和旧内核会堆积
ltsp-image -c amd64 # 清理旧镜像
apt autoremove --purge # 镜像 chroot 内也要清理

镜像体积是隐形炸弹:每次 ltsp-update-image 都会生成新快照,不清的话几个月吃掉几十 GB。把镜像快照数量限制写进维护脚本,每月跑一次。

什么时候不该上无盘

无盘不是银弹,以下场景老老实实本地盘:

  • 高性能计算/游戏:NFS/NBD 的 IO 延迟顶不住;
  • 网络不稳定的机房:客户端全部依赖服务器和网络,交换机抖一下全军覆没;
  • 客户端硬件差异极大:镜像要兼容所有硬件,驱动是个无底洞。

办公教学场景、硬件统一、网络稳定——三个条件占两个以上,无盘的体验真香。

小结

LTSP 把”装机”从体力活变成脚本活,代价是排障要理解完整的网络启动链路。记住两条心法:软件一律在镜像 chroot 里装,客户端永远当”一次性”对待,机房维护就轻松了。