在刷了OpenWrt的迅雷赚钱宝一代(WS1408)上开启Swap交换分区
前言
不知直觉已经在我的迅雷赚钱宝一代ws1408(下称小方块)上部署了不少服务,比只有70MB可用的存储空间更金贵的,是只有228MB可用的运行内存。
这点内存,稍微跑几个服务就容易oom,比如qbittorrent-nox,很容易闪退。虽然之后我在qbit的设置中调小了内存占用的数值,但依然会出现10GB的大文件下载完成后校验时闪退。
我刷的openwrt21固件默认不启用swap分区。在经历了好几次oom以后,痛定思痛,我准备开启swap分区来缓解小方块内存太小的问题。
配置
小方块有两个扩展接口,一个tf卡槽,一个usb2.0接口。
我在机器上插了一张tf卡挂载到/mnt/sdcard
作为存储空间用,留下usb2.0来外接硬盘作为数据盘。所以这次的思路是,在sd卡上创建一个200MB的swap文件作为系统的swap分区使用。关于swap分区的大小应该设置成多少,很多古董文章里都说要设置成内存的2倍大小,不用机械的按照这个奇怪的规则去设定,设定成和内存同样大小、1/2大小、5倍大小都可以,根据自己的实际情况来定就可以。
tf卡的i/o性能肯定没法和内存相提并论,实测开启swap以后,系统的响应速度都会被拖慢,但好处也很明显,可以部署大量的服务而不用担心oom惹。
第一步:创建swap文件
先新建一个200MB大小的文件。
可以用dd命令
dd if=/dev/zero of=/mnt/sdcard/swap bs=1M count=200
也可以用fallocate命令
fallocate -l 200M /mnt/sdcard/swap
第二步:格式化
将创建的指定大小的swap文件格式化为swap文件系统
mkswap /mnt/sdcard/swap
第三步:启动swap设备
执行命令
swapon /mnt/sdcard/swap
到这一步以后,可以用free -m
或者htop
工具来查看swap是否已经启用。
htop
free -m
第四步:设定开机自动挂载swap
网上很多文章到这一步都会让设置/etc/fstab
然后把swap挂载信息写上去,这个方法需要block-mount
工具的支持,小方块的openwrt默认并没有安装这个工具。
所以这里用的添加启动脚本的方法来解决。在自动挂载sdcard的命令后面,加上一条启动swap的命令即可。
swapon /mnt/sdcard/swap
最后点击保存。
到这里,在openwrt上开启swap的操作就全部完成惹。
🎉