ASTUCE : Créer un RamDisk, disque virtuel en RAM, avec IMDISK
Hors ligneKoytlo2 Le 28/11/2014 à 17:49 Profil de Koytlo2 Configuration de Koytlo2

salut

Le but de ce tutoriel est de montrer comment utiliser l'utilitaire IMDISK pour monter un disque virtuel en RAM sous Windows 7.

L'intérêt de monter un disque en RAM est de :

  • simuler un disque dur pour bénéficier des temps d'accès de la RAM
  • ne pas avoir à supprimer des fichiers temporaires
  • préserver un SSD dans le cas particuliers où on souhaite régulièrement modifier de gros fichiers

Attention. Le principe d'un RamDisk est de monter en RAM un disque virtuel. Tout ce qui ne sera pas enregistré sur un disque réel (SSD ou HDD) à la mise hors tension du PC sera perdu !

Pour donner une idée des performances voici quelques comparaisons de performances des disques matériels par rapport à un RAMDisk.



Les performances ci-dessus dépendent du matériel avec lequel le test est réalisé. Elles ne sont données qu'àtitre indicatif

1) Installation de IMDISK.


Le site officiel publiant l'application permettant un RamDisk : http://www.ltr-data.se/opencode.html/#ImDisk ou à télécharger dans la logithèque : télécharger ImDisk

A l'installation, l'application créé un nouveau panneau de contrôle visible depuis le Panneau de Configuration Windows.



Depuis ce panneau on peut facilement créer un disque virtuel ou le supprimer.



Toutefois Windows limite certaines fonctionnalités de l'interface graphique d'IMDisk pour des raisons de sécurité. (ex : formatage du disque virtuel)

Mais il est également possible d'utiliser IMDISK en ligne de commande. C'est ce mode qui sera utilisé par la suite pour configurer un RamDisk depuis un script.


2) Création d'un RamDisk automatiquement au démarrage du PC.


2.1) Création d'un script de création de RamDisk au démarrage du PC.



Depuis un Bloc Note placer le code suivant
Code:
imdisk -a -s 1G -m X: -p "/fs:ntfs /q /y" exit
En violet : la taille du disque virtuel à créer en Go. (ici 1 Go).
En vert : le nom du lecteur de disque utilisé

Enregistrer ce script dans un fichier ayant une extension .bat
Exemple : C:\MesScripts\RamDisk.bat


2.2) Ajouter une tâche dans le planificateur de tâche pour lancer le script au lancement du PC.


Lancer le planificateur de tâche :
- touche <Windows> + <R>
- taper taskschd.msc puis <Enter>

Ajouter une nouvelle tâche :



- Sélectionner l'entrée Bibliothèque du Planificateur de tâche.
- Clic droit puis choisir Ajouter une tâche.


Configurer la tâche pour lancer le script de création de RAMDisk



Depuis l'onglet général cocher Exécuter avec les autorisations maximales.




Dans l'onglet <Déclencheurs> choisir :
- Lancer au démarrage
- Cocher la case Reporter la tâche pendant
- Dans la zone de temps de report taper au clavier : 10 secondes.
Note : Lors des essais, en mettant un délais de report au démarrage inférieur à 3 sec, le disque ne se montait pas à chaque démarrage.




Dans l'onglet <Action>, taper dans les champs :
- Programmes/script : cmd
- Ajouter des arguments : /c "start /min C:\MesScript\RamDisk.bat"




Dans l'onglet condition, décocher l'option Ne démarrer la tâche que si l'ordinateur est relié au secteur.

La tâche s'enregistrera pour être lancée à chaque démarrage après avoir valider cette tâche avec le bouton <OK>. Au prochain démarrage du PC, une fenêtre noir apparaîtra transitoirement 10 secondes après le démarrage du Windows. Cette fenêtre se réduira dans la barre des tâches le temps de créer le RAMDisk. (durée d'exécution ~ 4 sec).

Ensuite un nouveau lecteur X: sera disponible dans l'explorateur de fichier Windows. Il correspondra au RAMdisk.


3) Déplacer les répertoires temporaires Windows dans le RamDisk.


Un des inconvénients du RamDisk est qu'à l'arrêt du PC, tout ce qui s'y trouvait et qui n'a pas été copié vers un disque réel, ne sera pas conservé pour le prochain démarrage.

Cet inconvénient peut être utilisé pour les dossiers temporaires Windows qu'il faut habituellement vider manuellement. En les déplaçant vers le RamDisk, ils seront vidés automatiquement, instantanément et en totalité à chaque arrêt du PC.

Les répertoires temporaires par défaut de Windows 7 sont :
- %USERPROFILE%\AppData\Local\Temp
- %SystemRoot%\TEMP

Il est possible de déplacer des répertoires temporaires vers le RamDisk en modifiant les variables d'environnement.
- touche <Windows> + <Pause>
- Dans la colonne de droite, sélectionner Paramètres système avancés.
- Dans l'onglet <Paramètres système avancés> cliquer sur <Variables d'environnement>




Dans la zone <Variables Utilisateur> modifier les variables suivantes :

Variable d'environnement Ancienne Valeur Nouvelle valeur
TMP %USERPROFILE%\AppData\Local\Temp X:\%username%\tmp
TEMP %USERPROFILE%\AppData\Local\Temp X:\%username%\tmp

Dans la zone <Variables Système> modifier les variables suivantes :

Variable d'environnement Ancienne Valeur Nouvelle valeur
TMP %SystemRoot%\TEMP X:\system\tmp
TEMP %SystemRoot%\TEMP X:\system\tmp

Pour accueillir ces dossiers temporaires dans le RamDisk, il faut modifier le script de création du Ramdisk pour y ajouter les instructions de création des dossiers temporaires.

Depuis le script créé précédemment (dans l'exemple : C:\MesScripts\RamDisk.bat), ajouter en fin de fichier (juste avant la ligne exit) les lignes suivantes :

Code:
mkdir X:\system\tmp mkdir X:\%username%\tmp
Ansi au prochain démarrage du PC, le script créera automatiquement les dossiers temporaires à la suite de la création du RamDisk.


4) Sauvegarder automatiquement des dossiers du RamDisk vers un disque dur.


4.1) Créé un dossier sur un disque dur pour stocker les données placées dans le RamDisk


Exemple : C:\Permanent


4.2) Modifier le script de création du RamDisk pour ajouter un dossier qui sera sauvegardé sur le disque dur


Modifier le script de création de RamDisk créé précédemment en l'ouvrant dans un bloc note.
Depuis le bloc note ajouter en fin de fichier (juste avant la ligne exit) les instructions suivantes :
Code:
mkdir X:\Permanent robocopy "C:\Permanent" "X:\Permanent" /E /R:0 /W:1

4.3) Créer un script de copie de donnée du RamDisk vers le disque dur.


Depuis un nouveau document de bloc note placer le code suivant :
Code:
robocopy "X:\Permanent" "C:\Permanent" /MIR /R:0 /W:1
Ce script utilise l'utilitaire robocopy pour faire une copie de fichier entre X: et C:.

A noter l'option MIR ne copie vers le disque dur que les données qui ont changées et supprime les fichiers de "C:\Permanent" qui n'existent pas dans "X:\Permanent".

Enregistrer ce script dans un fichier ayant une extension .bat
par exemple : C:\MesScript\SaveRamdisk.bat


4.4) Créer une tâche à exécuter à la déconnexion.


4.4.1) Pour une version de Win 7 Pro ou Intégrale :
- Appuyer simultanément sur les touches <Window> + <R>
- Taper gpedit.msc puis <Entrer>
- Ajouter un nouveau script de déconnexion dans : Configuration Utilisateur -> Windows -> Scripts.
- Double cliquer sur LogOff et Ajouter le script créé précédemment (exemple : C:\MesScript\Logout.bat)

Par défaut, Windows donne 10 minutes à ce script pour s'exécuter. Si la copie devait être plus longue, Windows interromprait le script avant la fin. (ce qui entraine la perte des données qui ne serait pas copié dans les 10 minutes qui suivent la demande d'arrêt du PC).

Pour augmenter la durée donné au script de déconnexion modifier l'entrée de police de groupe depuis gpedit :



Sous Configuration Ordinateur->Modèle d'administration->Système->Script -> Délai d'attente maximum pour les scripts de stratégie de groupe
Entrer un nouveau temps à attendre en secondes


4.4.2) Pour les versions Familiales.

gpedit n'existe pas dans les versions Familiales.

Il est possible de créer un script qui s'exécute sur la déconnexion en le déclenchant sur un évènement. Le problème est que rien ne garantie que le script ait le temps de s'exécuter avant l'arrêt de Windows. Typiquement, si le script dure plus de 2 sec, il est probable qu'il soit interrompu. (entrainant la perte des données qui ne seraient pas copiées).

Par conséquent dans ces versions de Windows, pour garantir la sauvegarde, il est préférable de cliquer sur le script de sauvegarde avant d'arrêter le PC, plutôt que d'utiliser l'exécution automatique d'une tâche planifiée.

Je mets tout de même la solution de tâche planifiée à la déconnexion pour référence.

Lancer le planificateur de tâche :
- touche <Windows> + <R>
- taper taskschd.msc puis <Enter>

Ajouter une nouvelle tâche :



- Sélectionner l'entrée Bibliothèque du Planificateur de tâche.
- Clic droit puis choisir Ajouter une tâche.




Configurer la tâche pour lancer le script copie de données du RamDisk vers un disque dur : depuis l'onglet général cocher Exécuter avec les autorisations maximales.




Dans l'onglet <Déclencheur>, choisir :
- lancer la tâche Sur un évènement.
- Journal : Système.
- Source : Winlogon
- ID de l'évènement : 7002




Dans l'onglet <Actions>, choisir de démarrer le programme, et depuis le bouton parcourir, choisir le script créé précédemment.
exemple : C:\MesScript\Logout.bat




Dans l'onglet <Conditions>, décocher l'option Ne démarrer la tâche que si l'ordinateur est relié au secteur. La tâche s'enregistrera pour être lancé à chaque démarrage après avoir valider cette tâche avec le bouton <OK>.

salut
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels