内核工作Artifact Evaluation流程记录
博主有幸拿下FAST’25存储系统顶级会议的Distinguished Artifacts Awards,在这里记录一下整个AE的流程
1. 背景与挑战
Artifact Evaluation是结果复现的意思。在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。在这个过程中存在两个问题:
- 网络问题:AE Reviewer如何访问学校内网?
- 安全问题:如何避免AE Reviewer破坏服务器环境(因为我们需要挂载文件系统需要提供root权限)
2. 网络连接
我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。
比较好的一点是阿里云提供了试用版ECS,时间长达3个月,足以完成AE流程。
购买云服务器后,获取相应的公网IP,我们假设如下:
root@8.200.200.20
2.1 内网服务器反向代理
参考SSH内网穿透
具体而言,在学校内网服务器上,运行:
ssh -fNR 2333:localhost:22 root@8.200.200.20 -p 22 -o ServerAliveInterval=60
由此,云服务器可以通过本地2333端口访问访问内网服务器的SSH
2.2 公网服务器SSH访问
在公网服务器上通过如下命令访问内网机器,这里user
是内网服务器的某个用户
ssh -p 2333 user@localhost
至此,完成内网访问。
3. 环境隔离
为了安全性,使用虚拟机和Docker是比较好的方案。我们在AE过程中使用chroot
,进一步避免性能开销。
3.1 内网服务器LiveOS准备
我们不需要准备kernel
以及压缩等步骤,只需要LiveOS的根文件系统。因此,只需以下命令:
sudo debootstrap bullseye $(pwd)/chroot https://mirrors.tuna.tsinghua.edu.cn/debian/
接下来,切入chroot环境
sudo chroot $(pwd)/chroot
修改sshd_config
# chroot
apt install openssh-server
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
然后,把一切复现需要的代码环境,在chroot里面配置完成。
注意,chroot进入后,需要将服务器上的/proc
等目录绑定过来,不然会出现奇奇怪怪的错误,如下:
sudo mount -t proc /proc $(pwd)/chroot/proc
sudo mount -t sysfs /sys $(pwd)/chroot/sys
3.2 隔离环境SSH配置
我们希望将内网服务器当作跳板机,访问chroot
隔离环境,因此,需要在隔离环境内进一步配置sshd_config
。
在chroot环境中,
vim /etc/ssh/sshd_config
编辑Port
,意为暴露的端口,这里我们同样更改为2333
。
:wq
保存退出,在chroot环境中运行
# chroot environment
/sbin/sshd
至此,完成内网服务器隔离环境配置
3.3 公网服务器SSH配置
为了方便地访问内网服务器的隔离环境,编辑公网服务器的~/.ssh/config
,如下
Host GogetaFS-AE
HostName 内网服务器IP
Port 2333(隔离环境暴露的SSH端口)
User root(隔离环境登录的用户)
ProxyJump user@localhost:2333(公网服务器本地2333端口)
由此,在公网服务器上通过ssh GogetaFS-AE
即可访问内网服务器隔离环境。
4. 免密登录
如果我们不希望AE Reviewer利用公网服务器访问内网时输入user
的密码,可以将公网服务器的公钥放到内网服务器上。
当然,也完全可以通过新建一个用户来解决上述问题。
OK,从现在开始,我们就可以起飞等待AE Reviewer的轮询了🛫
🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫