Maison > Article > Opération et maintenance > À quoi sert l’espace d’échange Linux ?
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.
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.
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
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)
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. 🎜
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 LVMLes étapes de base sont simples :
Fermez l'espace d'échange existant./etc/fstab
. Il ne devrait pas être nécessaire de redémarrer la machine. /etc/fstab
。
应该不需要重新启动机器。
为了安全起见,在关闭交换空间前,至少你应该确保没有应用程序在运行,也没有交换空间在使用。free
或 top
命令可以告诉你交换空间是否在使用中。为了更安全,您可以恢复到运行级别 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
是交互方式的,只在指定的磁盘驱动器上进行操作。
使用 fdisk
的 p
子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 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
你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 free
或top
命令来验证这一点。
在 LVM 磁盘环境中添加交换空间
如果你的磁盘使用 LVM ,更改交换空间将相当容易。同样,假设当前交换卷所在的卷组中有可用空间。默认情况下,LVM 环境中的 Fedora Linux 在安装过程将交换分区创建为逻辑卷。您可以非常简单地增加交换卷的大小。
以下是在 LVM 环境中增加交换空间大小的步骤:
首先,让我们使用 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
命令或 top
、free
或其他几个命令来验证这一点。
[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!