Admin/Dev

12
Nov.
2021

Créer un disque virtuel en RAM sur macOS

Publié par sky

La mémoire virtuelle permet de compenser un manque de mémoire vive en utilisant une portion du disque dur. C'est une action que fait automatiquement macOS pour continuer à fonctionner lorsque la mémoire vive se remplit.

Mais lorsque l'on dispose d'un excédant de mémoire vive, savez vous qu'il est possible de faire l'inverse ? Il est possible de créer un disque dur virtuel qui sera stocké en mémoire vive.

 

A quoi cela peut il bien servir ?

Depuis toujours, nous disposons toujours de bien plus de stockage sur nos disques durs que de mémoire vive, cependant cette dernière est toujours bien plus rapide.

Il peut donc être intéressant, si l'on a besoin d'un stockage rapide de créer un disque sur une portion de sa mémoire vive. Ce volume, une fois monté, permettra des débits bien plus élevé que sur un disque dur classique. Il est donc possible d'accélérer le chargement de fichiers ou d'applications en les stockant en RAM.

Attention tout de même, stocker en mémoire vive n'a pas que des avantages. En effet, la mémoire vive ne conserve ses données que tant qu'elle est alimentée. Une fois le Mac éteint, tout ce qui est en mémoire vive est perdu, il est nécessaire de démarrer macOS depuis le début pour retrouver un système fonctionnel.

En aparté, en sachant cela, vous comprendrez peut être désormais mieux la différence entre un Mac en veille et un Mac en veille profonde. Lorsque vous fermez votre MacBook et que vous le ré-ouvrez, il revient directement là où vous l'aviez laissé, mais la batterie ne s'est pas "trop" vidée. Votre Mac s'est mis en veille, pas totalement éteint, la mémoire vive continue d'être alimentée mais tout le reste est mis au repos.

Si vous le laissez fermer trop longtemps, que la batterie arrive sur ses réserves, le Mac va alors passer en veille profonde. Pour cela, il va copier l'intégralité de la mémoire vive sur le disque dur, et s'éteindre. Au redémarrage, il retrouvera le bloc mémoire, et le restaurera tel qu'il était. La barre de progression que l'on voit lors d'une sortie de veille profonde est tout simplement la copie depuis le disque vers la mémoire.

La mémoire vive étant perdue lors d'une extinction, travailler avec un disque en RAM est à faire avec des précautions. Au démarrage, il faut veiller à copier les informations que l'on veut y stocker avant de s'en servir. Et à l'extinction, il faut s'assurer qu'aucune donnée n'y reste sans avoir été récupérée et placer sur un disque dur. Dans l'idéal, il faudrait aussi veiller à copier régulièrement les données ayant changé sur le disque virtuel vers le disque dur, dans le cas où le Mac planterait.

Aujourd'hui, les SSD disposent de vitesses de lecture et d'écriture fulgurantes, avec des temps de latence extrêmement faibles pour couronner le tout. Ce qui veut dire qu'il y a de moins en moins l'utilité d'un disque en RAM.

Cependant, un disque situé en RAM peut toujours servir de mémoire tampon, notamment lors de très nombreuses écritures. Cela peut ainsi permettre d'économiser de la durée de vie de nos SSDs qui sont désormais soudés sur la carte mère de nos Mac.

Si par exemple, vous devez télécharger de nombreuses archives d'une certaine taille, les décompresser et les ranger où vous devez le faire. Lors du téléchargement, vous allez écrire une première fois dans le dossier Téléchargements sur votre disque, lors de la décompression, une seconde fois, et au final, vous allez, au mieux, déplacer les fichiers de votre dossier Téléchargements, sans impact négatif pour votre disque, au pire, les déplacer sur une autre partition, ce qui implique une copie sur l'autre disque, et une suppression sur votre disque principal. Avec un téléchargement sur un disque virtuel, votre disque dur ne serait utilisé que l'on de la dernière copie.

 

Créer un disque virtuel sur macOS

La création d'un disque virtuel se fait en deux étapes. La première va être d'allouer une portion de la mémoire vive pour créer le disque. La seconde va être de la formatter et de la monter afin que macOS puisse s'en servir. Ouvrons un terminal.

La première étape se fait avec la commande hidutil

hdiutil attach -nomount ram://2000000

Dans ce cas, je viens de créer un espace de 1Go, et la commande me répond

/dev/disk9 

qui est l'identifiant du volume créé. Vous en aurez certainement un différent selon le nombre de volumes que votre macOS connait.

Jusqu'ici, vous ne verrez rien dans Finder, mais vous pourrez le trouver dans Utilitaire de disque (ou via le terminal). Vous pouvez ainsi voir que nous disposons d'un volume non initialisé, d'un peu plus d'1 Go, et qu'il est bien à l'emplacement /dev/disk9.

Volume créé, mais non initialisé

Vous pouvez faire varier la taille selon vos besoins, ainsi que votre mémoire disponible.

Maintenant, il faut formatter le volume afin qu'il soit utilisable par macOS. Le plus simple est de formatter le volume en HFS+, le format de fichier historique d'Apple, mais qui n'est plus utilisé, depuis 10.13 / 10.14.

diskutil eraseVolume HFS+ "DisqueRAM" /dev/disk9

Cette commande va faire le formattage de votre disque, et le monter sur Finder.

Started erase on disk9
Unmounting disk
Erasing
Initialized /dev/rdisk9 as a 977 MB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk9 DisqueRAM

Comme vous pouvez le voir, dans Utilitaire de disque, votre volume est désormais un disque Mac OS étendu.

Volume formaté en HFS+

Et il y a déjà 24Mo de consommé alors que le disque est vide. Il s'agit de la table de partition.

Petite astuce, vous pouvez réaliser l'action avec une seule ligne de commande

diskutil eraseVolume HFS+ "DisqueRAM" `hdiutil attach -nomount ram://2000000`

Depuis 10.13, Apple propose un nouveau format schéma de partition pour le formattage de ses disques durs, l'APFS dont nous vous avions déjà parlé ici.

Il peut donc être pratique de monter un volume avec ce format, pour cela la seconde commande sera

diskutil apfs create /dev/disk9 "DisqueRAM"

avec le résultat, légèrement plus complet dû à la structure plus complexe de l'APFS

Started APFS operation on disk9
Creating a new empty APFS Container
Unmounting Volumes
Switching disk9 to APFS
Creating APFS Container
Created new APFS Container disk10
Disk from APFS operation: disk10
Finished APFS operation on disk9
Started APFS operation on disk10
Preparing to add APFS Volume to APFS Container disk10
Creating APFS Volume
Created new APFS Volume disk10s1
Mounting APFS Volume
Setting volume permissions
Disk from APFS operation: disk10s1
Finished APFS operation on disk10

macOS 10.13 High Sierra supporte APFS cependant il s'agissait plus d'une pré-version très buggée, et le montage d'un volume virtuel ne fonctionne pas. Il faudra donc se contenter d'un volume HFS+, comme pour toutes les versions inférieure de mac OS ou Mac OS X. A partir de macOS 10.14, il ne devrait pas y avoir de soucis.

Comme pour la commande en HFS+, il est possible de regrouper les deux commandes en une.

diskutil apfs create `hdiutil attach -nomount ram://2000000` "DisqueRAM"

De part la structure du format APFS, l'image disque est ici toujours visible dans Utilitaire de disque. Cependant, il n'est pas possible de l'éjecter tant que le volume APFS est en fonction.

Volume formaté en APFS

Et bien évidemment, vous n'êtes pas limité à un disque virtuel, vous pouvez en créer autant que vous le souhaitez, et tant que votre Mac dispose de suffisamment de mémoire vive.

Il existe plusieurs logiciels qui vont permettre de créer des disques virtuels, cependant, ils ne sont que des interfaces graphiques à ces commandes que l'on peut effectuer dans le terminal. Maintenant que vous connaissez les commandes, vous saurez exactement ce que ces logiciels font. Il peut être intéressant de garder les commandes en tête pour les utiliser en conjonction de launchd pour un montage automatique d'un disque RAM à l'ouverture de la session.

 

Quelques précautions

Attention, lorsque vous allez créer un disque virtuel en mémoire, celle ci sera réservée et ne pourra plus être utilisée pour charger de nouvelles applications ou de nouveaux fichiers dans ces dernières.

Il faut donc veiller à allouer une portion de sa mémoire qui ne génera pas macOS dans son fonctionnement. Il serait ridicule de créer un dique RAM si volumineux que macOS serait obligé d'utiliser massivement de la mémoire virtuelle en échange. Pire, il pourrait finir par planter, perdant toutes les informations que vous auriez placé sur le disque virtuel. Sauf cas particuliers, ce serait donc totalement contre-productif.

 

Petit comparatif de vitesse

Mettre en place et utiliser un disque virtuel nécessite un peu de travail et peut se révéler être une vraie contrainte. En dehors d'une éventuelle réduction de l'usure de votre disque quel est le gain en vitesse.

Voici quelques benchs réalisés sur un vieux Mac Pro 2009, qui peut prendre en charge jusqu'à 128 Go de RAM et donc permettre de beaux volumes virtuels.

Voici les premiers benchs tirés d'un précédent article sur l'installation d'un disque NVME placé sur une carte PCI dans cette machine.

Disque à plateau sur SATA 2 (3Gbit/s)

Disque à plateau sur SATA 2 (3Gbit/s)

Disque SSD sur SATA 2 (3Gbit/s)

Disque SSD sur SATA 2 (3Gbit/s)

Disque SSD NVMe sur PCI

Disque SSD NVMe sur PCI

Et voici les performances de notre disque virtuel situé en RAM, toujours sur le même Mac Pro.

 Disque RAM

Disque RAM

Comme on peut le voir, le disque en RAM est le plus rapide. Cependant, le SSD NVMe en PCI se rapproche des scores du disque en RAM. Comme indiqué dans le précédent article, le disque dispose normalement de bien meilleures performances, mais semblait limité par le Mac. Aujourd'hui, nous pouvons confirmer que c'est bien le cas, puisque de toute façon, la mémoire RAM n'est pas capable d'aller beaucoup plus vite.

Il serait intéressant de faire le test sur une machine récente. Car, si les disques sont désormais les mêmes que celui utilisé dans le Mac Pro, la mémoire vive et ses débits se sont largement améliorés en 12 ans.

 
 
Commentaires
Commentaire de Obiwan le 4 Avril 2022 à 14:47

Merci pour cet article très intéressant. Pour ceux que la ligne de commande rebute (j'en suis un peu...) il y a iRAMdisk qui fait le boulot ;-)

 
Commentaire de sky le 4 Avril 2022 à 15:01

Salut Obiwan. Merci pour ton message. En effet, il existe des outils graphiques pour faire le même travail (même si c'est du coup, un peu trop facile :-p ). Malheureusement, lors de l'écriture de l'article, je n'ai trouvé aucun site officiel d'un de ces outils.

 

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Ouvrir le panneau de gestion des cookies
Fermer le panneau
Ce site utilise des cookies pour assurer son bon fonctionnement. Il utilise aussi des cookies issues de services tiers permettant de proposer des fonctionnalités avancées. À tout moment, vous pouvez choisir quels services vous souhaitez activer ou refuser, afin de retirer votre consentement quant à l'utilisation des cookies.
 
Personnalisation des services
Vous êtes libre de choisir quels services vous souhaitez activer. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l'utilisation de technologies de suivi nécessaires à leur bon fonctionnement. En retirant votre consentement pour certains de ces services, certaines fonctionnalités du site peuvent ne plus fonctionner.
Navigation du site  En savoir plus
Le site écrit un cookie de session permettant son bon fonctionnement et aidant à la navigation. Il ne peut être désactivé.
Utilisation : 1 cookie, enregistre l'identifiant de la session.
Durée de vie : Le cookie est présent pendant toute la session sur le site. Il devient obsolète après 24 minutes d'inactivité.
Obligatoire
Popup Média
Afficher des vidéos depuis Yoube ou Dailymotion.
 
Tout accepter Tout refuser Gérer