Apakah kegunaan ruang swap linux?

藏色散人
Lepaskan: 2023-03-25 10:35:25
asal
2066 orang telah melayarinya

Fungsi ruang swap Linux adalah untuk meningkatkan memori maya yang tersedia untuk ruang swap adalah jenis memori kedua dalam sistem Linux moden memori diperlukan Apabila, ruang cakera digunakan dan bukannya memori RAM.

Apakah kegunaan ruang swap linux?

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.

Apakah kegunaan ruang swap Linux?

Pengenalan untuk menukar ruang pada sistem Linux

Ketahui cara mengubah suai kapasiti ruang swap pada sistem anda dan berapa banyak ruang swap yang anda perlukan.

Tidak kira apa sistem pengendalian hari ini, Tukar ruang adalah perkara biasa. Linux menggunakan ruang swap untuk meningkatkan memori maya yang tersedia kepada hos. Ia boleh menggunakan satu atau lebih partition swap khusus atau menukar fail pada fail biasa atau volum logik.

Terdapat dua jenis asas memori dalam komputer biasa. Jenis pertama, memori capaian rawak (RAM), digunakan untuk menyimpan data dan program yang digunakan oleh komputer. Komputer hanya boleh menggunakan program dan data jika ia disimpan dalam RAM. Memori akses rawak ialah memori yang tidak menentu; iaitu, jika komputer dimatikan, data yang disimpan dalam RAM akan hilang.

Cakera keras ialah media magnetik yang digunakan untuk penyimpanan data dan program jangka panjang. Media magnetik ini boleh mengekalkan data dengan baik walaupun komputer kehilangan kuasa, data yang disimpan pada cakera akan dikekalkan. CPU (unit pemprosesan pusat) tidak boleh mengakses secara langsung program dan data pada cakera keras ia mesti disalin terlebih dahulu ke RAM, di mana CPU mengakses arahan kod dan memanipulasi data. Semasa proses but, komputer menyalin program sistem pengendalian tertentu (seperti kernel, init, atau systemd) dan data pada cakera keras ke RAM, di mana pemproses komputer, CPU, boleh mengakses data secara terus.

Swap Space

Swap space ialah jenis memori kedua dalam sistem Linux moden. Fungsi utama ruang swap adalah untuk menggantikan memori RAM dengan ruang cakera apabila semua RAM diduduki dan lebih banyak memori diperlukan.

Sebagai contoh, katakan anda mempunyai komputer dengan 8GB RAM. Jika program yang anda lancarkan tidak mengisi RAM, semuanya baik-baik saja dan tiada pertukaran diperlukan. Katakan anda sedang mengerjakan hamparan Apabila anda menambah lebih banyak baris, hamparan anda akan berkembang dan, dengan semua program berjalan, akan menggunakan semua RAM anda. Jika tiada ruang swap tersedia pada masa ini, anda perlu berhenti bekerja pada hamparan sehingga anda menutup beberapa program lain untuk mengosongkan sedikit RAM.

Inti menggunakan pengurus memori untuk mengesan blok memori (halaman memori) yang tidak digunakan baru-baru ini. Pengurus memori menukar halaman memori yang agak jarang digunakan ini kepada partition khas pada cakera keras yang ditetapkan untuk "paging" atau pertukaran. Ini membebaskan RAM, memberi ruang untuk memasukkan lebih banyak data ke dalam hamparan. Halaman memori yang ditukar kepada cakera dijejaki oleh kod pengurusan memori kernel dan boleh dihalakan semula ke dalam RAM jika perlu.

Jumlah jumlah memori dalam komputer Linux ialah RAM + partition swap, dan partition swap dipanggil memori maya.

Jenis partition swap Linux

Linux Dua jenis ruang swap disediakan. Secara lalai, kebanyakan pemasangan Linux mencipta partition swap, tetapi ia juga mungkin untuk menggunakan fail yang dikonfigurasikan khas sebagai fail swap. Seperti namanya, partition swap ialah partition cakera standard, dan ruang swap ditentukan oleh perintah mkswap.

Fail swap boleh digunakan jika tiada ruang cakera tersedia untuk mencipta partition swap baharu, atau tiada ruang dalam kumpulan volum untuk mencipta volum logik bagi ruang swap. Ini hanyalah fail biasa yang dibuat dan diperuntukkan terlebih dahulu kepada saiz yang ditentukan. Kemudian jalankan perintah mkswap untuk mengkonfigurasinya sebagai ruang swap. Saya tidak mengesyorkan menggunakan fail untuk ruang swap melainkan sangat diperlukan. (Terjemahan LCTT: Versi terkini Ubuntu menggunakan fail swap dan bukannya ruang swap, jadi saya menyimpan pendapat saya tentang kenyataan ini)

Pertukaran yang kerap

Apabila jumlah memori maya Pertukaran yang kerap mungkin berlaku apabila (RAM dan ruang swap) menjadi hampir penuh. Sistem ini menghabiskan begitu banyak masa untuk menghafal blok memori antara ruang swap dan RAM sehingga ia meninggalkan sedikit masa untuk kerja sebenar. Gejala biasa keadaan ini ialah: sistem menjadi lembap atau tidak bertindak balas sepenuhnya, dan lampu cakera keras menyala hampir sentiasa.

Gunakan perintah free untuk memaparkan beban CPU dan penggunaan memori Anda akan mendapati bahawa beban CPU adalah sangat tinggi, mungkin 30 hingga 40 kali ganda bilangan teras CPU dalam sistem. Situasi lain ialah apabila RAM dan ruang swap hampir diperuntukkan sepenuhnya.

Malah, melihat data SAR (System Activity Report) boleh mendedahkan perkara ini juga. Pasang SAR pada setiap sistem saya dan gunakan ini untuk analisis data.

Apakah saiz ruang swap yang betul?

Bertahun-tahun yang lalu, saiz ruang swap yang diperuntukkan pada cakera keras anda adalah dua kali ganda saiz RAM pada komputer anda (sudah tentu, ini berlaku apabila kebanyakan RAM komputer diukur dalam KB atau MB). Oleh itu, jika komputer mempunyai 64KB RAM, partition swap 128KB harus diperuntukkan. Peraturan ini mengambil kira hakikat bahawa saiz RAM adalah sangat kecil pada masa itu dan memperuntukkan lebih daripada 2x RAM untuk ruang swap tidak meningkatkan prestasi. Kebanyakan sistem akan menghabiskan lebih banyak masa menggunakan lebih daripada dua kali ganda RAM untuk bertukar-tukar daripada melakukan kerja yang berguna.

RAM sangat murah sekarang kerana kebanyakan komputer hari ini mempunyai beberapa gigabait RAM. Kebanyakan komputer baharu saya mempunyai sekurang-kurangnya 8GB RAM, satu mempunyai 32GB RAM, dan stesen kerja utama saya mempunyai 64GB RAM. Komputer lama saya mempunyai 4 hingga 8GB RAM.

Apabila mengendalikan mesin dengan RAM yang banyak, ruang swap dihadkan kepada faktor prestasi jauh di bawah 2x. Panduan Pemasangan Dalam Talian Fedora 28 mentakrifkan pendekatan semasa untuk menukar peruntukan ruang. Apa yang berikut adalah cadangan saya.

Jadual di bawah menyediakan saiz yang disyorkan untuk partition swap berdasarkan jumlah RAM dalam sistem dan sama ada terdapat memori yang mencukupi untuk hibernate sistem. Saiz partition swap yang disyorkan ditetapkan secara automatik semasa pemasangan. Walau bagaimanapun, untuk memenuhi hibernasi sistem, anda perlu mengedit ruang swap semasa peringkat partition tersuai.

Jadual 1: Ruang swap sistem yang disyorkan dalam dokumentasi Fedora 28

Saiz memori sistem Ruang swap yang disyorkan Saiz ruang swap yang disyorkan (menyokong mod hibernasi) Kurang daripada 2 GB 2 kali RAM 3 kali RAM 2 GB - 8 GB sama dengan saiz RAM 2 kali RAM 8 GB - 64 GB 0.5 kali RAM 1.5 kali RAM Lebih daripada 64 GB Mod Hibernate berkaitan beban kerja tidak disyorkan

Di atas sempadan antara setiap julat yang disenaraikan (contohnya, dengan 2GB, 8GB atau 64GB RAM sistem) harus digunakan dengan berhati-hati bergantung pada ruang swap yang dipilih dan sokongan hibernasi. Jika sumber sistem anda membenarkannya, menambah ruang swap boleh menghasilkan prestasi yang lebih baik.

Sudah tentu, kebanyakan pentadbir Linux mempunyai idea mereka sendiri tentang berapa banyak ruang swap harus digunakan. Jadual 2 di bawah mengandungi pengesyoran berdasarkan pengalaman peribadi saya dalam pelbagai tetapan. Ini mungkin tidak terpakai kepada anda, tetapi seperti Jadual 1, ia mungkin membantu.

Jadual 2: Ruang swap sistem yang disyorkan oleh pengarang

Saiz RAM Ruang swap yang disyorkan ≤ 2GB2X RAM2GB – 8GB= RAM>8GB8GB

Kedua-dua ini Perkara biasa merentas jadual ialah apabila jumlah RAM meningkat, menambah lebih banyak ruang swap melebihi titik tertentu hanya akan mengakibatkan pertukaran yang kerap sebelum ruang swap hampir digunakan sepenuhnya. Berdasarkan pengesyoran di atas, anda harus menambah lebih banyak RAM dan bukannya menambah lebih banyak ruang swap jika boleh. Seperti situasi serupa yang mempengaruhi prestasi sistem, sila gunakan pengesyoran yang paling sesuai untuk anda. Menguji dan membuat perubahan berdasarkan keadaan dalam persekitaran Linux memerlukan masa dan usaha.

Menambah lebih banyak ruang swap pada persekitaran cakera bukan LVM

Menghadapi hos dengan Linux dipasang dan menukar keperluan untuk ruang swap, kadangkala perlu mengubah suai definisi sistem Saiz ruang swap. Prosedur ini boleh digunakan dalam sebarang situasi di mana anda perlu meningkatkan saiz ruang swap. Ia menganggap ruang cakera kosong yang mencukupi. Prosedur ini juga mengandaikan bahawa partition cakera adalah "mentah" EXT4 dan swap partition, dan bukannya menggunakan Logical Volume Management (LVM).

Langkah asas adalah mudah:

  1. Tutup ruang swap sedia ada.
  2. Buat partition swap baharu dengan saiz yang dikehendaki.
  3. Baca semula jadual partition.
  4. Konfigurasikan partition sebagai ruang swap.
  5. Menambah partition baharu pada /etc/fstab.
  6. Buka ruang swap.

Tidak perlu menghidupkan semula mesin.

Atas sebab keselamatan, sekurang-kurangnya anda harus memastikan tiada aplikasi sedang berjalan dan tiada ruang swap digunakan sebelum menutup ruang swap. Perintah free atau top boleh memberitahu anda sama ada ruang swap sedang digunakan. Untuk keselamatan yang lebih baik, anda boleh kembali ke mod runlevel 1 atau pengguna tunggal.

Tutup partition swap menggunakan arahan untuk menutup semua ruang swap:

swapoff -a
Salin selepas log masuk
Salin selepas log masuk

Sekarang lihat partition sedia ada pada cakera keras.

fdisk -l
Salin selepas log masuk

Ini akan memaparkan jadual partition pada setiap pemacu. Mengenal pasti partition swap semasa mengikut nombor.

Lancarkan fdisk dalam mod interaktif menggunakan arahan berikut:

fdisk /dev/<device name>
Salin selepas log masuk

Contohnya:

fdisk /dev/sda
Salin selepas log masuk

此时,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.
Salin selepas log masuk

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

partprobe
Salin selepas log masuk

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

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

LABEL=SWAP-sdaX   swap        swap    defaults        0 0
Salin selepas log masuk

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

/dev/sdaY         swap        swap    defaults        0 0
Salin selepas log masuk

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

mkswap /dev/sdaY
Salin selepas log masuk

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

swapon -a
Salin selepas log masuk

你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 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 ~]#
Salin selepas log masuk

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

swapoff -a
Salin selepas log masuk
Salin selepas log masuk

现在增加逻辑卷的大小。

[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 ~]#
Salin selepas log masuk

运行 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 ~]#
Salin selepas log masuk

重新启用交换空间。

[root@studentvm1 ~]# swapon -a
[root@studentvm1 ~]#
Salin selepas log masuk

现在,使用 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 ~]#
Salin selepas log masuk

您也可以使用 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 ~]#
Salin selepas log masuk

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

推荐学习:《linux视频教程

Atas ialah kandungan terperinci Apakah kegunaan ruang swap linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan