ram-dl :用Go编写的下载RAM内存的工具


ram-dl是一个允许您将RAM上传到系统或从系统下载的工具。

它主要是作为 r3map 的技术演示,r3map是一个支持挂载和迁移的高效分布式mmap库,而 go-nbd是一个纯Go NBD服务器和客户端库。尽管如此,它也可以用于一些实验性的用例,例如:

  • 通过网络扩展系统的内存容量:通过利用快速的fRPC RPC框架,你可以使用ram-dl和ram-ul来扩展本地系统的内存(有效地 "下载内存"),而不需要使用本地磁盘空间或内存。
  • 挂载一个远程系统的内存:通过用ram-ul分配一个内存区域(有效地 "上传RAM"),可以以最小的延迟将一个远程系统的RAM挂载到你的本地系统。
  • 深入了解内存的使用和内容:通过用ram-ul检查 "下载"/挂载的内存,你可以深入了解远程系统的内存内容。

ram-dl基本上是通过以下方式实现的:

  • 用r3map的设备API在本地启动一个go-nbd服务器和客户端
  • 将NBD服务器连接到一个由ram-ul提供的远程fRPC后端
  • 调用mkswap、swapapon和swapoff,使分页到NBD客户端提供的块设备,从而到连接的远程fRPC后端。

对于大多数现实世界的用例,直接使用r3mapMount APIMigration API是更好(而且更快)的选择,但如果您只想看到在现实生活中实现的下载更多 RAM meme,那么您就来了来对地方了!


安装
静态二进制文件可在GitHub 版本上获取。

在 Linux 上:
$ curl -L -o /tmp/ram-dl "https://github.com/pojntfx/ram-dl/releases/latest/download/ram-dl.linux-$(uname -m)"
$ curl -L -o /tmp/ram-ul
"https://github.com/pojntfx/ram-dl/releases/latest/download/ram-ul.linux-$(uname -m)"
$ sudo install /tmp/ram-dl /usr/local/bin
$ sudo install /tmp/ram-ul /usr/local/bin

1. 上传内存
在远程(或本地)系统上,首先启动ram-ul. 该组件将内存区域、文件或目录公开为 fRPC 服务器:

$ ram-ul --size 4294967296
2023/06/30 14:52:12 Listening on :1337

2.下载内存
在您的本地系统上,启动ram-dl. 这将使用 fRPC 和 r3map 作为交换空间挂载远程系统的公开内存区域、文件或目录,并在中断应用程序时立即卸载它:
$ sudo ram-dl --raddr localhost:1337 2023/06/30 14:54:22 Connected to localhost:1337 2023/06/30 14:54:22 Ready on /dev/nbd0

这将为您提供额外的 4GB 本地内存/交换空间,而不会占用大量本地内存(或磁盘空间)

项目点击标题