十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Linux交换空间(swap space)是磁盘上的一块区域,可以是一个分区或一个文件,或者是他们组合。当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务。
网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;网站设计、成都网站设计收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了十年的成都创新互联公司网站建设公司。
Linux 交换空间(swap space)是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是我友判们常说的 swap out 和 swap in。
交换空间 Linux swap
理论上来说,如果物理内存足够多并且不需要休眠功能,那 swap 就没什么用,可关键问题是我们很难保证物理内存在任何情况下都够用,因为总有意想不到的情况发生,比如某些进程耗内存超预期,服务器压力超预期,内存泄漏等。
Linux swap 的好处
1.对于一些大型的应用程序(如 LibreOffice、video editor 等),在启动的过程中会使用大量的内存,但这些内存很多时候只是在启动的时候用一下,后面的运行过程中很少再用到这些内存。有了 swap 后,系统就可以将这部分不这么使用好让改的内存数据保存到 swap 上去,从而释放出更多的物理内存供系统使用。
2.很多发行版(如 ubuntu)的休眠功能依赖于 swap 分区,当系统休眠的时候,会将内存中的数据保存到 swap 分区上,等下次系统启动的时候,再将数据加载到内存中,这样可以加快系统的启动速度,所以如果要使用休眠的功能,必须要配置 swap 分区,并且大小一定要大于等于物理内存
3.在某些情况下,物理内存有限,但又想运行耗内存的程序怎么办?这时可以通过配置足够的 swap 空间来达到目标,虽然慢一点,但至少可以运行。
4.虽然大部分情况下,物理内存都是够用的,但是总有一些意想不到的状况,比如某个进程需要的内存超过了预期,或者有进程存在内存泄漏等,当内存不够的时候,就会触发内核的 OOM killer,根据 OOM killer 的配置,某些进程会被 kill 掉或者系统直接重启(默认情况是优先 kill 耗内存最多的那个进程),不过有了 swap 后,可以拿 swap 当内存用,虽然速度慢了点,但至少给了我们一个去 debug、kill 进程或者保存当前工作进度的机会。
5.如果看过 Linux 内存管理,就会知道系统会尽可能多的将空闲内存用于 cache,以加快系统的 I/O 速度,所以如果能将不怎么常用的内存数据移动到 swap 上,就会有更多滑手的物理内存用于 cache,从而提高系统整体性能。
计算机的存储空间问题相信大部分的管理员都有不同的处理方式。今天我们就一起来了解一下,在linux系统中,交换空间的具体使用情况是什么。希望通过对本文的阅读,大家对于linux系统有更多的了解,下面就开始今天的主要内容吧。
交换空间
交换空间是现代Linux系统中的二种内存类型。交换空间的主要功能是当全部的RAM被占用并且需要更多内存时,用磁盘空间代替RAM内存。
例如,假设你有一个8GBRAM的计算机。如果你启动的程序没有填满RAM,一切都好,不需要交换。假设你在处理电子表格,当添加更多的行时,你电子表格会增长,加正滑悔上所有正在运行的程序,将会占用全部的RAM。如果这时没有可用的交换空间,你将不得不停止处理电子表格,直到关闭一些其他程序来释放一些RAM。
内核使用一个内存管理程序来检测近没有使用的内存块(内存页)。内存管理程序将这些相对不经常使用的内存页交换到硬盘上专门指定用于“举正分页”或交换的特殊分区。这会释放RAM,为输入电子表格更多数据腾出了空间。那些换出到硬盘的内存页面被内核的内存管理代码跟踪,如果需要,可以被分页回RAM。
Linux计算机中的内存总量是RAM+交换分区,交换分区被称为虚拟内存.
Linux交换分区类型
Linux提供了两种类型的交换空间。默认情况下,大多数Linux在安装时都会创建一个交换分区,但是也可以使用一个特殊配置的文件作为交换文件。电脑培训发现交换分区顾名思义就是一个标准磁盘分区,由mkswap命令指定交换空间。
如果没有可用磁盘空间来创建新的交换分区,或者卷组中没有空间为交换空间创建逻辑让闷卷,则可以使用交换文件。这只是一个创建好并预分配指定大小的常规文件。然后运行mkswap命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件来做交换空间。(LCTT译注:Ubuntu近来的版本采用了交换文件而非交换空间,所以我对于这种说法保留看法)
下面显示了 Linux 中的 /etc/fstab 文件示例
代码如下:
# 《fs》 《mountpoint》 《type》 《opts》
《dump/pass》
/dev/sda1 /boot ext2 noauto,noatime 1 1
/dev/sda3 / ext3 noatime 0 0
/dev/sda2 none swap sw 0 0
/dev/hda1 /var/lib/mysql ext3 noatime 1 2
/dev/hdb1 /export/data ext3 noatime 1 2
/dev/hde1 /export/home ext3 noatime 1 2
/dev/hde2 /var/tmp ext3 noatime 1 2
/dev/hde3 /usr/portage/distfiles ext3 noatime 1 2
/dev/hde4 /tmp ext3 noatime 1 2
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
最后,您可以在 AIX 中使用 /etc/swapspaces 文件来配置交换空间分区
代码如下:
* This file is modified by the chps, mkps and rmps commands and referenced
* by the lsps and swapon commands.
hd6:
dev = /dev/hd6
paging00:
dev = /dev/paging00
paging01:
dev = /dev/paging01
您应该使用对应的命令或 Smitty 工具来修改该文件内容,而不要直接编辑该文件。
若要删除额外的交换空间,您可以使用对应的 swapoff 或 swap -d 命令来禁用该交换分区。然而要注意,您只能禁用当前未使用的交换分区,并且不能禁用主交换分区。
五、添加临时交换容量
有时您可能会用尽已配置的交换空间分区,从而在短时间内需要更多 VM,直到您能够组织某种更永久性的解决方案。如果有某个分区可用,您可以按照上面在配置交换分区部分中的介绍来准备它。
如果没有空余的分区可用,您可以创建一个或多个文件,并将它们临时添加到可用交换池中。大多数系统甚至允许您迅兆在 NFS 安装的文件系统上使用交换文件,当您没有本地磁盘空间可用时,就可以使用这样的文件系统。
若要将文件用于交换空间,请首先创建一个适当的文件。mkfile》 命令在这里最合适,因橘蚂为它提供了创建大型文件的简单方法。您可以在命令行指定文件名圆昌埋和文件大小:
代码如下:
mkfile 512m /export/data/swapfile
然后可以像添加分区一样添加该文件:
代码如下:
$ swap -a /export/data/swapfile
or
代码如下:
$ swapon /export/data/swapfile
以这种方式使用的交换文件通常决不是针对交换空间问题的长期解决方案。您应该尽快为交换空间配置专用分区。
六、监视交换空间使用情况
交换空间及其使用情况的监视包括两个方面:当前使用情况和活动使用情况。您可以在各种 UNIX 变体中找到一批不同的工具,它们报告可用空闲内存和 VM 使用情况以及当前使用情况。
在 Solaris 下,swap 工具提供了大多数交换接口功能,包括报告使用情况和可用设备。例如,若要获得已配置的交换设备列表,如在 Solaris 下监视交换空间使用情况
代码如下:
$ swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0d0s1 102,1 8 1220928 1220928
在 AIX 下,您可以使用 lsps 工具来获得同样的信息
代码如下:
$ lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto
hd6 hdisk0 rootvg 2048MB 3 yes yes
在 Linux 下,您可以使用 swapon 工具
代码如下:
$ swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 1004052 319744 -1
在上述每个示例中,您都可以看到可用交换空间位置列表及其用途,并大致了解交换空间的当前使用量情况。
这些快照视图非常有用,但它们仅显示了当前使用情况。其中有关交换空间的定期或全面使用情况的信息非常少。出于性能的考虑,或者在诊断您怀疑可能与交换空间有关的问题时,您通常需要内存和分页使用情况的更加交互式的视图。
七、活动 VM 监视
vmstat 命令可以提供虚拟内存使用情况的长期视图,包括提供有关交换空间与 RAM 之间正在活动地交换的内存量的信息。在命令行上,您需要指定要在报告统计信息时使用的间隔(以秒为单位)。结果输出显示了大量的信息,并且可用于做出有关 VM 配置和分配的决策。