저는 두 대의 컴퓨터와 패치 코드를 가지고 있습니다. 허브/스위치/라우터 등이 아닌 직접 연결만 가능합니다. 더 많은 RAM이 필요하고 다른 컴퓨터에는 사용 가능한 RAM이 많이 있습니다. 이더넷을 통해 해당 RAM을 스왑 파티션으로 어떻게 사용할 수 있습니까?
두 시스템 모두 Arch Linux를 실행합니다.
답변1
우선, 이것은 일반적으로 나쁜 생각입니다. 이더넷 연결이 끊어지면(또는 스왑 공간을 제공하는 시스템이 종료/충돌/다시 시작되는 경우) 스왑 공간을 사용하는 시스템은 스왑 공간에 액세스할 수 없기 때문에 종료됩니다. 또한 교체할 때 평소보다 더 나쁜 성능 문제가 나타날 수도 있습니다(이를 방지하려면 10GbE와 정말 좋은 NIC가 필요합니다. 이 시점에서는 더 많은 RAM을 확보하는 것이 더 나을 것입니다).
즉, 몇 가지 옵션이 있습니다. 내 경험상 이런 종류의 작업에 가장 쉽고 신뢰할 수 있는 것은 ATAoE(ATA over Ethernet) 또는 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, 스왑온. 임베디드 시스템에서 기본적으로 컴파일하려는 경우 유용합니다.