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.
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 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.
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)
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.
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.
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:
/etc/fstab
. 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
Sekarang lihat partition sedia ada pada cakera keras.
fdisk -l
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>
Contohnya:
fdisk /dev/sda
此时,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视频教程》
Atas ialah kandungan terperinci Apakah kegunaan ruang swap linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!