我有两台电脑和一根跳线,它们之间只是直接连接,没有集线器/交换机/路由器/等。我需要更多 RAM,而另一台计算机有大量可用 RAM,我如何通过以太网将其 RAM 用作交换分区?
两个系统都运行 Arch Linux。
答案1
首先,这通常是一个坏主意。当以太网连接断开时(或者提供交换空间的系统关闭/崩溃/重新启动),使用交换空间的系统将因无法访问交换空间而死亡。交换时您还会看到比平常更严重的性能问题(您需要 10GbE 和非常好的 NIC 来避免这种情况,此时您最好只获得更多 RAM)。
也就是说,你有几个选择。根据我的经验,对于此类内容,最简单、最可靠的是 ATAoE(以太网上的 ATA)或 NBD。不幸的是,Arch 不支持开箱即用的 ATAoE(它比 NBD 更容易快速设置,并且只需要提供交换空间的一侧的特殊软件),但支持 NBD。您需要在具有大量 RAM 的系统上创建一个内存文件系统,在那里创建一个交换文件,然后与 NBD 共享该文件系统并告诉其他系统连接到它。
使用 NFS 共享文件可能也可行,但可能更容易出错且效率较低。
答案2
我通过 NBD 交换共享另一台机器的 RAM
主机/服务器
设置 ramfs(如果需要,如果不需要,直接跳到 nbd)
sudo mkdir /mnt/ram
sudo mount -t tmpfs -o size=16G tmpfs /mnt/ram
配置文件/etc/nbd-server/config
:
[generic]
user = nbd
group = nbd
[swap]
exportname = /mnt/ram/swap
copyonwrite = false
prerun = truncate -s 16G /mnt/ram/swap && mkswap /mnt/ram/swap
开始NBD
sudo systemctl start nbd
客户
sudo nbd-client 192.168.1.3 -name swap /dev/nbd0
sudo swapon /dev/nbd0
答案3
去过也做过。挂载远程 nfs 文件系统。 mkfile、mkswap、swapon。如果您想在嵌入式系统上进行本机编译,它非常有用。