Stocké des fichier dans la ram
friends ofccm
-
sarkophage -
sarkophage -
Bonjours, BONNE ANNEE
j'aurais aimé savoire si il été possible sous debian de stocké des
fichiers comme par exepmple toto.txt dans la ram (pas dutout sur le disque dure) et de pourvoire l'édité, renommé supprimé tout comme sur un disque dure...
merci
j'aurais aimé savoire si il été possible sous debian de stocké des
fichiers comme par exepmple toto.txt dans la ram (pas dutout sur le disque dure) et de pourvoire l'édité, renommé supprimé tout comme sur un disque dure...
merci
A voir également:
- Fichier ram
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
11 réponses
Ca fait vraiement mal, l'incompetence des reponses <1> et <3> purement et 100% fausses!!! Je suis desole mais cette fois-ci il fallait le dire. La solution avec la ramdisk de <4> est bien-sur correcte mais meme elle n'est pas la meiller solution ou la methode la plus facile (s'il faut encore charger de modules ou monter explicitement).
Les auteurs de <1> et <3> sont vraiement trops jeunes pour avoir vu comment c'etait utile d'avoir un ramdisk (une simulation de disque dur) sur un Atari ST ou un PC Msdos qui avait plus que 640 Ko de ram mais ou le systeme d'exploitation ne permettait pas d'utiliser ce ram de facon directe. La solution etait d'utiliser le reste comme ramdisk. Sur un Atari (anno 1986-1988) on n'avait meme pas toujour de disque dur, donc pour compiler il fallait prendre un ramdisk si on ne voulait pas le faire sur la disquette. C'est un truc vieux de 20 ans ou plus et bien sur en Linux depuis les toutes premieres versions depuis plus de dix ans ca existe. En fait c'est necessaire pour pouvoir installer Linux (on fait tourner Linux sur le ramdisk pendant l'installation).
Mais ajourd'hui depuis la version 2.4 du noyau il y a encore beaucoup mieux: Il y a un truc qui s'appelle le "temporary filesystem". Tapez sur votre console: "df" et si vous voyez une ligne comme:
tmpfs 322912 0 322912 0% /dev/shm
vous avec votre "disque temporaire dans le ram" qui marche parfaitement encore mieux que le ramdisque mentionne par Gordius, car elle ne bouffe que de memoire quand vous mettez vraiement de fichiers la dedans (avec une vrai ramdisk la memoire est toujours reserves d'avance). Chez vous la taille (dans l'exemple ci-dessus: 322912 Ko) sera differente, par default c'est la moitie de votre ram. Si vous avez par exemple 1 Mo, ca fait un disque temporaire de 512 Ko.
L'utilisation: Triviale, c'est simplement le repertoire /dev/shm. Normalement dans les bonnes distributions Linux digne de se nom il n'y a rien a faire. Vous copiez vos fichiers dans le repertoire /dev/shm/ et apres vous travaillez la dessus. Par exemple je m'en sert pour compiler et installer de paquets tar si je ne veux garder le repertoire source apres. Bien-entendu le contenu de /dev/shm/ sera detruit apres un reboot de l'ordinateur (c'est dans le ram).
Pour le comfort une petite astuce: Faites dans votre home un lien:
et apres vous avec chez vous un sous-repertoire ~/tmpfs/ qui correspond a ce disque temporaire.
Comme je l'ai deja mentionne ca ne bouffe que de memoire quand il y a vraiement de fichiers la dedans. Ca fonctionne tres bien et c'est directement gere par le noyau. Pour l'utilisateur c'est parfaitement transparent. Quand vous regardez avec la commande "free" l'utilisation de votre memoire, les fichiers dans /dev/shm/ sont comptabilises dans la categorie "cache". Bien sur la taille maximale est limite et si vous depassez votre memoire (pas avec ce disque mais avec un grand nombre de logiciel qui tournent ou d'une autre facon) ca passe sur le swap donc ca revient sur le disque dur mais d'une autre facon. En fait il y a des gens qui ont adopte la strategie de monter le repertoire /tmp sur le "temporary filesystem" et de prevoir un tres grand swap. Quand il y a peu de fichiers dans /tmp ca reste dans le ram et s'il y en a trop ca passe sur le swap qui meme un peu plus efficace qu'une vraie partition. A savoir: tout le monde utilise le /tmp/ de facon automatique et implicite (toute appelle de gcc cree de fichier la dedans etc.).
Pour que ca marche avec le "temporary filesystem" il faut bien-sur le noyau soit correctement configure avant la compilation et il faut aussi que le fichier /etc/fstab contiennent une ligne similaire a:
tmpfs /dev/shm tmpfs noauto,defaults 0 0
Je crois ces deux choses doivent etre automatique dans toute distribution Linux utilisant un noyau 2.4 ou 2.6. Sinon il faut recompiler le noyau et/ou ajouter cette ligne dans le /etc/fstab et monter le "temporary filesysteme". Mais franchement pour une Fedora/Redhat ce n'est pas necessaire et pour le Mandrake j'estime la probabilte que ce soit necessaire a environ zero. Ce genre de choses fait partie des choses elementaires qui sont toujours prevues.
Pour revenir au poste original: La reponse est OUI si ton Debian utilise le noyau 2.4 ou 2.6 (en fait si tu as le 2.2 avec le Debian "stable" passe en noyau 2.4). Meme avec le noyau 2.2 tu peux toujours faire le ramdisk a l'ancienne mais c'est beaucoup mieux de passer a 2.4 (aussi pour d'autre choses comme support USB etc.).
Les auteurs de <1> et <3> sont vraiement trops jeunes pour avoir vu comment c'etait utile d'avoir un ramdisk (une simulation de disque dur) sur un Atari ST ou un PC Msdos qui avait plus que 640 Ko de ram mais ou le systeme d'exploitation ne permettait pas d'utiliser ce ram de facon directe. La solution etait d'utiliser le reste comme ramdisk. Sur un Atari (anno 1986-1988) on n'avait meme pas toujour de disque dur, donc pour compiler il fallait prendre un ramdisk si on ne voulait pas le faire sur la disquette. C'est un truc vieux de 20 ans ou plus et bien sur en Linux depuis les toutes premieres versions depuis plus de dix ans ca existe. En fait c'est necessaire pour pouvoir installer Linux (on fait tourner Linux sur le ramdisk pendant l'installation).
Mais ajourd'hui depuis la version 2.4 du noyau il y a encore beaucoup mieux: Il y a un truc qui s'appelle le "temporary filesystem". Tapez sur votre console: "df" et si vous voyez une ligne comme:
tmpfs 322912 0 322912 0% /dev/shm
vous avec votre "disque temporaire dans le ram" qui marche parfaitement encore mieux que le ramdisque mentionne par Gordius, car elle ne bouffe que de memoire quand vous mettez vraiement de fichiers la dedans (avec une vrai ramdisk la memoire est toujours reserves d'avance). Chez vous la taille (dans l'exemple ci-dessus: 322912 Ko) sera differente, par default c'est la moitie de votre ram. Si vous avez par exemple 1 Mo, ca fait un disque temporaire de 512 Ko.
L'utilisation: Triviale, c'est simplement le repertoire /dev/shm. Normalement dans les bonnes distributions Linux digne de se nom il n'y a rien a faire. Vous copiez vos fichiers dans le repertoire /dev/shm/ et apres vous travaillez la dessus. Par exemple je m'en sert pour compiler et installer de paquets tar si je ne veux garder le repertoire source apres. Bien-entendu le contenu de /dev/shm/ sera detruit apres un reboot de l'ordinateur (c'est dans le ram).
Pour le comfort une petite astuce: Faites dans votre home un lien:
cd ~ ln -s /dev/shm tmpfs
et apres vous avec chez vous un sous-repertoire ~/tmpfs/ qui correspond a ce disque temporaire.
Comme je l'ai deja mentionne ca ne bouffe que de memoire quand il y a vraiement de fichiers la dedans. Ca fonctionne tres bien et c'est directement gere par le noyau. Pour l'utilisateur c'est parfaitement transparent. Quand vous regardez avec la commande "free" l'utilisation de votre memoire, les fichiers dans /dev/shm/ sont comptabilises dans la categorie "cache". Bien sur la taille maximale est limite et si vous depassez votre memoire (pas avec ce disque mais avec un grand nombre de logiciel qui tournent ou d'une autre facon) ca passe sur le swap donc ca revient sur le disque dur mais d'une autre facon. En fait il y a des gens qui ont adopte la strategie de monter le repertoire /tmp sur le "temporary filesystem" et de prevoir un tres grand swap. Quand il y a peu de fichiers dans /tmp ca reste dans le ram et s'il y en a trop ca passe sur le swap qui meme un peu plus efficace qu'une vraie partition. A savoir: tout le monde utilise le /tmp/ de facon automatique et implicite (toute appelle de gcc cree de fichier la dedans etc.).
Pour que ca marche avec le "temporary filesystem" il faut bien-sur le noyau soit correctement configure avant la compilation et il faut aussi que le fichier /etc/fstab contiennent une ligne similaire a:
tmpfs /dev/shm tmpfs noauto,defaults 0 0
Je crois ces deux choses doivent etre automatique dans toute distribution Linux utilisant un noyau 2.4 ou 2.6. Sinon il faut recompiler le noyau et/ou ajouter cette ligne dans le /etc/fstab et monter le "temporary filesysteme". Mais franchement pour une Fedora/Redhat ce n'est pas necessaire et pour le Mandrake j'estime la probabilte que ce soit necessaire a environ zero. Ce genre de choses fait partie des choses elementaires qui sont toujours prevues.
Pour revenir au poste original: La reponse est OUI si ton Debian utilise le noyau 2.4 ou 2.6 (en fait si tu as le 2.2 avec le Debian "stable" passe en noyau 2.4). Meme avec le noyau 2.2 tu peux toujours faire le ramdisk a l'ancienne mais c'est beaucoup mieux de passer a 2.4 (aussi pour d'autre choses comme support USB etc.).
si ton kernel a le support ramdisk c'est bon, par contre je ne sais absolument pas si les kernel livrés avec les distrib l'inclu.
Une fois le support ramdisk activé dans le noyaux :
pour commencer la taille d'un ramdisk est 4mo pour la modifier :
- si le support est en dur l'option ramdisk_size=xxxxx passé au noyaux change la taille par défaut a xxxxx en ko.
- si le support est en module : #modprobe rd rd_size=xxxxxx fait la même chose.
Après tu crées un point de montage, par exemple : #mkdir /mnt/rd
Après tu génère un système de fichier sur un device ramdisk :
#mke2fs /dev/ram0
Tu le monte
#mount /dev/ram0 /mnt/rd
et c'est bon tu a un système de fichier temporaire sur /mnt/rd qui point vers un espace de la mémoire vive dédié uniquement au stockage.
Mais ne pas mettre de truc important a cette endroit parce qu'il n'en reste aucune trace après extinction de l'ordi.
Voili voilou c'etait pas trop la réponse est simple: NON !! quand même.
Une fois le support ramdisk activé dans le noyaux :
pour commencer la taille d'un ramdisk est 4mo pour la modifier :
- si le support est en dur l'option ramdisk_size=xxxxx passé au noyaux change la taille par défaut a xxxxx en ko.
- si le support est en module : #modprobe rd rd_size=xxxxxx fait la même chose.
Après tu crées un point de montage, par exemple : #mkdir /mnt/rd
Après tu génère un système de fichier sur un device ramdisk :
#mke2fs /dev/ram0
Tu le monte
#mount /dev/ram0 /mnt/rd
et c'est bon tu a un système de fichier temporaire sur /mnt/rd qui point vers un espace de la mémoire vive dédié uniquement au stockage.
Mais ne pas mettre de truc important a cette endroit parce qu'il n'en reste aucune trace après extinction de l'ordi.
Voili voilou c'etait pas trop la réponse est simple: NON !! quand même.
The software said "Requires Windows98, Win2000, or better, So I installed Unix.
Si j'ai bien compris (??) tu as copie de fichiers dans /dev/shm/ avant de monter le tmpfs sur /dev/shm. Dans ce cas ces fichiers ne se trouvent pas dans le ram mais sur le disque dur dans la partion ou il y a /dev/shm/, tres probablement la racine "/". En fait ce genre de fichiers (dans le point de montage avant le mount) ne genent pas de tout le mount qui fonctionne parfaitement. Cependant les fichiers memes deviennent simplement caches, invisibles (mais pas effaces) pendant le mount car le mount implique que le repertoire "/dev/shm/" est maintenant autre chose (de ram ici, mais ca peut aussi etre une cle memoire, un cd, une disquette, une autre partition, toute chose qui peut etre montee). Apres umount de /dev/shm les fichiers reapparaissent et tu peux les effacers ou saufgarder si ca contient de donnees importantes.
Si l'umount est refuse, c'est typiquement parce qu'il y a quelque chose active avec ce repertoire. Par exemple, tu as quelques part un terminal (ou console) ou tu avais fait "cd /dev/shm" et tu y es reste. Apres si tu veux faire "umount /dev/shm" dans un autre terminal c'est refuse car /dev/shm est active a cause du fait que tu es encore dans ce repertoire dans une autre fenetre. Solution simple: sortir avec
"cd <autre_repertoire_en_dehors_de_/dev/shm>" dans l'autre terminale est refaire l'umount. Un programe (C, perl, ...) qui tourne et qui est en train d'ecrire sur ou lire depuis /dev/shm a le meme effet. En fait tout fichier ouvert cree un blocage. Si rien n'aide pour arreter ca, rebooter et nettoyer le /dev/shm/ apres le reboot. Avant le mount /dev/shm/ n'est qu'un repertoire ordinaire appartenant a root, donc il faut faire "su" pour le nettoyer. Apres le mount, tout le monde peut y ecrire et ca sera dans le ram.
Pour faire automatiquement, j'ai malheureusement comis une petite erreur dans <10>, mais c'est corrige dans <11>. Alors encore une fois: pour que le /dev/shm soit monte automatiquement des le boot, tu ajoutes la ligne:
L'erreur c'etait l'option "noauto" qui a empeche le mount automatique apres le boot. Il ne faut pas la mettre. J'espere que ca resoud ton probleme.
Si l'umount est refuse, c'est typiquement parce qu'il y a quelque chose active avec ce repertoire. Par exemple, tu as quelques part un terminal (ou console) ou tu avais fait "cd /dev/shm" et tu y es reste. Apres si tu veux faire "umount /dev/shm" dans un autre terminal c'est refuse car /dev/shm est active a cause du fait que tu es encore dans ce repertoire dans une autre fenetre. Solution simple: sortir avec
"cd <autre_repertoire_en_dehors_de_/dev/shm>" dans l'autre terminale est refaire l'umount. Un programe (C, perl, ...) qui tourne et qui est en train d'ecrire sur ou lire depuis /dev/shm a le meme effet. En fait tout fichier ouvert cree un blocage. Si rien n'aide pour arreter ca, rebooter et nettoyer le /dev/shm/ apres le reboot. Avant le mount /dev/shm/ n'est qu'un repertoire ordinaire appartenant a root, donc il faut faire "su" pour le nettoyer. Apres le mount, tout le monde peut y ecrire et ca sera dans le ram.
Pour faire automatiquement, j'ai malheureusement comis une petite erreur dans <10>, mais c'est corrige dans <11>. Alors encore une fois: pour que le /dev/shm soit monte automatiquement des le boot, tu ajoutes la ligne:
tmpfs /dev/shm tmpfs defaults 0 0
L'erreur c'etait l'option "noauto" qui a empeche le mount automatique apres le boot. Il ne faut pas la mettre. J'espere que ca resoud ton probleme.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
:S j'ai regardé vite fais mais comment on peut faire alors vue que
quand on chage un cd ou une disque en boot bah c'est stocké dans la ram et en plus il peut comme dans Knoopix stocké et meme permettre d'édité...
quand on chage un cd ou une disque en boot bah c'est stocké dans la ram et en plus il peut comme dans Knoopix stocké et meme permettre d'édité...
La ram n'est pas du tt utilisée de la meme facon que le dd par un ordinateur. La ram est si on veut une memoire a cours termes qui appartient uniquement au bon fonctionnement des processus. L'utilisateur ne peut y toucher et faire sa sauce.
Bye
Bye
j'ai pas osé dire que c'était de la m***e les réponses précédentes
En fait c'est necessaire pour pouvoir installer Linux (on fait tourner Linux sur le ramdisk pendant l'installation) -> les auteurs des réponses <1>&<3> peuvent aller voir les fichiers readme des source du kernel à initrd... ça leur apprendra qquechose
En fait c'est necessaire pour pouvoir installer Linux (on fait tourner Linux sur le ramdisk pendant l'installation) -> les auteurs des réponses <1>&<3> peuvent aller voir les fichiers readme des source du kernel à initrd... ça leur apprendra qquechose
The software said "Requires Windows98, Win2000, or better, So I installed Unix.
Vraiment dsl pour la reponse que j'avais fournis en 3. J'ai toujours entendu dire ce que j'ai precedement. Ba ca confirme que les profs ne sont pas toujours au top lol. Encore sorry et merci pour cette superbe explication donnée par kmf.
a+
Chris
a+
Chris
Slt!
J'ai un ptit probleme en ce qui concerne le dossier /dev/shm.
Je l'ai monté comme precisé ci-dessus, mais j'ai du le faire alors qu'il y avait kk chose dedans ( du aux tests). Maintenant, ca ne veut pas partir meme apres la suppression de la ligne ds le fichier /etc/fstab et la commande umount.
Ma question est: Comment je peux faire pour avoir ce dossier à chaque demarrage?
Merci d'avance.
ciao.
J'ai un ptit probleme en ce qui concerne le dossier /dev/shm.
Je l'ai monté comme precisé ci-dessus, mais j'ai du le faire alors qu'il y avait kk chose dedans ( du aux tests). Maintenant, ca ne veut pas partir meme apres la suppression de la ligne ds le fichier /etc/fstab et la commande umount.
Ma question est: Comment je peux faire pour avoir ce dossier à chaque demarrage?
Merci d'avance.
ciao.
RamDisk = disque dur de petite capacité avec acces très très rapide (ns au lieu de ms)
Par exemple si on boot le CD live d'une DSL sur un super vieux pc, si on a > 128Mo de ram, on peut précharger le LiveCD en ram avec l'option "toram", ce qui permettra de ne plus utiliser le CD du tout.
(le liveCD fait 50 Mo)
Les applis vont se lancer quasi instantanément (suivant le processeur), on a donc un systeme limité par la puissance du processeur plutot que par le débit misérable d'un HD ou d'un CD.
Votre machine devient une autre machine, résultat garanti !!!
Suffit de laisser une clé USB en permanence sur le PC et de booter avec les options:
restore=sda1
mydsl=sda1
(ou sdxx suivant votre config)
et de spécifier la première fois les fichiers de conf à conserver pour le prochain boot...
DSL c'est comme le LSD t'hallucine à mort mais dans le bon sens
Par exemple si on boot le CD live d'une DSL sur un super vieux pc, si on a > 128Mo de ram, on peut précharger le LiveCD en ram avec l'option "toram", ce qui permettra de ne plus utiliser le CD du tout.
(le liveCD fait 50 Mo)
Les applis vont se lancer quasi instantanément (suivant le processeur), on a donc un systeme limité par la puissance du processeur plutot que par le débit misérable d'un HD ou d'un CD.
Votre machine devient une autre machine, résultat garanti !!!
Suffit de laisser une clé USB en permanence sur le PC et de booter avec les options:
restore=sda1
mydsl=sda1
(ou sdxx suivant votre config)
et de spécifier la première fois les fichiers de conf à conserver pour le prochain boot...
DSL c'est comme le LSD t'hallucine à mort mais dans le bon sens
tmpfs /dev/shm tmpfs noauto,defaults 0 0
(le 1er mot: "tmpfs" peut aussi etre "none")
dans /etc/fstab. Apres: "mount /dev/shm" (ou un reboot) tu auras le tmpfs.
Si tu ne veux pas modifier /etc/fstab tu peux faire un test avec:
Ici tu peux remplacer /dev/shm pour un autre repertoire comme point de montage si tu veux. Peut-etre c'est ca sur la Slackware (avec un autre repertoire) ? Il n'y a ni dans /etc/fstab ni dans l'affiche de "df" une ligne contenant le mot "tmpfs" ? A l'autre cote la slackware est repute pour prevoir peu de choses automatiquement mais ca permet beaucoup mieux de configurer manuellement les choses (par rapport a Fedora, Mandrake, etc.). Donc tres bien pour les experts qui savent adapter le systeme et moins bien pour les debutants qui ont besoin que les choses soient automatiquement configure.
tmpfs /dev/shm tmpfs defaults 0 0
Desole.
ooooooooooooooh je sens que ce truc là va être mon copain! justement j'ai une paire de trucs à compiler et ça me gavait de faire ça sur le dur, c'est tout à fait bienvenu...
épatant :)