Ce tutoriel a pour but de vous expliquer ce qu'est un RAM-disque, pourquoi l'utiliser pour votre serveur Minecraft et comment l'installer.
Qu'est-ce qu'un RAM-disque ?
Habituellement, les fichiers sont stockés sur le disque dur, qui offre une grande capacité au détriment de la vitesse (entre 80Mio/s et 250Mio/s). Les RAM-disques sont des systèmes de fichiers virtuels, à l'intérieur de la RAM de l'ordinateur. Ils offrent des vitesse de transfert beaucoup plus élevés que les disques dur classique (entre 1300Mio/s et 3200Mio/s), mais les fichiers sont effacés après le redémarrage et, de plus, la taille est limité a la quantité de RAM installé sur le système
Avantages et inconvénients
Avantages
- Très hautes vitesses de transfert
- Temps de recherche dans les fichiers très court
Inconvénients
- les RAM-disques sont effacés quand le système redémarre
- Impossible de l'utiliser si la taille du monde est supérieur a la RAM disponible
Pourquoi l'utiliser pour les serveurs Minecraft ?
Dans un serveur Minecraft, le plus grand inconvénient est l'activité E/S, c'est à dire les opérations d'écriture/lecture (gestion des chunks, ..) En déplaçant les données du monde dans la RAM, le temps d'accès sera réduit a (presque) zéro, et les vitesses de transfert seront beaucoup plus élevés, permettant un chargement et une sauvegarde des chunks plus rapide. Étant donné que les mondes Minecraft sont constitués de beaucoup de chunks, cet amélioration des performances est un réel gain
Installation basique
(Faites une sauvegarde de vos fichiers avant de commencer !)
Linux
Dans la pluspart des distributions linux, il y a déja un RAM-disque de mis en place (habituellement à /dev/shm (shared memory)). Si ce n'est pas le cas, il existe des moyens de le mettre en place décrits sur internet.
Il est possible de dépacer tout le serveur dans le ramdisk, mais ici nous ne déplaceront que les fichiers du monde.
Imaginons la disposition suivante:
| ~/minecraft_server/ |
|---|
| world/ |
| world_nether/ |
| world_the_end/ |
| minecraft_server.jar |
| server.log |
| server.properties |
| … |
Nous allons créer un script pour automatiser la copie de monde dans le ramdisk, mais tout d'abord, une petite sauvegarde
$ cd ~/minecraft_server/ $ cp world/ world_storage/world $ cp world_nether/ world_storage/world_nether $ cp world_the_end/ world_storage/world_the_end
Maintenant, le script en lui même :
$ mkdir /dev/shm/minecraft $ mv world/ /dev/shm/minecraft/world $ mv world_nether/ /dev/shm/minecraft/world_nether $ mv world_the_end/ /dev/shm/minecraft/world_the_end
Le monde est maintenant chargé dans le ramdisk, mais pour le serveur Minecraft, il n'existe plus et sera recrée au démarrage. Pour palier a cela, nous devont créer un lien symbolique du monde dans le ramdisk
$ ln -s /dev/shm/minecraft/world/ . $ ln -s /dev/shm/minecraft/world_nether . $ ln -s /dev/shm/minecraft/world_the_end .
This will create a link to "/dev/shm/minecraft/world/" called "world/" in the server's directory, which the server will use like the actual world folder, but now inside the RAM.
Now we need to take care of the volatility of the ramdisk, by periodically saving the world from the RAM into "world_storage/". I'm going to use cron for scheduling and rsync for synching here.
First, we need a script that can be called by cron (it doesn't have to be a script, you could call rsync directly from the cron command line, but this allows for easy customizing later on)
#!/bin/sh VOLATILE="/home/$USER/minecraft_server/world/" PERMANENT="/home/$USER/minecraft_server/world_storage/" #TODO: Check if both directories actually exist, skipped here for clearness rsync -r -t -v "$VOLATILE" "$PERMANENT"
And then we need to make this script execute every few minutes (I'll use 5 minutes here, you can test out what works best for you)
$ crontab -e
You will be put into an editor (more precisely: the editor in your "EDITOR" environment variable) for editing your user cron table. Add the following line:
*/5 * * * * bash /home/<your_username>/minecraft/save_world.sh &>/dev/null
Windows
Use a tool like Dataram RAMDisk to create a RAM disk and put the server on it. This free tool has options to automatically save the image every time it shuts down and also every few minutes. Just remember to format the new "drive" once it's created.
Mac OS X
Type this create your RAM disk on Mac OS:
diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://1165430`
If you've followed these instructions, your RAM Disk will be available in /Volumes/ramdisk. After that, proceed as if you were on Linux, using Terminal and your favorite text editor.