
对于用笔记本玩游戏的朋友来说,存储空间永远是最大的痛点。硬盘容量有限,新游戏不断推出,老游戏舍不得删,最后只能在删与不删之间反复横跳。
不过,如果你的手头刚好有一台支持M.2 NVMe SSD的群晖NAS,那这个问题就迎刃而解了。不仅能给笔记本扩容,还能在局域网内搭建一个游戏下载缓存中心,让室友、同事都能享受到超高速下载体验。
今天就来分享两个实用方案,彻底解决游戏存储和下载速度的问题。
Lancache monolithic本质上是一个基于Nginx的HTTP缓存代理服务器。它的工作方式很简单:当局域网内任何设备下载游戏时,Lancache会拦截下载请求,将游戏数据缓存到NAS的存储空间中。
当下次有其他设备下载相同的游戏或更新时,Lancache会直接从本地缓存中读取数据,而不是重新从互联网下载。在内网环境下,下载速度可以达到网络带宽的理论上限。
这个方案支持Steam、Epic、育碧、Origin、暴雪战网、LOL等主流游戏平台,甚至还内置了HTTPS SNI代理功能,能够处理部分HTTPS流量。
为了验证效果,我做了个实际测试。首先在Steam上下载《饥荒联机版》,游戏大小约2.8GB,初始下载速度在两三百兆。
下载完成后,我在群晖的缓存目录中找到了对应的游戏文件,大小正好是2.8GB。
接下来我删除了游戏,然后用另一台电脑重新下载。为了确保测试准确,我先清空了所有设备的缓存,确保数据必须从互联网获取。
结果令人惊喜,下载速度直接飙升到六七百兆,提升了2.5倍!
查看缓存日志可以发现,绝大部分数据都命中了本地缓存(日志显示HIT),只有少量的校验数据需要从官方服务器下载(日志显示MISS)。
同时监控群晖的网络流量,可以确认Steam确实是从NAS读取了缓存数据,而不是从互联网下载。
在开始部署之前,需要确认以下几点:
必须使用SSD存储:游戏数据由数万个小文件组成,机械硬盘的随机读写性能完全无法满足需求。如果使用机械硬盘,I/O瓶颈会严重拖慢下载速度,缓存效果会大打折扣。
Macvlan网络模式:Lancache需要占用80和443端口,但这两个端口已经被群晖DSM系统占用。解决方案是通过Docker的Macvlan模式创建一个独立的网络接口,分配一个独立的IP地址,避免端口冲突。
GitHub连接性:Lancache会从GitHub仓库实时更新各大游戏平台的域名列表,实现DNS劫持。如果无法访问GitHub,需要手动维护域名数据库,会比较麻烦。
首先需要通过SSH连接到群晖NAS。在控制面板中启用SSH服务,然后使用终端工具登录。
获取网络接口信息
# 切换到root用户
sudo -i
# 查看网络接口配置
ip addr | grep 你的群晖IP我的群晖IP是192.168.0.135,对应的网络接口是ovs_eth0。群晖默认使用Open vSwitch网桥,所以接口名称可能是ovs_eth0、eth0或bond0,具体取决于你的网络配置。
创建Macvlan网络
docker network create --driver macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 --ip-range 192.168.0.200/29 -o parent=ovs_eth0 macvlan-network记得将命令中的IP地址段修改为你自己的局域网配置。创建成功后会返回网络ID。
第二步:部署Docker容器
群晖的Docker套件需要先从套件中心安装。安装完成后,打开Docker应用,有两种部署方式:
方式一:通过注册表手动部署
在注册表中搜索lancache-dns和monolithic镜像,分别下载后创建容器,手动配置端口映射和环境变量。
方式二:使用Docker Compose(推荐)
这种方式更简单,一次性配置所有服务。在Docker的"项目"页面创建新项目,粘贴以下配置:
version: "3"
services:
dns:
image: lancachenet/lancache-dns:latest
restart: "no"
ports:
- "53:53/udp"
- "53:53/tcp"
# 如果无法访问GitHub,可以取消下面的注释并手动配置DNS
#volumes:
#- /volume1/docker/lancache/custom.db:/etc/bind/cache/custom.db
environment:
- USE_GENERIC_CACHE=true
- LANCACHE_IP=192.168.0.200
- DNS_BIND_IP=192.168.0.200
- UPSTREAM_DNS=8.8.8.8
- TZ=Asia/Shanghai
# 如果需要代理,取消下面的注释并修改地址
#- HTTP_PROXY=http://192.168.0.132:7890
#- HTTPS_PROXY=http://192.168.0.132:7890
networks:
macvlan-network:
ipv4_address: 192.168.0.201
monolithic:
image: lancachenet/monolithic:latest
restart: "no"
ports:
- "80:80/tcp"
- "443:443/tcp"
volumes:
- /volume1/docker/lancache/data:/data/cache
- /volume1/docker/lancache/logs:/data/logs
environment:
- USE_GENERIC_CACHE=true
- LANCACHE_IP=192.168.0.200
- DNS_BIND_IP=192.168.0.200
- UPSTREAM_DNS=8.8.8.8
- CACHE_MEM_SIZE=1000m
- TZ=Asia/Shanghai
# 内存缓存大小,1m对应8GB磁盘空间
# 如果需要代理,取消下面的注释并修改地址
#- HTTP_PROXY=http://192.168.0.132:7890
#- HTTPS_PROXY=http://192.168.0.132:7890
networks:
macvlan-network:
ipv4_address: 192.168.0.200
networks:
macvlan-network:
external: true
name: macvlan-network配置说明
/volume1/docker/lancache修改为你实际的存储路径CACHE_MEM_SIZE控制内存缓存大小,建议设置为可用内存的10-20%点击"下一步"后,Docker会自动拉取镜像并启动容器。启动完成后,可以在"容器"页面查看运行状态。
自定义DNS配置
如果需要添加自定义域名解析,可以编辑映射后的custom.db文件,按照标准DNS记录格式添加需要劫持的域名。
除了缓存加速,还可以通过iSCSI技术直接扩展笔记本的存储空间。群晖内置的iSCSI Manager套件可以将NAS的存储空间映射为本地磁盘。
1. 创建iSCSI Target
Target类似于网络地址,用于标识iSCSI服务。在iSCSI Manager中创建新的Target,设置唯一的IQN标识符。
2. 创建LUN
LUN是实际的存储块设备,支持两种模式:
3. 连接到Windows
在Windows上打开"iSCSI发起程序",输入群晖IP地址进行发现,连接到Target后,Windows会识别出新磁盘。
4. 格式化使用
对新磁盘进行格式化,就可以像本地硬盘一样使用了。在Steam中可以直接选择这个磁盘作为游戏安装目录。
最大的优势是数据迁移的便利性。当更换电脑时,只需将LUN重新挂载到新电脑,所有数据都完好无损,无需重新下载或复制。
⚠️ 重要提醒:iSCSI LUN同时只能挂载到一台设备,多设备同时访问会导致数据损坏。
通过Lancache缓存和iSCSI扩容两种方案,彻底解决了笔记本游戏存储和下载速度的问题。无论是寝室、工作室还是家庭环境,都能享受到极速下载体验。
方案对比
注意事项
Lancache主要针对HTTP下载的游戏平台。对于其他需要频繁下载的服务(如Linux的apt包管理器),也可以通过自定义DNS配置加入缓存范围。
本文分享自 IT狂人日志58446291 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!