Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
swap [Le 29/09/2010, 12:33]
Vincent85
swap [Le 29/10/2023, 15:18] (Version actuelle)
ZavezPasVu [Activer/Désactiver l'utilisation du swap]
Ligne 1: Ligne 1:
-{{tag>​administration système}}+''​Code « machine à écrire »''/​show{{tag>​administration système}}
  
 ---- ----
  
-====== ​SWAP ======+====== ​Espace d'​échange (swap) ​====== 
 +L'​**espace d'​échange**,​ aussi appelé par son terme anglais **swap space** ou simplement **swap**, est une zone d'un disque dur faisant partie de la //mémoire virtuelle//​((La mémoire virtuelle est composée de la mémoire vive physique (RAM) et de l'​espace d'​échange.)) de votre ordinateur. Il est utilisé pour décharger la mémoire vive physique (RAM) de votre ordinateur lorsque celle-ci arrive à saturation. L'​espace d'​échange,​ dans Ubuntu, se trouve généralement sous une forme de partition de disque dur -- on parle alors de //partition d'​échange//​. Il peut aussi se présenter sous forme de fichier -- on parle alors de //fichier d'​échange//​.
  
-Le **swap** (parfois appelé mémoire virtuelle) est un espace ​réservé sur le disque dur servant à décharger la mémoire physique (RAM) lorsque celle-ci arrive à saturationLe swap peut être un fichier, on parle alors de **fichier ​d'​échange**, ou une partition dédiée ​à cet usageon parle alors de **partition ​d'​échange**.+Par défaut, Ubuntu calcule et s'​attribue automatiquement ​un espace ​d'​échange suffisant ou recommandé lors de son installationIl n'est pas nécessaire d'​effectuer des tâches supplémentaires pour assigner ​un espace ​d'​échange ​minimum ​à Ubuntu. Cependantévaluer ses besoins en espace ​d'​échange ​peut mieux rationaliser vos ressources.
  
-N.B. : Les performances du swap sont bien moins bonnes que celles ​de la mémoire physique. En effet, les échanges de données avec le disque dur sont beaucoup plus lents qu'avec la mémoire physique. L'utilisation du swap ralentit donc significativement le système, et entraîne une activité permanente du disque dur (bruits de "​grattements"​),​ symptôme classique des PC en fin de vie.+Le présent document se veut être une présentation succincte ​de ce qu'est l'espace d'​échange dans Ubuntu et des méthodes pour créermodifier ​et supprimer cet espace d'​échange.
  
-===== Comparaison entre GNU/Linux et Windows =====+<note important>​Depuis Ubuntu 17.04, le swap n'est plus une partition mais un fichier situé dans /swapfile **sauf si une ancienne partition swap est détectée à l'​installation** : dans ce cas, celle-ci est intégrée au fichier /​etc/​fstab ​et le fichier /swapfile n'est pas créé. Si une ancienne partition swap existe mais qu'on ne veut pas l'​utiliser,​ il faut configurer cette partition swap à l'​installation : cliquer sur la partition swap, et choisir ne pas utiliser cette partition, dans le menu déroulant. Dans ce dernier cas, le fichier /swapfile sera créé. </​note>​
  
-==== GNU/​Linux ​====+===== Qu'​est-ce qu'un espace d'​échange ? ===== 
 +La mémoire vive physique (RAM) de l'​ordinateur est utilisée pour stocker des données en cours de traitement. Si celle-ci se remplit presque entièrement mais que votre ordinateur a tout de même besoin de ressources pour procéder à des traitements,​ votre système d'​exploitation peut déplacer temporairement des pages mémoire vers l'​espace d'​échange défini dans votre disque dur afin de libérer des ressources mémoire. L'​espace d'​échange agit ainsi en tant qu'​extension de votre mémoire vive physique : elle récupère, au besoin, des blocs mémoire en excès de votre mémoire vive physique.
  
-Sous GNU/Linuxle swap est traditionnellement une partition dédiée de taille fixeSur les distributions récentes comme Ubuntuune partition de swap est créée automatiquement lors de l'installationEn principela taille de cette partition est fixée à la quantité ​de mémoire ​(RAM) installée.+Notez cependant que l'​espace d'​échange se situant dans votre disque durl'​accès aux données contenues dans celui-ci ​est plus lent que celles contenues directement dans la RAMDe plusl'​utilisation ​de l'espace d'​échange ralentit significativement le système et entraîne une activité permanente du disque dur (bruits de "​grattements"​),​ provoquant une usure prématurée du matérielDe ce faitl'​espace d'​échange ne doit pas être considéré comme un remplacement ​de votre mémoire ​vive physique, mais plutôt comme un mécanisme d'​appoint.
  
-Il est cependant possible ​d'utiliser ​un fichier ​d'​échange ​plutôt qu'une partition ​(cf fin de page). +La plupart des systèmes ​d'exploitation -- sinon tous -- gèrent ​un espace ​d'​échange. Avec les systèmes d'​exploitation de type GNU/Linux, dont fait partie Ubuntu, cette zone d'​échange se présente généralement sous la forme d'une partition de disque dur dédiée à cet effetÀ titre comparatif, Microsoft(r) ​Windows(r) utilise un ou des fichiers dans chacun de ses volumes afin de jouer ce rôle. Il est aussi possible de créer et utiliser des fichiers assurant un espace d'​échange.
-==== Windows ​====+
  
-Par défaut sous Windows, le swap n'est pas présenté comme une partition : c'est un gros fichier fragmentable géré par Windows. Ce fichier se nomme « Win386.swp » (95, 98, Me) ou « pagefile.sys » (NT, 2000, XP, Vista), et est par défaut dans « C: ». Pour modifier sa taille et son emplacement,​ on peut passer par le panneau de configuration (//Système → Performances → Mémoire virtuelle//​). 
-===== Taille d'une partition de swap ===== 
  
-<note important>​ Si la taille du swap est inférieure à celle de votre mémoire vive (RAM), il sera impossible d'​utiliser la fonction "​hibernation"​ d'​Ubuntu </​note>​ 
  
-Cela dépend ​de votre RAM (mémoire vive) et de votre utilisationLe risque si le swap est trop petit (ou inexistant) est que le système se comporte ​de façon erratique, voire plante complètementInversementsi le swap est trop grosc'est autant ​de place en moins pour vos fichiers.+===== Taille d'un espace d'​échange ===== 
 +Il n'y a pas à proprement parler qu'une seule règle définissant la quantité d'​espace à allouer à la zone d'​échange,​ qu'​elle soit sous forme de partitions ou de fichiersBeaucoup ​de conditions entrent dans les facteurs influençant ce choixCependantcompte tenu des capacités des ordinateurs moderneson peut relever [[:​tutoriel:​partitionner_manuellement_avec_installateur_ubuntu#​partitions_indispensables|des recommandations généralement acceptées]] :  
 +  * **Votre ordinateur dispose de 6 Go de RAM ou plus ** Allouez un espace d'échange ​ égal à la taille de votre RAM ; 
 +  * **Votre ordinateur dispose de 1 Go de RAM a 4  Go ** Allouez un espace d'​échange de 1× à 1,5× la taille de votre RAM ; 
 +  * **Votre ordinateur dispose ​de moins de 1 Go de RAM ** Allouez un espace d'​échange de 1,5× à 2× la taille de votre RAM.
  
-On retiendra quepour une utilisation ​bureautique, ​1 Gio de mémoire vive (RAMsuffit largementAu-delàil est inutile ​d'avoir une partition swapSi vous n'avez pas autant ​de RAM, il est donc conseillé ​de créer ​une partition ​swap complétant ​votre mémoire vive, dont la taille ​est au moins de : 1 Gio moins votre mémoire vive.+==== Pourquoi ai-je besoin d'un espace d'​échange ? ==== 
 +  * **Utilisation de programmes exigeants en ressources :** Parfoisdes programmes exigent beaucoup de ressources dans votre ordinateur (comme la suite bureautique ​[[LibreOffice]]des jeux tels [[AlienArena]] ou des logiciels ​de montage vidéo tels [[Cinelerra]]), ce qui amène votre ordinateur à nécessiter davantage de ressources que disponiblesSouventune partie de la mémoire vive utilisée au chargement de ces programmes n'est réellement exploitée que lors de leur initialisation et n'est plus utilisée par la suite. \\ Le système peut libérer des ressources en déplaçant de telles pages mémoire vers un espace ​d'échange dans votre disque dur. 
 +  * **Hibernation (mise en veille prolongée) :** La fonction d'​hibernation conserve votre système en l'​état actuel lors de la mise hors-tension de votre ordinateur, ce qui vous permet de reprendre plus rapidement votre travail là où vous l'​avez ​laissé tout en ne consommant ​pas d'​énergie ​de votre pile ou de votre alimentation secteur. \\ Techniquement, il s'agit d'une copie de l'​ensemble des informations contenues dans la mémoire vive de votre ordinateur vers l'​espace d'​échange de votre disque dur ; pour cette raison, ​une partition ​d'​échange au moins aussi grande que la quantité de votre mémoire vive est requise pour profiter ​de cette fonctionnalité.((L'​implémentation actuelle de l'​hibernation dans Ubuntu (''​swsusp''​) ne peut pas utiliser un espace d'​échange d'un fichier d'​échange situé dans un système de fichiers actif.)) 
 +  * **Circonstances imprévues ​:** Des événements imprévisibles peuvent survenir lors de l'​utilisation de votre système (un programme ayant une fuite de mémoire, une action qui a besoin davantage de mémoire pour un court laps de temps ou une combinaison de ces événements). \\ Disposer d'un espace d'​échange vous offre un sursis pour localiser le problème ou, à tout le moins, terminer ​votre travail en cours. 
 +  * **Cache mémoire :** Puisque l'​accès aux fichiers de votre disque dur est plus lent que ceux placés en mémoire vive, le noyau Linux place en cache dans la mémoire vive les fichiers ouverts. \\ Ceci accélère grandement les traitements. Afin de conserver un maximum d'​espace pour ce cache, une partie de la RAM réservée par les programmes mais non utilisée est déplacée dans l'​espace d'​échange.
  
-Si votre utilisation de Ubuntu est plus intensive, comme pour le traitement d'​images haute définition,​ le montage vidéo, ou si vous souhaitez tout simplement être sûr que votre système ne manquera pas de mémoire, vous pouvez tout de même créer une partition swap, dont la taille devrait être de l'​ordre de quelques Gio. Il est difficile d'​être plus précis dans la mesure où cela dépend beaucoup de l'​utilisation de votre ordinateur. 
  
-Enfin, si vous souhaitez utiliser la fonction "​hibernation"​ d'​Ubuntu,​ il faut que la taille du swap soit supérieure à celle de la mémoire vive. En effet, sous Ubuntu, la partition de swap est utilisée pour enregistrer les données de la mémoire vive durant l'​hibernation. 
  
-Il est préférable de fixer la taille de la partition swap durant l'​installationNéanmoins, il est possible de la modifier par la suite, mais c'est une opération légèrement risquée pour vos données.+===== Aller plus loin... =====
  
-===== Modifier le swap après ​l'installation (avancé) =====+<​note>​**Cette section s'​adresse aux utilisateurs avertis.** \\ Les manipulations avancées ci-dessous permettent de mieux analyser et gérer les ressources système concernant ​l'espace d'​échange. \\ Une mauvaise utilisation des outils et des commandes ci-dessous peut corrompre votre système ou en diminuer les performances. \\ Les réglages par défaut conviennent plus à une utilisation serveur.</​note>​
  
-<note important>​Modifier les partitions après ​l'installation est toujours une opération risquée. Assurez-vous ​d'avoir sauvegardé toutes vos données sur un autre support au préalable.</​note>​+====Améliorer ​l'utilisation du fichier ​d'échange (swap)====
  
-==== Outils avec interface graphique ====+<note tip>La copie de la RAM vers la swap consomme des ressources. \\ Plus la copie de la RAM se déclenche tard moins les ressources sont utilisées.</​note>​
  
-Vous pouvez utiliser les outils de partitionnement en mode graphique fournis avec Ubuntu : **Gparted** (**Qtparted** pour Kubuntu) pour créer/​modifier/​redimensionner vos partitions, à condition que celles-ci ne soient pas en cours d'​utilisation par le système.+=== Réglage permanent dans Ubuntu 14.04 à 18.04 (Systemd)=== 
 + 
 +<note important>​La mention barrée ci-dessous est totalement fausse. Le paramètre //​swapiness//​ est beaucoup plus complexe que cela. Pour simplifier il ne gère pas seulement la tendance du noyau à échanger des pages entre la RAM et le swap, mais surtout l'​équilibre entre le cache disque et l'​utilisation de la mémoire par les applications. **Modifier ce paramètre risque fort d'​être contre-productif et donc de diminuer les performances de votre système au lieu de les améliorer**.\\ 
 +\\ 
 +**Les manipulations présentées de cette section doivent donc absolument être évitées , en particulier pour les versions récentes d' ubuntu y compris la 22.04.** 
 + 
 +Lire : https://​www.howtogeek.com/​449691/​what-is-swapiness-on-linux-and-how-to-change-it/</​note>​ 
 + 
 +**Par défaut, Ubuntu est réglé de cette façon :** \\ 
 +<​del>​À partir de 40% d'​utilisation de la RAM (**donc 60% de libre**), le noyau **peut** copier une partie de la RAM dans la swap.</​del>​ \\ 
 + 
 +On peut le vérifier grâce à la commande : 
 +<code bash>cat /​proc/​sys/​vm/​swappiness</​code>​ 
 +qui avec les réglages par défaut, répond "​60"​. \\ 
 + 
 +===Régler le déclenchement du fichier d'​échange dès que la mémoire est utilisée à 95%=== 
 + 
 +L'​application de cette procédure avec une valeur faible du swappiness n'est pas conseillée : 
 + 
 +--> sur un poste multi-utilisateurs,​ 
 + 
 +--> sur un ordinateur partageant une(des) ressource(s) au sein d'un réseau, 
 + 
 +--> en cas d'​utilisation d'​applications demandant d'​importantes ressources mémoire (cf §2.1), 
 + 
 +La valeur de 60 définie par les concepteurs du système garantit un fonctionnement correct quelle que soit votre configuration. La valeur minimale conseillée par canonical //[source ?]// est swappiness=10. La valeur de 5 apporte un gain notable en vélocité, **surtout** sur les machines peu dotées en RAM. La valeur de zéro provoque le gel du système quand la RAM est utilisée à 100% et ne suffit plus. 
 + 
 +Cette procédure crée un fichier **99-swappiness.conf** qui stocke vos réglages les rendant actifs au prochain redémarrage. 
 +  * ** //​vm.swappiness=5//​** ​ déclenche l'​utilisation de la swap quand il ne reste plus que 5% de RAM. 
 +  * ** //​vm.vfs_cache_pressure=50//​** ​ permet de garder plus de liens vers les fichiers en mémoire, pour accélérer l’accès aux fichiers. 
 +<code bash>​echo vm.swappiness=5 | sudo tee /​etc/​sysctl.d/​99-swappiness.conf</​code>​ 
 +<​code>​echo vm.vfs_cache_pressure=50 | sudo tee -a /​etc/​sysctl.d/​99-swappiness.conf 
 +sudo sysctl -p /​etc/​sysctl.d/​99-swappiness.conf</​code>​ 
 +Puis il faut demander une actualisation du service ( depuis ​ une mise à jour du noyau  20.04) 
 +<​code>​sudo service procps restart</​code>​  
 + 
 +Il faut désactiver et réactiver l'​utilisation du fichier d'​échange pour que les réglages deviennent actifs immédiatement : 
 +<code bash>​sudo swapoff -av 
 +sudo swapon -av</​code>​ \\ 
 + 
 +===Pour changer ce réglage temporairement,​ utilisez la commande ci-dessous :=== 
 +(Dans cet exemple, le réglage passe à 80% de RAM utilisée) 
 +<code bash>​sudo sysctl vm.swappiness=20</​code>​ 
 + 
 +Ensuite désactivez puis réactivez la swap pour que les changements deviennent actifs : 
 +<code bash>​sudo swapoff -av 
 +sudo swapon -av</​code>​ 
 + 
 + 
 + 
 + 
 +==== Utiliser la même partition d'​échange entre plusieurs systèmes ==== 
 + 
 +Il est possible d'​utiliser la même partition SWAP pour plusieurs distributions Linux installées en multi-boot sur le même PC. 
 +Cependant dans ce cas, il ne sera pas possible d'​hiberner plusieurs systèmes simultanément (la dernière hibernation écrasera les données de la précédente). 
 + 
 + 
 +==== Vérifier les espaces d'​échange activés et leur niveau utilisation ==== 
 +**Plus d'un espace d'​échange peuvent être affectés à votre système Ubuntu.** 
 +De plus, chacun de ces espaces peut être utilisé de manière inégale. Pour connaître les espaces d'​échange actuellement activés dans votre système Ubuntu et leur niveau d'​utilisation,​ utilisez la commande ''​swapon''​ de la façon suivante : 
 +<code bash>​swapon -s</​code>​ 
 + 
 +Le terminal vous affiche le résultat de cette commande sous forme de tableau. Ce tableau retourne les informations suivantes : 
 +  * //​Filename//​ : le nom du fichier ou de la partition utilisée en tant qu'​espace d'​échange ; 
 +  * //Type// : le type d'​espace d'​échange (un fichier [//file//] ou une partition de disque dur [//​partition//​]) ; 
 +  * //Size// : la taille réservée à cet espace d'​échange,​ en kibioctets ; 
 +  * //Used// : la quantité d'​espace utilisée dans cet espace d'​échange,​ en kibioctets ; 
 +  * //​Priority//​ : la priorité d'​utilisation de cet espace d'​échange. Un espace ayant une plus haute priorité sera utilisé en premier. 
 + 
 +Voici un exemple du retour de cette commande : 
 +<box 60% classes orange | Commande : swapon -s> 
 +<​file>​utilisateur@Nomdel'​Ordinateur:​~$ swapon -s 
 +Filename Type Size Used Priority 
 +/​dev/​sda3 ​                              ​partition 5241852 0 -1 
 +/​file.swap ​                             file 524284 0 -2 
 +</​file>​ 
 +</​box|Terminal>​ 
 + 
 +**NB** : l'​option "​-s"​ est obsolète. Utiliser "​-​-show"​ qui affiche un résultat mieux formaté. Exemple : 
 + 
 +  [user@host~} swapon --show 
 +  NAME      TYPE      SIZE   USED PRIO 
 +  /dev/sda5 partition 2,3G 365,​9M ​  -2 
 +\\ 
 + 
 +==== Créer un fichier d'​échange ==== 
 +Afin d'​ajouter davantage d'​espace d'​échange utilisable par votre système Ubuntu, nous vous recommandons la création de fichiers d'​échange ou bien si vous voulez tout simplement remplacer une partition swap par un fichier. 
 + 
 +<note tip>Le fichier d'​échange doit être créé dans une partition formatée **ext**n </​note>​ 
 + 
 +Les fichiers d'​échange ont quelques avantages par rapport aux partitions d'​échange. \\ 
 +Pour commencer, leur ajout ou suppression n'a pas d'​impact sur la table des partitions du disque dur, ce qui limite les possibles pertes de données liées à la modification à posteriori du système de partitions d'un disque dur. Par conséquent,​ il est aisé d'​attribuer à la volée plus ou moins d'​espace d'​échange selon les besoins, qu'ils soient temporaires ou non. 
 +Enfin, même s'ils sont stockés dans un système de fichiers, les fichiers d'​échange sont exploités directement par le noyau Linux; l'​utilisation d'un espace d'​échange,​ sous forme de partition ou de fichier, devrait être identique quant aux performances. 
 + 
 +**Pour créer un fichier d'​échange :** 
 +  - Depuis un compte d'​administrateur,​ ouvrez un [[terminal]] ; 
 +  - Utilisez ''​fallocate''​ pour réserver un bloc d'​espace disque à attribuer à votre espace d'​échange : 
 + <​code bash>​sudo fallocate -l <taille du fichier en octets> <nom du fichier></​code>​ 
 +    * Le paramètre **-l** indique la taille (//​length//​) en octets qui doit être réservée pour l'​espace d'​échange. ''​fallocate''​ reconnaît aussi quelques suffixes, tels ''​m''​ et ''​g'',​ pour préciser des tailles en mibi-octets ou gibioctets. Par exemple, pour réserver 512 Mio, indiquez ''​512m''​ ; pour réservez 1 Gio, indiquer ''​1g''​ ; 
 +    * Le nom du fichier doit contenir le chemin absolu vers l'​emplacement de celui-ci. Sinon, il sera créé dans le répertoire courant ; 
 +    * //Exemple :// pour créer un fichier de 512 Mio nommé ''​file.swap''​ et situé à la racine d'​Ubuntu,​ on utilisera la commande suivante :  
 +<code bash>​sudo fallocate -l 512m /​file.swap</​code>​ 
 +Consultez le manuel de ''​fallocate''​ (''​[[http://​manpages.ubuntu.com/​manpages/​precise/​fr/​man1/​fallocate.1.html|man fallocate]]''​) pour plus d'​informations.  
 +  - Modifiez les permissions sur cet espace afin qu'il ne soit directement lisible que par le système. Utilisez la commande ''​chmod''​ :  
 +<code bash>​sudo chmod 600 <nom du fichier></​code>​ 
 +    * Encore une fois, ''<​nom du fichier>''​ représente le nom du fichier qui vient d'​être créé, avec son chemin absolu si nécessaire ; 
 +    * Par exemple, pour changer les permissions sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante :  
 +<code bash>​sudo chmod 600 /​file.swap</​code>​ 
 +  - Définissez ce fichier en tant qu'​espace d'​échange. Pour ce faire, utilisez la commande ''​mkswap''​ :  
 +<code bash>​sudo mkswap <nom du fichier></​code>​ 
 +    * Par exemple, pour définir un espace d'​échange sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante :  
 +<code bash>​sudo mkswap /​file.swap</​code>​ 
 +  - Activez la prise en charge de ce nouvel espace d'​échange. Utilisez la commande ''​swapon''​ :  
 +<code bash>​sudo swapon <nom du fichier></​code>​ 
 +    * Par exemple, pour activer la prise en charge de l'​espace d'​échange sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante :  
 +<code bash>​sudo swapon /​file.swap</​code>​ 
 +  - Rendez disponible le fichier d'​échange à chaque démarrage en éditant le fichier ''/​etc/​fstab''​ et lui ajoutant :  
 +<file bash /​etc/​fstab>​ 
 +#Entry for /swapfile : 
 +/file.swap none swap sw 0 0 
 +</​file>​ 
 + 
 +Et commentez la ligne qui concerne l'​ancienne partition swap que vous pourrez désormais supprimer. 
 + 
 +  - Commentez l'​ancienne entrée de la partition swap du fichier ''/​etc/​initramfs-tools/​conf.d/​resume''​ :  
 +<file bash /​etc/​initramfs-tools/​conf.d/​resume>​ 
 +#​RESUME=UUID=1e1ebf39-2de7-4181-a504-4e317fd8db9c 
 +</​file>​ 
 + 
 +<note tip>Pour la création d'un fichier swap sur un HDD qui est monté sur un SDD (par exemple sous ''/​home''​),​ créez le fichier swap sous le point de montage (par exemple ''/​home/​file.swap''​) et assurez vous que dans le fichier ''/​etc/​fstab'',​ la ligne concernant le swapfile se trouve après la ligne qui indique le montage du disque HDD.</​note>​ 
 + 
 +**Pour supprimer un fichier d'​échange :** 
 +  - Désactivez la prise en charge du fichier d'​échange. Utilisez la commande ''​swapoff''​ :  
 +<code bash>​sudo swapoff <nom du fichier></​code>​ 
 +    * Par exemple, pour désactiver la prise en charge de l'​espace d'​échange sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante :  
 +<code bash>​sudo swapoff /​file.swap</​code>​ 
 +  - Supprimer le fichier d'​échange :  
 +<code bash>​sudo rm /​file.swap</​code>​ 
 +  - Enlever la prise en charge au démarrage en enlevant les lignes dans fstab, en éditant le fichier /etc/fstab :  
 +<file bash /​etc/​fstab>​ 
 +#Entry for /swapfile : 
 +/file.swap none swap sw 0 0 
 +</​file>​ 
 +==== Modifier la ou les partitions d'​échange ==== 
 + 
 +<note important>​__Modifier les partitions après l'​installation est toujours une opération risquée__. Assurez-vous d'​avoir sauvegardé toutes vos données sur un autre support au préalable.</​note>​ 
 + 
 +<note idée>Si vous avez __besoin d'​augmenter la taille de votre swap après avoir installé le système__, vous prendrez beaucoup moins de risque en créant un fichier de swap plutôt qu'en modifiant le partitionnement de vos disques. LVM est aussi une alternative très souple. \\ 
 +\\ 
 +Vous pouvez aussi __installer **[[zRam]]** pour optimiser l'​utilisation de votre swap__ qui crée des « compartiments » dans la RAM où il compressera les éléments « statiques », libérant d'​autant la partie plus « dynamique ». \\ 
 +**Zram n'​augmente pas la taille de la RAM** et n'​empêche pas l'​hibernation. Par contre **l'​hibernation requiert une taille de swap au moins égale à la RAM** puisqu'​elle consiste à copier le contenu de la RAM dans la swap ( fichier ou partition ).</​note>​ 
 + 
 +=== Outils avec interface graphique === 
 + 
 +Vous pouvez utiliser les outils de partitionnement en mode graphique fournis avec Ubuntu : \\ 
 +**[[gparted|Gparted]]** (**Qtparted** pour Kubuntu) pour créer/​modifier/​redimensionner vos partitions, à condition que celles-ci ne soient pas en cours d'​utilisation par le système.
  
 Si vous avez besoin de modifier une partition utilisée par le système en permanence, utilisez un [[live_cd|live-cd]]. Si vous avez besoin de modifier une partition utilisée par le système en permanence, utilisez un [[live_cd|live-cd]].
Ligne 45: Ligne 204:
 Le  [[live_cd|live-cd]] utilise la partition swap du système (si elle existe). Pour pouvoir la modifier (ou modifier la partition étendue parente), il vous faudra désactiver le swap (dans gparted : Menu Partition > désactiver le swap). Le  [[live_cd|live-cd]] utilise la partition swap du système (si elle existe). Pour pouvoir la modifier (ou modifier la partition étendue parente), il vous faudra désactiver le swap (dans gparted : Menu Partition > désactiver le swap).
  
-==== Outils en ligne de commande ====+=== Outils en ligne de commande === 
 + 
 +Il existe plusieurs outils en ligne de commande pour gérer vos partitions ; les plus connus étant **fdisk** et **cfdisk**. \\ 
 +Ces outils s'​utilisent avec les mêmes précautions et restrictions que celles indiquées ci-dessus pour Gparted.
  
-Il existe plusieurs outils en ligne de commande pour gérer vos partitions, les plus connus étant **fdisk** et **cfdisk**. Ces outils s'​utilisent avec les mêmes précautions et restrictions que celles indiquées ci-dessus pour gparted. +==== Activer/​Désactiver l'​utilisation du swap ====
-===== Activer/​Désactiver l'​utilisation du swap =====+
  
 Les commandes **swapon/​swapoff** permettent respectivement d'​activer ou désactiver le swap sans redémarrage du système. Exemple : Les commandes **swapon/​swapoff** permettent respectivement d'​activer ou désactiver le swap sans redémarrage du système. Exemple :
Ligne 61: Ligne 222:
  
 <note tip> <note tip>
-Si votre swap est utilisé alors qu'il y a encore de la place dans la RAM, il est possible de le vider avec les deux commandes ci-dessous ​:+Si votre swap est utilisé alors qu'il y a encore de la place dans la RAM, il est possible de le vider en le désactivant ​avec la commande ​:
 <​code>​ <​code>​
 sudo swapoff -a sudo swapoff -a
 +</​code>​
 +On peut ensuite réactiver le swap avec la commande :
 +<​code>​
 sudo swapon -a sudo swapon -a
 </​code>​ </​code>​
 +Ainsi le swap sera vidé mais toujours disponible en cas de besoin.
 </​note>​ </​note>​
  
-=== Définir une partition comme partition d'​échange ===+==== Définir une partition comme partition d'​échange ​====
  
 La commande **mkswap** permet de définir une partition ou un fichier comme espace d'​échange. Exemple pour définir la partition /dev/sda6 comme partition d'​échange : La commande **mkswap** permet de définir une partition ou un fichier comme espace d'​échange. Exemple pour définir la partition /dev/sda6 comme partition d'​échange :
  
-<​code>​+<​code ​bash>
 sudo mkswap /dev/sda6 sudo mkswap /dev/sda6
 </​code>​ </​code>​
  
-Vous pouvez ensuite activer la partition d'​échange avec :  +Vous pouvez ensuite activer la partition d'​échange avec : 
-<​code>​+<​code ​bash>
 sudo swapon /dev/sda6 sudo swapon /dev/sda6
 </​code>​ </​code>​
  
 Pour rendre cette modification permanente vous devrez également modifier votre fichier **/​etc/​fstab** pour y modifier ou ajouter une ligne du type : Pour rendre cette modification permanente vous devrez également modifier votre fichier **/​etc/​fstab** pour y modifier ou ajouter une ligne du type :
-<code>+<file bash /etc/fstab>
 # /dev/sda6 # /dev/sda6
 UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 none            swap    sw      0      0 UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 none            swap    sw      0      0
-</code>+</file>
  
-Et afin que vos mises en veille et hibernations se produisent correctement,​ vous devrez de même modifier le fichier **/​etc/​initramfs-tools/​conf.d/​resume** pour y renseigner le bon UUID :  +Et afin que vos mises en veille et hibernations se produisent correctement,​ vous devrez de même modifier le fichier **/​etc/​initramfs-tools/​conf.d/​resume** pour y renseigner le bon UUID : 
-<code>+<file bash /​etc/​initramfs-tools/​conf.d/​resume>
 RESUME=UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 RESUME=UUID=db245df9-851d-695b-a3f7-d40f039a6cc6
-</code>+</file>
 et ensuite, le faire prendre en compte par le système : et ensuite, le faire prendre en compte par le système :
-<​code>​+<​code ​bash>
 sudo update-initramfs -u -k $(uname -r) sudo update-initramfs -u -k $(uname -r)
 </​code>​ </​code>​
 Il vaut mieux, après cela, redémarrer la machine. Il vaut mieux, après cela, redémarrer la machine.
  
-<​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande <​code>​sudo ​vol_id ​/​dev/​sda6</​code></​note>​+<​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande 
 +<​code ​bash>​sudo ​blkid /​dev/​sda6</​code></​note>​
  
 +<​note>​L'​UUID de la partition peut-être réécrite en employant la commande **mkswap**:
 +<code bash>​sudo mkswap -U <​l'​UUID desirée>​ /​dev/<​votre partition></​code></​note>​
  
-===== Définir un fichier comme fichier d'​échange (avancé) ===== 
  
-La procédure est presque la même que ci-dessusVous devez d'abord créer un fichier de préférence non fragmenté avec la commande ​**dd**, par exemple ​pour créer un fichier ​file.swap dans le répertoire racine, de 512Mio ​:+<note important>​ 
 +La page anglophone [[https://​help.ubuntu.com/​community/​SwapFaq#​How_do_I_add_more_swap.3F|How to add more SWAP]] {Comment augmenter la taille du SWAP} donne une version légèrement différente de la procédure pour définir une partition comme partition ​d'échange. \\ 
 +En particulier,​ elle conseille de vérifier aussi le fichier de paramètres de grub (**/​etc/​default/​grub**pour qu'il contienne la ligne : 
 +<file bash /​etc/​default/​grub>​ 
 +GRUB_CMDLINE_LINUX="​resume=UUID=<​votre_uuid>"​ 
 +</​file>​ 
 +Sur mon système (11.04 32 bits) j'ai dû modifier cette ligne (ainsi que /​etc/​initramfs-tools/​conf.d/​resume) et actualiser grub (comme indiqué ​dans la doc citée)avant de réactualiser initramfs, pour que l'​hibernation fonctionne. \\ 
 +Petit détail cependant ​mon deuxième //sudo update-initramfs//​ n'​avait pas comme option //-k $(uname -r)//, mais d'​après //man update-initramfs//​ je pense que cela ne devrait pas être la source de la différence de comportement. 
 +</​note>​
  
-<​code>​sudo dd if=/dev/zero of=/file.swap bs=512M count=1</​code>​+==== Optimiser son espace d'​échange (avancé) ==== 
 +Puisque l'​espace d'​échange se trouve dans le disque dur, ceci peut causer quelques problèmes de performances dans un système l'​utilisant massivement,​ car le système peut essayer de lire et écrire à la fois des pages mémoire dans l'​espace d'​échange et des fichiers situés ailleurs dans le disque dur. Une manière de réduire cet effet de compétition d'​accès aux ressources du disque dur consiste à fractionner l'​espace d'​échange sur plusieurs disques durs physiques. Ainsi, l'​espace d'​échange étant partagé entre plusieurs périphériques,​ la compétition pour l'​accès aux ressources est réduite -- voire éliminée.
  
-Si vous obtenez comme message ​:+==== Optimiser son espace d'​échange (avancé mais très simple) avec ZRAM ==== 
 +[[:zRAM]] permet de compresser la RAM si besoin, afin d'​éviter/​retarder le swap disque (car le swap disque est de nos jours très lent par rapport à la vitesse de traitement en RAM, même sur les anciennes machines avec peu de RAM le bénéfice est généralement visible)
  
-<​code>​ 
-dd: Mémoire épuisée 
-</​code>​ 
  
-Alors qu'il vous reste pourtant assez de place sur le disque, il se peut que vous n'ayez pas assez de ram pour créer ce fichier en un seul morceau, ou que vous n'ayez pas 512Mo de place contiguë pour créer le fichier. Dans ce cas, essayez de créer le fichier en plusieurs morceaux, par exemple en faisant : 
  
-<​code>​sudo dd if=/​dev/​zero of=/​file.swap bs=256M count=2</​code>​ 
  
-Cette commande aura pour effet de créer un fichier de 512Mo en 2 morceaux de 256Mo. Essayez de trouver le bon compromis bs/count qui permette à la commande dd de fonctionner,​ sachant que les performances seront d'​autant meilleures que le fichier swap sera peu fragmenté(([[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=234296|Topic]] à ce sujet)). 
- 
-On définit ensuite ce fichier comme un fichier d'​échange : 
  
 +==== Une partition swap chiffrée ====
 +Il est possible d'​encrypter sa partition swap. Il semblerait que cette option s'​active automatiquement dès lors que l'​utilisateur choisit de chiffrer sa partition home à l'​installation,​ ce qui est recommandé.
 +=== Créer la partition swap ===
 +  * Si la partition swap existe déjà, passer directement à l'​étape suivante.
 <​code>​ <​code>​
-sudo mkswap /file.swap+sudo mkswap /dev/sdaX 
 +Setting up swapspace version 1, size = 4194300 KiB 
 +no label, UUID=9da9cf5e-2ac7-95b9-6156-a0ecffef2e99 
 +$ sudo swapon /dev/sdaX
 </​code>​ </​code>​
- +=== Chiffrement === 
-Puis on active l'​espace d'​échange ​+* Exécuter ensuite le script ecryptfs-setup-swap (inclus dans le paquet ecryptfs-utils) ​:
 <​code>​ <​code>​
-sudo swapon /file.swap +sudo ecryptfs-setup-swap 
-</​code>​+
  
-Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type +WARNING
-<​code>​ +An encrypted ​swap is required to help ensure that encrypted files are not leaked 
-# /file.swap UUID=ee43e097-dc53-4635-a21c-4b61bbd8a2f1 none          swap    sw +to disk in an unencrypted format.
-/file.swap  none   ​swap ​  ​sw ​  ​0 ​  0  +
-</​code>​+
  
-<​note>​L'​UUID de la pseudo-partition a dû être affiché par la commande **mkswap**sinon vous pouvez l'​obtenir avec la commande **sudo vol_id ​/file.swap**</​note>​+HOWEVERTHE SWAP ENCRYPTION CONFIGURATION PRODUCED BY THIS PROGRAM  
 +WILL BREAK HIBERNATE/RESUME ON THIS SYSTEM!
  
-la commande pour verifier+NOTEYour suspend/​resume capabilities will not be affected. 
-<​code>​ + 
- swapon -s +Do you want to proceed with encrypting your swap? [y/N]: y 
-Filename Type Size Used Priority + 
-/dev/sda6                               ​partition 1052216 0 -3+INFO: Setting up swap: [/dev/sdaX] 
 + * Stopping remaining crypto disks... ​                                    
 + * cryptswap1 (stopped)... ​                                               [ OK ] 
 + * Starting remaining crypto disks... ​                                    
 + * cryptswap1 (starting).. 
 + * cryptswap1 (started)... ​                                               [ OK ] 
 +INFO: Successfully setup encrypted swap!
 </​code>​ </​code>​
 +Le script effectue la modification automatique des fichiers crypttab and fstab.
  
-<​note>​Dans les colonnes "​Filename"​ et "​Type", ​le résultat ​dépend de l'​option pour laquelle vous avez opté pour le swap (partition ou fichier) +* Pour vérifier ​le résultat :
-Dans le cas d'un "​fichier swap", vous obtiendrez un résultat de ce type:+
 <​code>​ <​code>​
-swapon ​-s +$ grep -F "/​dev/​sdaX"​ /​etc/​crypttab 
-Filename Type Size Used Priority +cryptswap1 /dev/sdaX /​dev/​urandom swap,​cipher=aes-cbc-essiv:​sha256 
-/file.swap                              ​file 1048568 0 -1+$ grep -F "​cryptswap1" ​/etc/fstab 
 +/​dev/​mapper/​cryptswap1 none swap sw 0 0
 </​code>​ </​code>​
 +=== Activer et désactiver à volonté ===
 +Les lignes qui suivent permettent de basculer d'une swap normale à une swap cryptée, et vice-versa.
  
-Le résultat affiché dans la colonne "​Size"​ dépend de la taille que vous avez assigné à votre fichier ou votre partition swap lors de sa création.</​note>​ +== Activation ​==
- +
-===== Régler le déclenchement du swap =====+
  
-Par défaut, Ubuntu est réglé de cette façon : +  $ sudo ecryptfs-setup-swap
  
-À partir ​de 40% d'​utilisation ​de la RAM (donc 60% de libre)le noyau peut se délester sur la swap.+Difficile ​de faire plus simple. 
 +== Désactivation == 
 +La démarche est un peu plus complexe. Elle nécessite ​de désactiver ​la swap, de supprimer la couche ecryptfsde reformater ​la partition en mode swap ordinaire puis de l'​activer (pour mémoire fdisk -l ou blkid vous permettront de retrouver le numéro de la partition qui est du type /dev/sdaN; N étant le numéro de la partition).
  
-On peut le vérifier grâce à la commande : 
 <​code>​ <​code>​
-cat /proc/sys/vm/​swappiness +$ sudo swapoff -a 
-60+$ sudo cryptsetup remove ​/dev/mapper/cryptswap1 
 +$ sudo vim /​etc/​crypttab
 </​code>​ </​code>​
- +Dans votre éditeur de texte préférésupprimer ​la ligne /dev/sdaN puis enregister.
-Pour changer ce réglageutilisez ​la commande ci-dessous : +
- +
-(Dans cet exemple, le réglage passe à 20% de RAM inutilisée)+
 <​code>​ <​code>​
-sudo sysctl vm.swappiness=20+sudo /​sbin/​mkswap /dev/sdaN 
 +sudo swapon /dev/sdaN 
 +sudo vim /etc/fstab
 </​code>​ </​code>​
- +À nouveau dans votre éditeur de texte préféré, supprimer ​la ligne /dev/mapper/cryptswap1 avec /dev/sdaN puis enregistrer
-Ensuite désactivez puis réactivez ​la swap pour que les changements deviennent actifs : +Redémarrer ​pour activer la modification.
-<​code>​ +
-sudo swapoff -av +
-</​code>​ +
-La réponse ressemble à : +
-<​code>​ +
-swapoff sur /dev/ramzswap0 +
-swapoff sur /dev/sda6 +
-</​code>​ +
-Puis +
-<​code>​ +
-sudo swapon -av +
-</​code>​ +
-La réponse ressemble à : +
-<​code>​ +
-swapon sur /dev/sda6 +
-</​code>​ +
- +
-Pour que ces changements deviennent permanents (à chaque démarrage),​ vous devez [[:​tutoriel:​comment_editer_un_fichier|éditer le fichier]] **/​etc/​sysctl.conf** et y ajouter la ligne suivante: +
- +
-<​code>​vm.swappiness = 20</​code>​ +
- +
-Plus d'​infos sur cette manipulation sur [[http://​pro.anapivirtua.com/​index.php/​2009/​05/​01/​on-tas-deja-dit-que-tavais-un-beau-swap/​|ce site]] (Fr) ou [[http://​kerneltrap.org/​node/​3000|celui-ci]] (En) +
- +
-<note tip>​[[:​utilisateurs:​psychederic]] recommande : 10 avec 2 à 3Gb de Ram; 20 pour les pc avec disques SSD rapidesAvec 0 le SWAP sera utilisé en dernier recours</​note>​+
  
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * [[https://​help.ubuntu.com/​community/​SwapFaq|Ubuntu Forum SwapFaq]] (en) +  * **(en)** Official Ubuntu Forum ; sujet : [[https://​help.ubuntu.com/​community/​SwapFaq|Questions fréquentes concernant la SWAP]] 
-  ​* [[http://​www.cyberciti.biz/​faq/​linux-add-a-swap-file-howto/​example.com|Linux add a swap file howto]] (en)+  * **(en)** [[http://​www.cyberciti.biz/​faq/​linux-add-a-swap-file-howto/​|Linux add a swap file howto]] ​— { Comment ajouter un fichier d'​échange sous Linux } sur le blog Nix Craft — Date : 18 mai 2006 ; mise à jour : 3 mai 2017. 
 +  * **Vidéo**: [[https://​www.youtube.com/​watch?​v=NCb4B0DAErc|Comprendre l’intérêt d'une RAM]] 
 +   * **(en)** [[https://​blog.sleeplessbeastie.eu/​2012/​05/​23/​ubuntu-how-to-encrypt-swap-partition/​|la source pour le chiffrement de la swap]]
  
 ---- ----
  
-//​Contributeurs : foustala, laurentb, krop, huit_six, claudiux, SeTtHe, [[utilisateurs:​fnx]]+//​Contributeurs : foustala, laurentb, krop, huit_six, claudiux, SeTtHe, [[utilisateurs:​fnx]], [[utilisateurs:​eagle08]],​ \\ [[https://​help.ubuntu.com/​community/​SwapFaq|les contributeurs de la documentation d'​Ubuntu]]
 // //
 +
 +----
  • swap.1285756415.txt.gz
  • Dernière modification: Le 29/09/2010, 12:33
  • par Vincent85