Maison  >  Article  >  Opération et maintenance  >  À quoi sert l’espace d’échange Linux ?

À quoi sert l’espace d’échange Linux ?

藏色散人
藏色散人original
2023-03-25 10:35:252024parcourir

La fonction de l'espace de swap Linux est d'augmenter la mémoire virtuelle disponible pour l'hôte ; l'espace de swap est le deuxième type de mémoire dans les systèmes Linux modernes. La fonction principale de l'espace de swap est d'utiliser le disque lorsque toute la RAM est occupée et plus de mémoire. est nécessaire de l'espace au lieu de la mémoire RAM.

À quoi sert l’espace d’échange Linux ?

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

À quoi sert l'espace d'échange Linux ?

Introduction à l'espace d'échange sur les systèmes Linux

Apprenez comment modifier la capacité de l'espace d'échange sur votre système et la quantité d'espace d'échange dont vous avez besoin.

Quel que soit le système d'exploitation actuel, le Swapspace est très courant. Linux utilise l'espace de swap pour augmenter la mémoire virtuelle disponible pour l'hôte. Il peut utiliser une ou plusieurs partitions d'échange dédiées ou échanger des fichiers sur des fichiers normaux ou des volumes logiques.

Il existe deux types de mémoire de base dans un ordinateur typique. Le premier type, la mémoire vive (RAM), est utilisé pour stocker les données et les programmes utilisés par l'ordinateur. L'ordinateur ne peut utiliser les programmes et les données que s'ils sont stockés dans la RAM. La mémoire vive est une mémoire volatile ; c'est-à-dire que les données stockées dans la RAM sont perdues si l'ordinateur est éteint.

Le disque dur est un support magnétique utilisé pour le stockage à long terme des données et des programmes. Ce support magnétique peut très bien conserver les données ; même si l'ordinateur perd de l'alimentation, les données stockées sur le disque seront conservées. Le CPU (unité centrale de traitement) ne peut pas accéder directement aux programmes et aux données sur le disque dur ; ils doivent d'abord être copiés dans la RAM, où le CPU accède aux instructions de code et manipule les données. Pendant le processus de démarrage, l'ordinateur copie les programmes spécifiques du système d'exploitation (tels que le noyau, init ou systemd) et les données du disque dur vers la RAM, où le processeur de l'ordinateur, le CPU, peut accéder directement aux données.

Swap Space

L'espace de swap est le deuxième type de mémoire dans les systèmes Linux modernes. La fonction principale de l'espace d'échange est de remplacer la mémoire RAM par de l'espace disque lorsque toute la RAM est occupée et que davantage de mémoire est nécessaire.

Par exemple, disons que vous possédez un ordinateur avec 8 Go de RAM. Si le programme que vous lancez ne remplit pas la RAM, tout va bien et aucun échange n'est nécessaire. Disons que vous travaillez sur une feuille de calcul. Au fur et à mesure que vous ajoutez des lignes, votre feuille de calcul s'agrandit et, avec tous les programmes en cours d'exécution, occupera toute votre RAM. S'il n'y a pas d'espace de swap disponible à ce moment-là, vous devrez arrêter de travailler sur la feuille de calcul jusqu'à ce que vous fermiez d'autres programmes pour libérer de la RAM.

Le noyau utilise un gestionnaire de mémoire pour détecter les blocs de mémoire (pages mémoire) qui n'ont pas été utilisés récemment. Le gestionnaire de mémoire échange ces pages de mémoire relativement rarement utilisées vers des partitions spéciales du disque dur désignées pour la « pagination » ou l'échange. Cela libère de la RAM, ce qui permet de saisir davantage de données dans la feuille de calcul. Ces pages mémoire échangées sur le disque sont suivies par le code de gestion de la mémoire du noyau et peuvent être renvoyées dans la RAM si nécessaire.

La quantité totale de mémoire dans un ordinateur Linux est la RAM + la partition d'échange, et la partition d'échange est appelée mémoire virtuelle

Types de partition d'échange Linux

Linux fournit deux types d'espace d'échange. Par défaut, la plupart des installations Linux créent une partition d'échange, mais il est également possible d'utiliser un fichier spécialement configuré comme fichier d'échange. Comme son nom l'indique, la partition de swap est une partition de disque standard et l'espace de swap est spécifié par la commande mkswap. mkswap 命令指定交换空间。

如果没有可用磁盘空间来创建新的交换分区,或者卷组中没有空间为交换空间创建逻辑卷,则可以使用交换文件。这只是一个创建好并预分配指定大小的常规文件。然后运行 mkswap 命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件来做交换空间。(LCTT 译注:Ubuntu 近来的版本采用了交换文件而非交换空间,所以我对于这种说法保留看法)

频繁交换

当总虚拟内存(RAM 和交换空间)变得快满时,可能会发生频繁交换。系统花了太多时间在交换空间和 RAM 之间做内存块的页面切换,以至于几乎没有时间用于实际工作。这种情况的典型症状是:系统变得缓慢或完全无反应,硬盘指示灯几乎持续亮起。

使用 free

Un fichier d'échange peut être utilisé s'il n'y a pas d'espace disque libre pour créer une nouvelle partition d'échange, ou s'il n'y a pas d'espace dans le groupe de volumes pour créer un volume logique pour l'espace d'échange. Il s'agit simplement d'un fichier normal créé et pré-attribué à une taille spécifiée. Exécutez ensuite la commande mkswap pour le configurer comme espace de swap. Je ne recommande pas d'utiliser des fichiers pour l'espace d'échange, sauf en cas d'absolue nécessité. (Traduction LCTT : les versions récentes d'Ubuntu utilisent des fichiers d'échange au lieu de l'espace d'échange, je réserve donc mon avis sur cette déclaration)

Échange fréquent🎜🎜

Lorsque la mémoire virtuelle totale (RAM et Des échanges fréquents peuvent se produire lorsque l'espace d'échange est presque plein. Le système passe tellement de temps à paginer des blocs de mémoire entre l'espace d'échange et la RAM qu'il ne laisse que peu de temps pour le travail réel. Les symptômes typiques de cette condition sont les suivants : le système devient lent ou ne répond plus du tout et le voyant du disque dur s'allume presque constamment. 🎜

Utilisez la commande free pour afficher la charge du processeur et l'utilisation de la mémoire. Vous constaterez que la charge du processeur est très élevée, pouvant atteindre 30 à 40 du nombre. de cœurs de processeur dans le système. Une autre situation est celle où la RAM et l'espace de swap sont presque entièrement alloués. 🎜🎜En fait, l'examen des données SAR (System Activity Report) peut également révéler ces éléments. Installez SAR sur chacun de mes systèmes et utilisez-les pour l'analyse des données. 🎜

Quelle est la taille correcte de l'espace d'échange ?

Il y a de nombreuses années, la taille de l'espace de swap alloué sur le disque dur était deux fois supérieure à la taille de la RAM de l'ordinateur (bien sûr, c'était à l'époque où la RAM de la plupart des ordinateurs était mesurée en Ko ou en Mo). Par conséquent, si un ordinateur dispose de 64 Ko de RAM, une partition d’échange de 128 Ko doit être allouée. Cette règle prenait en compte le fait que la taille de la RAM était très petite à l’époque et que l’allocation de plus de 2 fois la RAM à l’espace de swap n’améliorait pas les performances. La plupart des systèmes passeront plus de temps à utiliser plus de deux fois la RAM pour l'échange plutôt qu'à effectuer un travail réellement utile.

La RAM est si bon marché maintenant que la plupart des ordinateurs disposent aujourd'hui de gigaoctets de RAM. La plupart de mes nouveaux ordinateurs ont au moins 8 Go de RAM, un a 32 Go de RAM et mon poste de travail principal a 64 Go de RAM. Mon ancien ordinateur avait 4 à 8 Go de RAM.

Lorsque vous utilisez un ordinateur avec beaucoup de RAM, l'espace de swap a un facteur de performances limitant bien inférieur à 2x. Le guide d'installation en ligne de Fedora 28 définit l'approche actuelle de l'allocation d'espace de swap. Ce qui suit sont mes suggestions.

Le tableau ci-dessous indique la taille recommandée pour la partition d'échange en fonction de la quantité de RAM du système et s'il y a suffisamment de mémoire pour mettre le système en veille prolongée. La taille de partition de swap recommandée est automatiquement établie lors de l'installation. Cependant, afin de satisfaire à l'hibernation du système, vous devez modifier l'espace d'échange pendant l'étape de partition personnalisée.

Tableau 1 : Espace de swap système recommandé dans la documentation Fedora 28

Taille de la mémoire système Espace de swap recommandé Taille de l'espace de swap recommandée (prend en charge le mode hibernation) Moins de 2 Go 2 fois RAM 3 fois RAM 2 Go - 8 Go équivaut à Taille de la RAM 2x RAM 8 Go - 64 Go 0,5x RAM 1,5x RAM > 64 Go Mode veille prolongée lié à la charge de travail non recommandé

Limite entre chaque plage répertoriée ci-dessus (par exemple avec 2 Go, 8 Go ou 64 Go de RAM système), veuillez l'utiliser avec prudence en fonction à l'espace d'échange sélectionné et à la fonction d'hibernation prise en charge. Si les ressources de votre système le permettent, l'ajout d'espace de swap peut entraîner de meilleures performances.

Bien sûr, la plupart des administrateurs Linux ont leurs propres idées sur la quantité d'espace de swap à utiliser. Le tableau 2 ci-dessous contient des recommandations basées sur mon expérience personnelle dans divers contextes. Ceux-ci ne s'appliquent peut-être pas à vous, mais comme le tableau 1, ils peuvent être utiles.

Tableau 2 : Espace d'échange système recommandé par l'auteur

Taille de la RAM Espace d'échange recommandé ≤ 2 Go 2 L'ajout d'espace d'échange supplémentaire n'entraînera que des échanges fréquents avant que l'espace d'échange ne soit presque entièrement utilisé. Sur la base des suggestions ci-dessus, vous devriez ajouter plus de RAM au lieu d'ajouter plus d'espace de swap si possible. Comme pour des situations similaires affectant les performances du système, veuillez utiliser les recommandations qui vous conviennent le mieux. Tester et apporter des modifications en fonction des conditions dans un environnement Linux prend du temps et des efforts.

Ajoutez plus d'espace de swap aux environnements de disque non LVM

Face aux hôtes installés sous Linux et à l'évolution des besoins en espace de swap, il est parfois nécessaire de modifier la taille de l'espace de swap défini par le système. Cette procédure peut être utilisée dans toutes les situations où vous devez augmenter la taille de l'espace de swap. Cela suppose un espace disque libre suffisant. Cette procédure suppose également que les partitions de disque sont des partitions EXT4 et swap « brutes », plutôt que d'utiliser la gestion des volumes logiques (LVM).

Les étapes de base sont simples :

Fermez l'espace d'échange existant.
  1. Créez une nouvelle partition d'échange de la taille souhaitée.
  2. Relisez la table de partition.
  3. Configurez la partition comme espace d'échange.
  4. Ajoutez une nouvelle partition à /etc/fstab.
  5. Espace d'échange ouvert.

Il ne devrait pas être nécessaire de redémarrer la machine. /etc/fstab

  • 打开交换空间。
  • 应该不需要重新启动机器。

    为了安全起见,在关闭交换空间前,至少你应该确保没有应用程序在运行,也没有交换空间在使用。freetop 命令可以告诉你交换空间是否在使用中。为了更安全,您可以恢复到运行级别 1 或单用户模式。

    使用关闭所有交换空间的命令关闭交换分区:

    swapoff -a

    现在查看硬盘上的现有分区。

    fdisk -l

    这将显示每个驱动器上的分区表。按编号标识当前的交换分区。

    使用以下命令在交互模式下启动 fdisk

    Pour des raisons de sécurité, avant de fermer l'espace de swap, vous devez au moins vous assurer qu'aucune application n'est en cours d'exécution et qu'aucun espace de swap n'est utilisé. La commande free ou top peut vous indiquer si l'espace de swap est utilisé. Pour plus de sécurité, vous pouvez revenir au niveau d'exécution 1 ou au mode mono-utilisateur.

    Fermez la partition de swap à l'aide de la commande pour fermer tout l'espace de swap :

    fdisk /dev/<device name>

    Affichez maintenant les partitions existantes sur le disque dur.

    fdisk /dev/sda

    Cela affichera la table de partition sur chaque lecteur. Identifie la partition de swap actuelle par numéro. 🎜

    Démarrez fdisk en mode interactif à l'aide de la commande suivante : 🎜🎜

    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    🎜🎜Par exemple : 🎜🎜
    partprobe
    🎜

    此时,fdisk 是交互方式的,只在指定的磁盘驱动器上进行操作。

    使用 fdiskp 子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 512 字节的块以及起始和结束柱面编号的形式显示,因此您可能需要做一些计算来确定分配分区之间和末尾的可用空间。

    使用 n 子命令创建新的交换分区。fdisk 会问你开始柱面。默认情况下,它选择编号最低的可用柱面。如果你想改变这一点,输入开始柱面的编号。

    fdisk 命令允许你以多种格式输入分区的大小,包括最后一个柱面号或字节、KB 或 MB 的大小。例如,键入 4000M ,这将在新分区上提供大约 4GB 的空间,然后按回车键。

    使用 p 子命令来验证分区是否按照指定的方式创建的。请注意,除非使用结束柱面编号,否则分区可能与你指定的不完全相同。fdisk 命令只能在整个柱面上增量的分配磁盘空间,因此你的分区可能比你指定的稍小或稍大。如果分区不是您想要的,你可以删除它并重新创建它。

    现在指定新分区是交换分区了 。子命令 t 允许你指定定分区的类型。所以输入 t,指定分区号,当它要求十六进制分区类型时,输入 82,这是 Linux 交换分区类型,然后按回车键。

    当你对创建的分区感到满意时,使用 w 子命令将新的分区表写入磁盘。fdisk 程序将退出,并在完成修改后的分区表的编写后返回命令提示符。当 fdisk 完成写入新分区表时,会收到以下消息:

    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.

    此时,你使用 partprobe 命令强制内核重新读取分区表,这样就不需要执行重新启动机器。

    partprobe

    使用命令 fdisk -l 列出分区,新交换分区应该在列出的分区中。确保新的分区类型是 “Linux swap”。

    修改 /etc/fstab 文件以指向新的交换分区。如下所示:

    LABEL=SWAP-sdaX   swap        swap    defaults        0 0

    其中 X 是分区号。根据新交换分区的位置,添加以下内容:

    /dev/sdaY         swap        swap    defaults        0 0

    请确保使用正确的分区号。现在,可以执行创建交换分区的最后一步。使用 mkswap 命令将分区定义为交换分区。

    mkswap /dev/sdaY

    最后一步是使用以下命令启用交换空间:

    swapon -a

    你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 freetop 命令来验证这一点。

    在 LVM 磁盘环境中添加交换空间

    如果你的磁盘使用 LVM ,更改交换空间将相当容易。同样,假设当前交换卷所在的卷组中有可用空间。默认情况下,LVM 环境中的 Fedora Linux 在安装过程将交换分区创建为逻辑卷。您可以非常简单地增加交换卷的大小。

    以下是在 LVM 环境中增加交换空间大小的步骤:

    1. 关闭所有交换空间。
    2. 增加指定用于交换空间的逻辑卷的大小。
    3. 为交换空间调整大小的卷配置。
    4. 启用交换空间。

    首先,让我们使用 lvs 命令(列出逻辑卷)来验证交换空间是否存在以及交换空间是否是逻辑卷。

    [root@studentvm1 ~]# lvs
      LV     VG                Attr       LSize  Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home   fedora_studentvm1 -wi-ao----  2.00g                                                      
      pool00 fedora_studentvm1 twi-aotz--  2.00g               8.17   2.93                            
      root   fedora_studentvm1 Vwi-aotz--  2.00g pool00        8.17                                   
      swap   fedora_studentvm1 -wi-ao----  8.00g                                                      
      tmp    fedora_studentvm1 -wi-ao----  5.00g                                                      
      usr    fedora_studentvm1 -wi-ao---- 15.00g                                                      
      var    fedora_studentvm1 -wi-ao---- 10.00g                                                      
    [root@studentvm1 ~]#

    你可以看到当前的交换空间大小为 8GB。在这种情况下,我们希望将 2GB 添加到此交换卷中。首先,停止现有的交换空间。如果交换空间正在使用,终止正在运行的程序。

    swapoff -a

    现在增加逻辑卷的大小。

    [root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
      Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
      Logical volume fedora_studentvm1/swap successfully resized.
    [root@studentvm1 ~]#

    运行 mkswap 命令将整个 10GB 分区变成交换空间。

    [root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swap
    mkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature.
    Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
    no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a
    [root@studentvm1 ~]#

    重新启用交换空间。

    [root@studentvm1 ~]# swapon -a
    [root@studentvm1 ~]#

    现在,使用 lsblk 命令验证新交换空间是否存在。同样,不需要重新启动机器。

    [root@studentvm1 ~]# lsblk
    NAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                                    8:0    0   60G  0 disk
    |-sda1                                 8:1    0    1G  0 part /boot
    `-sda2                                 8:2    0   59G  0 part
      |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 lvm  
      | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
      |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
      |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
      |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
      | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
      |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
      |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
      |-fedora_studentvm1-swap           253:4    0   10G  0 lvm  [SWAP]
      |-fedora_studentvm1-usr            253:5    0   15G  0 lvm  /usr
      |-fedora_studentvm1-home           253:7    0    2G  0 lvm  /home
      |-fedora_studentvm1-var            253:8    0   10G  0 lvm  /var
      `-fedora_studentvm1-tmp            253:9    0    5G  0 lvm  /tmp
    sr0                                   11:0    1 1024M  0 rom  
    [root@studentvm1 ~]#

    您也可以使用 swapon -s 命令或 topfree 或其他几个命令来验证这一点。

    [root@studentvm1 ~]# free
                  total        used        free      shared  buff/cache   available
    Mem:        4038808      382404     2754072        4152      902332     3404184
    Swap:      10485756           0    10485756
    [root@studentvm1 ~]#

    请注意,不同的命令以不同的形式显示或要求输入设备文件。在 /dev 目录中访问特定设备有多种方式。

    推荐学习:《linux视频教程

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Article précédent:qu'est-ce que Linux LunArticle suivant:qu'est-ce que Linux Lun