5 votes

Sauvegarde de disque paresseuse pour un ramdisk sous Linux ?

Résumé rapide et sale : je veux quelque chose comme un cache d'écriture qui ne se vide que lorsque le système n'est pas occupé.

Je veux quelque chose qui ressemble à cette question Disque RAM et RAID physique avec une légère torsion.

Pour une construction particulière que je fais souvent, j'aimerais garder la sortie de la construction dans un disque RAM qui est éventuellement écrit sur le disque. Une cible particulière que je construis est vraiment un tas de cp, tar, gzip et autres, donc je suis limité par le disque. Dans un cycle de débogage serré, je veux que ce soit rapide, et je ne me soucie pas tellement que la sortie de la compilation soit détruite par la mise hors tension. Cependant, ce serait bien si le ramdisk était synchronisé avec le disque lorsque le système n'est pas occupé. Je peux imaginer faire cela avec une tâche cron, mais je vous demande à tous s'il y a une solution plus cohérente qui combine les caractéristiques de l'autre question (ramdisk qui déborde sur le disque) avec cette nouvelle tournure (avec suffisamment de temps d'inactivité sur le disque, le contenu du ramdisk sort aussi sur le disque). Idéalement, l'ensemble ressemble à un point de montage unique, où je définis la taille totale et la quantité de RAM à utiliser.

--- mis à jour ---

Je ne pense pas que le cache des pages fasse ce que je veux, car je veux vraiment des performances d'écriture assez rapides.

4voto

Jeff Thomas Points 183

mais je vous demande à tous sur le hors chance qu'il y ait une solution plus cohérente solution qui combine les caractéristiques de l'autre question (ramdisk qui déborde sur le disque) avec cette nouvelle tournure (avec suffisamment de temps d'inactivité temps d'inactivité du disque, le contenu du ramdisk est aussi sur le disque).

Ce que vous demandez est un mécanisme d'écriture différée, c'est-à-dire que les écritures sur le disque RAM sont prioritaires par rapport aux écritures sur le stockage permanent, mais toutes les données sont finalement écrites sur le disque, correct ?

Idéalement, l'ensemble du ressemble à un seul point de montage, où je fixe la taille totale et la la quantité de mémoire vive à utiliser.

Aussi bizarre que cela puisse paraître, vous pouvez peut-être vous en sortir en utilisant un miroir LVM pour effectuer ce processus.

  1. Faites du disque RAM un membre d'un groupe de volume avec un lecteur physique.

  2. Miroir le ramdisk à votre disque dur. Notez que les miroirs LVM sont spécifiques à la direction, c'est-à-dire que les données circulent d'un PV à l'autre de manière unidirectionnelle.

  3. Montez le volume LVM quelque part comme un système de fichiers unifié.

Les écritures sont récupérées et écrites sur le disque RAM basé sur LVM (et en vertu du miroir, sur le disque physique également). Contrairement à un RAID-1 où les écritures sont synchrones et parallèles (les deux disques écrivent en même temps), un miroir LVM est asynchrone et séquentiel (le disque primaire reçoit l'écriture, puis LVM pousse l'écriture vers le miroir). Cela se rapproche (mais pas à 100%) du comportement que vous recherchez. Gardez à l'esprit que LVM exerce une pression sur les écritures en attente pour qu'elles soient effacées sur le disque, donc tout "ralenti" que vous voyez sera mesuré en secondes au mieux, en secondes partielles au pire.

Le revers de la médaille de cet arrangement est que vous disposez maintenant d'un très beau mécanisme de persistance. Lorsque vous démarrez, créez votre disque virtuel et mettez en miroir le disque existant ; une fois le miroir terminé, rompez le miroir et inversez la direction (disque virtuel -> disque dur). Cela signifie que chaque redémarrage aura pour résultat que vos données seront placées dans le ramdisk, et juste avant l'arrêt, écrites du ramdisk vers le disque dur. Cela pourrait probablement être scripté en perl ou un Shell Shell.

Je suis sûr qu'il y a d'autres façons de faire, mais c'est la version rapide et sale. Je vais y réfléchir un peu plus et voir ce que je peux trouver.

2voto

Benjamin Pollack Points 10458

Ce que vous décrivez est exactement ce que le cache disque de votre système d'exploitation est censé faire. Les systèmes d'exploitation modernes sont très performants à cet égard s'ils disposent de suffisamment de mémoire.

A mon avis : Donnez à votre machine suffisamment de RAM et laissez le système d'exploitation faire le gros du travail.

1voto

James Risto Points 1061

Quelques idées farfelues. Tout d'abord, Puppy Linux fait un peu ça ; il synchronise votre espace de travail avec votre espace permanent de temps en temps. Il semble le faire avec des scripts intelligents et de simples commandes de copie.

Deuxièmement ... et si vous planifiez un rsync entre le disque RAM et le disque réel de temps en temps ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X