====== Gérer la partition swap ======
--- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/03/12 15:01//
===== Procédure =====
La partition ''swap'' sert de fichier d'échange sous Linux. Celle-ci se rempli donc pour soulager la RAM quand elle sature. Cependant, il arrive qu'elle ne se vide pas correctement quand la RAM est de nouveau libre.
Pour vider cette partition sans risquer de perdre des processus et donc des données :
* On commence par vérifier l'espace disponible en RAM :
free -h{{ :linux:swap_001.png |}}
* Dans cet exemple, on voit que l'espace occupé sur la ''swap'' (en rouge) est inférieur à l'espace disponible en RAM (en vert). On peut donc sans problème faire le transfert :
swapoff -a && swapon -a
===== Augmenter la partition =====
Cette procédure ne fonctionne qu'avec des partitions gérées par LVM (Logical Volume Manager).Cette procédure nécessite des droits administrateur ''root''. Faîtes donc très attention à ce que vous faîtes.
Si de manière récurrente, la partition ''swap'' se remplie, sans que vous puissiez arrêter des processus inutiles, alors votre ''swap'' est probablement sous dimensionner. Pour étendre la partition :
* On vérifie les disques déjà existants :
lsblk
Retour console :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,8G 0 part
├─test--1--vg-root 254:0 0 17,8G 0 lvm /
└─test--1--vg-swap_1 254:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 3,7G 0 rom
* On ajoute un disque à notre VM (ou un disque physique à notre serveur, auquel cas, il ne faudra pas oublier de redémarrer ce dernier).
* On scanne les périphériques à la recherche du nouveau disque. Dans la séquence, ci-dessous on remplacera ''host0'' par ''host1'' puis ''host2'', etc, jusqu'à ce que le système indique une erreur :
echo " - - - " > /sys/class/scsi_host/host0/scan
* On revérifie les disques existant et on note le nom du nouveau disque (''sdb'' dans notre cas) :
lsblk
Retour console :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,8G 0 part
├─test--1--vg-root 254:0 0 17,8G 0 lvm /
└─test--1--vg-swap_1 254:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 8G 0 disk
sr0 11:0 1 3,7G 0 rom
* On récupère le chemin de la partition ''swap'' :
lvdisplay
Retour console :
--- Logical volume ---
LV Path /dev/test-1-vg/swap_1
LV Name swap_1
VG Name test-1-vg
LV UUID 8IAOTo-LzMy-9Q8s-Nipm-tQLU-UH0H-emgQ9T
LV Write Access read/write
LV Creation host, time test-1, 2018-01-05 14:39:45 +0100
LV Status available
# open 2
LV Size 2,00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
* On vérifie que la ''swap'' peut être vidée (voir plus haut) et, si c'est possible, on la désactive en indiquant le chemin de la partition :
swapoff -v /dev/test-1-vg/swap_1
* On intègre le nouveau disque à LVM :
pvcreate /dev/sdb
* Une fois la ''swap'' totalement désactivée, on peut étendre le volume en y ajoutant le nouveau disque :
vgextend /dev/test-1-vg /dev/sdb
* On étend la partition :
lvextend -l +100%FREE /dev/test-1-vg/swap_1
* On redimensionne la partition :
lvresize -l +100%FREE /dev/test-1-vg/swap_1
* On recrée la ''swap'' :
mkswap /dev/test-1-vg/swap_1
* Finalement, on peut réactiver la ''swap'' :
swapon -va
* On vérifie :
lvdisplay
Retour console :
--- Logical volume ---
LV Path /dev/onl-infra-intrus-1-vg/swap_1
LV Name swap_1
VG Name onl-infra-intrus-1-vg
LV UUID 8IAOTo-LzMy-9Q8s-Nipm-tQLU-UH0H-emgQ9T
LV Write Access read/write
LV Creation host, time onl-infra-intrus-1, 2018-01-05 14:39:45 +0100
LV Status available
# open 0
LV Size <10,00 GiB
Current LE 2559
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
Autre vérification :
free -h
Retour console :
total used free shared buff/cache available
Mem: 7,8Gi 6,6Gi 209Mi 80Mi 1,0Gi 858Mi
Swap: 9Gi 0B 9Gi
~~DISCUSSION~~