我们大多数人通常不会考虑交换空间,除非我们在系统上遇到问题,表明我们没有足够的空间。即便如此,查看和度量系统上交换空间的充分性并不复杂,了解系统的正常状态可以帮助您发现错误。因此,让我们查看一些可以帮助您查看交换空间的命令。但首先,让我们回顾一些基本原理。
什么是交换空间以及它是如何使用的
交换空间是类似于内存扩展的磁盘空间。当系统的物理内存(RAM)已满,并且系统需要更多的内存资源时,就会使用它。之所以称之为“交换”,是因为系统将把内存中的一些非活动页面移到交换空间中,以便在RAM中容纳更多数据。换句话说,它提供了一种在繁忙的系统上释放RAM的方法。
程序和数据使用RAM,因为这是系统处理它们的唯一方式。事实上,当系统启动时,它会移动像内核和systemd进入RAM。
交换空间可以配置为它自己的磁盘分区或设置为一个文件。现在,大多数Linux安装都在安装过程中创建分区,这是最理想的。但是,您可以设置交换文件并将其用于交换空间。
由于交换空间不足,您可能会遇到一个称为“抖动”的问题,在这个问题中,程序和数据在RAM和交换空间之间移动得非常频繁,以至于系统运行得非常慢。
RAM和swap合在一起称为“虚拟内存”。
你需要换多少?
过去,交换空间的建议是RAM的两倍,但那是在系统没有像现在这样多的RAM的时候。这些针对Ubuntu的建议可能也适用于其他发行版:
内存交换交换(休眠)256MB 256MB 512MB 512MB 1GB 1GB 1GB 2GB 2GB 1GB 3GB 3GB 2GB 5GB 4GB 2GB 6GB 6GB 2GB 8GB 8GB 3GB 11GB 12GB 3GB 15GB 16GB 4GB 20GB 24GB 5GB 29GB 32GB 6GB 38GB 64GB 8GB 72GB 128GB 11GB 139GB
交换和带休眠的交换之间的区别很重要。休眠系统会立即将系统状态保存到硬盘上,然后关机。当你唤醒它时(例如,打开笔记本电脑的“盖子”),你正在运行的所有程序都会回到系统进入休眠状态时的状态。因此,建议使用更多的交换空间。并不是所有的系统都在休眠。
要确定你的系统是否可以休眠,运行这个命令:
/usr/sbin/pm-hibernate
如果您得到了上面所示的响应,那么您的系统就可以休眠了。你可以运行下面的命令来测试它:
$ sudo pm-hibernate
如何查看Linux系统上交换空间的大小?
你可以使用swapon——显示命令查看系统上的交换空间。
$ swapon——show NAME TYPE SIZE USED PRIO /dev/zram0 partition 5.8G 3.3M 100
另一个有用的命令是免费的命令,显示交换空间和内存使用情况。与- m,结果显示在mb而不是KBs。
$ free -m total used free shared buff/cache available Mem: 5922 723 525 7 4673 4897 Swap: 5921 3 5918 . $ free -m total used free shared buff/cache available
的特别行政区命令可以报告交换空间的使用情况。
$ sar -S 13 Linux 5.13.9-200.fc34。x86_64 (dragonfly) 09/10/2021 _x86_64_ (2 CPU) 02:09:55 PM kbswpfree kbswpused %swpused kbswpcad %swpcad 02:09:56 PM 6060796 3328 0.05 0 0.00 0.00 PM 6060796 3328 0.05 0 0.00 PM
注意在上面的输出免费的命令交换空间正在被适度使用,即使有大量可用的空闲内存。
你也可以使用如下命令查看交换分区:
美元lsblk名称MAJ: MIN RM大小RO类型挂载点loop0 7:0 0 32.3 1循环/var/lib/snapd/snap/snapd/12704 loop1 7:1 0 55.4 1循环/var/lib/snapd/snap/core18/2128 loop2 2 0 65.4 1循环/var/lib/snapd/snap/powershell/173 loop3 7:3 0 32.3 1循环/var/lib/snapd/snap/snapd/12883 sda 8:0 0 111.8 g 0磁盘├─sda1 8:1 0 1 g 0 / boot一部分└─sda2宣告0110.8G 0 part / sdb 8:17 0 434G 0 part /home sdc 8:32 1 1.9T 0 disk [SWAP] <=== there it is!
当您需要或不需要更多的交换空间时
如果您的系统有很多内存,那么您可能永远都不需要使用交换空间。但让它可用几乎总是一个好主意。与内存相比,磁盘空间相对便宜,而且您永远不知道某些进程何时会增加负担。另一方面,如果交换空间几乎在所有时间都被大量使用,那么您可能应该考虑向系统添加更多的RAM,因为使用它会带来一些性能成本。
创建交换文件
如果你需要在Linux系统上创建一个交换文件,使用如下命令:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 [sudo] password for me: 8192+0 records in 8192+0 records out 8589934592 bytes (8.6 GB, 8.0 GiB) copied, 147.893 s, 58.1 MB/s
创建文件后,更改其文件权限,运行mkswap命令并使用swapon (命令以使其可用swapon——显示命令,以验证其已投入使用。
$ sudo chmod 600 /swapfile $ sudo mkswap /swapfile设置交换空间版本1,大小= 8 GiB(8589930496字节)没有标签,UUID=3d060a1d-90d1-436f-97b6-4d1aebb15ce2
如何关闭和重新打开开关
可以打开或关闭交换文件的使用,并使用swapoff和swapon命令,但如果您添加了交换分区并希望使用它而不是交换文件,则可能只希望关闭交换。
$ sudo swapoff -v /swapfile swapoff /swapfile $ sudo swapon -v /swapfile swapon: /swapfile: found signature [pagesize=4096, signature=swap] swapon: /swapfile: pagesize=4096, swapsize=8589934592, devsize=8589934592 swapon /swapfile $ swapon -show NAME TYPE SIZE USED PRIO /swapfile file 8G 0B -2
总结
如果您的Linux系统一直平稳地运行,那么它可能不会在内存或交换方面有任何问题。但是,如果不是这样,或者您只是好奇交换空间是如何设置和使用的,请尝试上面的一些命令,看看它们能告诉您什么。