ASTUCE : ajouter de la RAM par le réseau (Linux)

bobby68
Messages postés
78
Date d'inscription
lundi 4 mars 2013
Statut
Membre
Dernière intervention
23 avril 2013
- 4 mars 2013 à 21:47
Bonjour,

j'ai trouvé une solution récemment à un problème concret qui arrive souvent aux informaticiens : un serveur qui rame pour cause de manque de RAM, et impossible de rajouter de la RAM (pas de slots, impossible d'arrêter la machine, pas de budget, problème qui survient un dimanche, etc...), et bien évidemment des utilisateurs/clients qui s'énervent sur vous !

Une solution déjà un peu connue, en général plutôt utilisée sur les netbooks, est d'utiliser zram : on utilise une partition de swap sur une disque mémoire compressé. L'inconvénient c'est qu'on réduit en contrepartie la RAM ordinaire disponible (même si on dispose ensuite de plus de swap, grâce à la compression).

Mais il y a une autre solution qui conserve toute la RAM de la machine et ne fait qu'en rajouter, certes ce n'est pas une solution très propre, mais elle peut faire temporairement l'affaire : ajouter de la RAM par le réseau ! Concrètement ça consiste à créer une partion zram sur un serveur avec de la RAM dispo, et l'exporter par le réseau sur le serveur qui en manque. Ca peut laisser un peu de temps pour trouver une solution plus académique !

Evidemment, ça sera beaucoup moins rapide que la RAM sur la machine elle-même, mais en tout cas largement plus rapide que le swap sur le disque local.

Pour cela il faut :
- un serveur A en manque de RAM
- un serveur B avec de la RAM en trop sur le même réseau, de préférence au moins gigabit.

Tout d'abord, il faut créer une partition zram sur le serveur B :

modprobe zram num_devices=1
echo 4294967296 > /sys/block/zram0/disksize (pour 4 gigas de RAM avant compression)

Ensuite, on l'exporte par le réseau

sur le serveur B :
apt-get install vblade
modprobe aoe
vbladed 0 1 eth0 /dev/zram0

sur le serveur A :
apt-get install aoetools
aoe-discover
aoe-stat
mkswap /dev/etherd/e0.1
swapon /dev/etherd/e0.1

Vérifiez sur top que votre swap a bien augmenté de 4Go !

Par rapport à la simple solution zram en local, vous avez plusieurs avantages :
- vous pourriez en théorie tout à fait ajouter 128Go de RAM sur votre serveur de 1Go de RAM à la base (pourvu que vous ayez un serveur avec assez de RAM par ailleurs)
- vous ne perdez pas en RAM ordinaire
- vous ne perdez pas en CPU sur votre serveur A, puisque c'est le CPU du serveur B qui s'occupe de la compression

Evidemment ça charge un peu le réseau par contre !

Evidemment telle que je vous l'ai exposée cette solution n'est plus opérationnelle au boot suivant, mais vu que c'est plutôt du temporaire, ça n'aurait pas grand intérêt. Et vous serez au calme pour réfléchir à une solution plus durable, puisque ça remerchera grâce à cette manip !

Attention toutefois, cette solution n'est pas sécurisée vis à vis de votre réseau local (heureusement Ata-over-Ethernet n'est pas routable). Si votre réseau local est potentiellement dangereux, mieux vaut utiliser un VLAN pour ça !