缘起
以前有个贪便宜(一年 5 刀)而入手但目前在吃灰中的小鸡,当然是 OpenVZ,网络条件很差,用起来很鸡肋,后来看到 Google 的 BBR 也有能用在 OpenVZ 的案例,于是也想尝试下,看是否能将其起死回生。
LKL 大法
LKL(Linux Kernel Library) 是个有意思的东西,常见的应用场景是把整个 Linux kernel 编成一个动态库,然后用 LD_PRELOAD 环境变量将其注入到程序运行之前的环境里,强制让程序里的调用时用新编译的这个 kernel 包中的一些函数。
这样其实就已经解决了 OpenVZ 的系统不能升级 kernel 而不能使用 BBR 的问题:我可以把新的支持 BBR 的 kernel 库完全重新编一个,然后用 LD_PRELOAD 注入嘛,完美!
具体命令
现在开始贴命令,大段的命令,重要的地方我大概会写点注释
1 | # suppose you are in your home dir: /home/zhangsan |
其他
本文只提到怎样在 OpenVZ 的虚拟机中启用 BBR,但实际上看上面的配置,应该知道系统里还有个服务,跑在 11402 端口的。这个服务的情况不在本文的内容范畴,所以没有细写。在我的环境里,那是一个酸酸乳(SSR)……不细说了,懂的人自然都懂。