Fichier d'échange à croissance dynamique sur Debian

10

Je sais comment créer un fichier d'échange et l'utiliser comme échange. Mais je dois configurer la taille du fichier au préalable et l'espace est utilisé sur le disque, si le swap est utilisé ou non.

Comment créer un swap qui a une taille initiale de 0 et grandit à la demande?

rubo77
la source
@ Gilles: Je suis juste curieux - Pourquoi avez-vous édité le titre (à part la faute de frappe)? N'est-il pas souhaitable d'avoir des questions entièrement prononcées ici?
rubo77
1
Il vaut mieux éviter les mots inutiles, surtout au début du titre qui est celui où les gens accordent le plus d'attention. Voir Comment écrire un bon titre? . Le «swap à croissance dynamique» donne l'idée essentielle. «Comment créer» ne commence pas à indiquer de quoi traite la question. Il y a des gens qui préfèrent faire des questions de titres de question parce que ce sont des questions, mais c'est une raison idiote: le titre est aussi le titre des réponses.
Gilles 'SO- arrête d'être méchant'

Réponses:

3

Le swapspace est ancien et non entretenu et pourrait, un jour, entraîner des problèmes dans les systèmes modernes. Je pense que la meilleure solution pour le swap dynamique est de:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

puis mise CONF_SWAPFACTOR=2en place /etc/dphys-swapfileet enfin

sudo service dphys-swapfile start
Denis Pitzalis
la source
Cela fonctionne, mais gardez à l'esprit que vous pourriez être mieux sans échange, voir unix.stackexchange.com/a/136133/20661
rubo77
10

SwapSpace est un utilitaire qui crée un «fichier d'échange dynamique» qui, selon les exigences du système d'exploitation, modifie sa taille.

Ainsi, vous pouvez même oublier de créer un fichier d'échange virtuel et simplement installer «SwapSpace» et il en créera automatiquement un pour vous et le redimensionnera même si nécessaire.

Vous pouvez également utiliser `` Swapspace '' côte à côte avec un fichier d'échange créé manuellement et lorsque celui-ci est rempli manuellement, `` Swapspace '' en créera automatiquement un autre pour le système d'exploitation afin que le système d'exploitation ait toujours un espace d'échange et améliore la stabilité.

Une autre chose utile à propos de «SwapSpace» est que, chaque fois que cela est possible, cela réduira la taille du SwapSpace et «libérera» ces octets dans le système de fichiers utilisateur et, selon les développeurs, cette réduction contribue également à augmenter les performances du fichier d'échange ( et votre "précieux" espace disque dur n'est pas non plus gaspillé).

Installer avec

sudo apt-get install swapspace

Et ajustez le fichier de configuration selon vos besoins. J'ai défini le minimum 0sur ma machine Debian VM avec seulement 8 Go de disque dur


De plus, j'ai également défini la permutation pour 0minimiser l'utilisation de l'espace précieux du disque dur sur ma machine virtuelle:

Pour modifier la valeur de permutation système, ouvrez en /etc/sysctl.conftant que root. Ensuite, modifiez ou ajoutez cette ligne au fichier:

vm.swappiness = 0

(Redémarrez pour que la modification prenne effet)

rubo77
la source
Cela ne prendra pas en charge swsusp / suspending pour échanger un fichier, sauf si la taille du fichier d'échange créé est déjà suffisamment grande pour contenir le vidage de la RAM.
soze
Alors, comment pouvons-nous nous assurer que le fichier d'échange est suffisamment volumineux pour contenir le bélier?
rubo77
Avoir un fichier d'échange de taille fixe de la taille de la RAM pour la suspension, puis utiliser l'espace d'échange pour un échange de taille dynamique
Tom Hale
Ça a marché pour moi. C'est super utile pour les petits disques SSD.
Adrian Lopez
0

Afaik, toute partition de swap que vous feriez en utilisant fdisk par exemple, aurait besoin d'un espace supérieur à 0, car vous modifiez l'espace à partir d'un disque existant et le réaffectez ailleurs.

Quoi qu'il en soit, et en répondant à votre question, vous pouvez facilement créer une petite partition, l'affecter comme échange sous fdisk, et ensuite:

1) désactiver l'échange avec swapoff -v 2) redimensionner la partition avec lvresize 3) formater la partition avec mkswap 4) réactiver l'espace d'échange avecswapon -v

Ensuite, vous pouvez utiliser cat /proc/swapspour vérifier s'il a été mis à niveau ou non. Vous pouvez facilement l'utiliser sur un script, en fonction des spécifications de votre système, et l'exécuter à la demande chaque fois que vous avez besoin d'augmenter cet espace de swap. Quelque chose comme:

$ swapoff -v /dev/swapvol1
$ lvresize /dev/swapvol1 -L +1G
$ mkswap /dev/swapvol1
$ swapon -v /dev/swapvol1
AleksanderKseniya
la source
1
Cela ne répond pas à la question car la taille du swap est modifiée manuellement, pas à la demande. De plus, le redimensionnement du LV n'est pas utile: où trouvez-vous l'espace pour grandir? comment l'espace libéré sur le rétrécissement n'est-il pas gaspillé? La question concerne un fichier d'échange, qui résout le problème de l'espace libre - il est disponible pour d'autres fichiers.
Gilles 'SO- arrête d'être méchant'
Changer la taille du swap à la demande est une bonne idée, mais swapspace ne couvre pas le scénario de swsusp utilisé pour prendre en charge l'hibernation. Je pense que cette réponse pourrait être plus sensée pour les utilisateurs qui ont besoin d'une assistance en hibernation. Jusqu'à ce que swapspace gère cela mieux, bien sûr.
soze