Comment augmenter la taille du swap?

17

Récemment, j'ai mis plus de RAM dans mon serveur et maintenant j'ai un total de 24 Go de RAM. À l'origine, j'ai configuré le système d'exploitation pour avoir une taille d'échange de 2 Go.

/dev/sdc1               1         281     2257101   82  Linux swap / Solaris
/dev/sdc2   *         282       60801   486126900   83  Linux

2 Go sont alloués pour le swap actuellement, mais lire autour de lui semble que ce n'est pas beaucoup. Pour un système de 24 Go, je pense allouer au moins 10 Go de swap.

Mes questions sont les suivantes: puis-je le faire pendant que le système d'exploitation fonctionne? Dois-je réinstaller? J'utilise OpenSuse 11.3

X-Men
la source

Réponses:

23

Vous avez décidé de créer une partition de swap distincte lors de l'installation. Vous ne pouvez pas le redimensionner en ligne - même un redimensionnement hors ligne va prendre un temps considérable et risque d’endommager votre système de fichiers suivant sur / dev / sdc2.

L'option la plus simple pour contourner ce problème consiste à créer une nouvelle partition de swap sur un disque différent que vous n'utilisez pas actuellement (ou que vous pouvez vous permettre de déconnecter pour re-partitionner) ou simplement à utiliser un fichier de swap dans un système de fichiers existant (fourni avec une pénalité de performance mineure en raison de la surcharge du système de fichiers ).

La procédure générale pour ajouter une partition / fichier d'échange:

  • créer soit une nouvelle partition de type 82h soit un nouveau fichier de 8 Go en utilisant dd if=/dev/zero of=/swapfile bs=1M count=8192
  • l'initialiser en utilisant mkswap /swapfileoumkswap /dev/sdXX
  • utiliser swapon /swapfileouswapon /dev/sdXX respectivement pour activer votre nouvel espace de swap à la volée
  • ajoutez une entrée à / etc / fstab pour vous assurer que votre nouvel espace d'échange est activé au redémarrage

Votre partition d'échange actuelle reste utilisée, vous souhaiterez peut-être vous en débarrasser pour réduire la complexité. Utilisez simplement swapoff /dev/sdc1pour désactiver son utilisation pour le moment et supprimez la référence dans/etc/fstab

le-wabbit
la source
@ synticon-dj merci. les données sur le disque où le swap est important sont cruciales, et j'ai un autre disque que je peux utiliser. Pensez-vous que la définition d'un autre disque en tant que swap affectera les performances? Dois-je remplacer le / dev / sdc1?
x-man
Cela l'affectera d'une manière ou d'une autre - si / dev / sdc2 voit beaucoup d'utilisation, cette E / S est en concurrence avec les E / S de swap. Si vous ajoutez une partition d'un autre disque comme échange, vous ajoutez simplement la charge d'E / S d'échange à ce disque. Ce qui sera bénéfique pour les performances de swap, est inévitablement préjudiciable à vos autres E / S sur le disque affecté. Cela étant dit, rien n'est aussi mauvais pour les performances de votre système qu'un nombre élevé de demandes de page / pagein. Si vous voyez cela, corrigez-le en ajoutant de la mémoire ou en réduisant l'empreinte mémoire de votre système.
the-wabbit
avoir deux périphériques de swap sur des broches différentes améliorera vos performances de swap (car il y a deux disques qui peuvent être adressés simultanément au lieu d'un seul pour lire et écrire). Mais comme vous ne devriez pas voir une activité d'E / S élevée en raison de l'échange de toute façon, vous préférerez peut-être utiliser un seul périphérique / partition / fichier pour faciliter l'administration
the-wabbit
1
Notez qu'un fichier d'échange ne fonctionnera pas si vous êtes sur un BtrFS. Deux solutions sont (1) de créer un périphérique de bouclage ou (2) d'utiliser btrfs-swapon .
Diagon
@ the-wabbit Comment crée-t-on réellement l' /etc/fstabentrée pour s'assurer que le nouveau swap est activé au redémarrage?
SIGSTACKFAULT
3

Auriez-vous besoin d'un échange dans ce cas? Je ne sais pas ce que vous avez en cours d'exécution sur votre système, mais j'essaie d'avoir suffisamment de mémoire sur mes serveurs pour éviter de permuter complètement ... (je l'ai, mais seulement en tant que sécurité intégrée, si mon serveur commence à permuter, j'achète plus de mémoire ...)

Analytique
la source
Je suis de votre côté ici, le swap est principalement utilisé pour éviter les plantages en cas d'épuisement de la mémoire (volatile) et dès que vous commencez à frapper les plateaux, votre serveur prend une I / O et / ou une bande passante, bien que les SSD puissent aider ils sont au moins 10 fois plus lents que la RAM, ce qui est vraiment bon marché de nos jours. Les prix du DDR3 ECC 1333 MHz sont d'environ 1000 $ pour 64 Go (8 x 8 Go)
Shadok
2

Vous devez repartitionner le disque. Si je me souviens bien de déplacer le début de la partition Linux n'est pas pris en charge dans Parted, mais vous pouvez également réduire votre système de fichiers Linux et votre partition, puis effectuer un autre échange à la fin de votre disque. Vous ne pouvez pas le faire lorsque le système est en ligne.

Une autre solution consiste à utiliser un gros fichier comme swap. (Je ne sais pas si c'est une bonne idée de nos jours.)

Pierre
la source
Tous les systèmes de fichiers ne peuvent pas être réduits, même hors ligne. Malheureusement, cela affecte les choix populaires comme XFS ( xfs.org/index.php/Shrinking_Support ).
Sven
@Stone, cela signifie-t-il réinstaller le système d'exploitation?
x-man
Non. Cela signifie faire des sauvegardes :), démarrer un LiveCD, réduire le système de fichiers linux puis la partition sdc2 et faire un nouvel échange à la fin du disque et redémarrer votre système.
Stone
0

1 Désactivez tous les processus de swap

sudo swapoff -a

2 Redimensionnez le swap

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks

3 Rendre le fichier utilisable comme swap

sudo mkswap /swapfile

4 Activez le fichier d'échange

sudo swapon /swapfile

5 Vérifiez la quantité de swap disponible

grep SwapTotal /proc/meminfo
Ryabchenko Alexander
la source