您现在的位置: 万盛学电脑网 >> 操作系统 >> Linux教程 >> 正文

Linux中如何使用和管理交换空间

作者:佚名    责任编辑:admin    更新时间:2022-06-22

  给计算机配置交换空间可以充分利用系统,在物理内存被充满时使用,那么Linux下要如何使用Linux交换空间呢?Linux交换空间又要如何管理呢?下面小编就给大家介绍下Linux下使用交换空间的方法,一起来学习下吧。

 Linux中如何使用和管理交换空间

  一、UNIX如何使用交换空间

  所有 UNIX 操作系统都支持某种虚拟内存 (VM) 系统。使用 VM 系统,您有两个主要区域来存储有关活动应用程序及其使用的数据的信息——物理随机访问存储器 (RAM) 和硬盘驱动器上分配的空间。

  在具有 VM 的计算机中,可加载到内存中的应用程序和数据量可以大于物理 RAM,因为没有活动地使用的应用程序和信息被交换 到了磁盘上(交换空间 这个术语由此得名)。

  VM 系统的优点在于,物理 RAM 得到了更有效的利用——这是因为它仅包含正在执行的应用程序和正在使用的数据。由于 RAM 比硬盘空间快,您从活动地加载的应用程序中获得了所需的性能,同时还得益于能够运行比通常所支持的更多的应用程序。

  其结果是您获得了大得多的可寻址内存空间(在 32 为系统上为 4GB,在 64 位系统上则更大),从而使得应用程序开发更加容易,同时仍然提供高性能。

  二、设置交换空间值

  您在计算机上配置的交换空间量主要取决于应用程序和操作系统。如果交换空间太小,则可能无法运行您希望运行的所有应用程序,而如果交换空间太大,则可能在浪费那些从未使用的磁盘空间。您可能还会间接地使得系统过载,因为与太小的交换空间相比,太大的交换空间会导致糟糕的性能,这是由于与系统执行实际处理所花的时间相比,它在换入和换出页面上所花的时间更多。

  不同的 UNIX 变体以不同的方式使用它们的交换空间。有些变体仅在已经使用完物理内存时才使用交换空间。其他变体则对所有非活动的应用程序和未使用的页面使用交换空间。有些变体保留所有应用程序中的数据副本——同时包括内存和交换空间中的应用程序。缺省情况下,有些变体避免使用交换空间,并尽可能提供某种机制来允许您调整交换空间的使用方式。许多变体使用这些不同安排的组合来充分利用它们的交换空间。

  例如在 Linux® 中,当您使用 2.6 内核时,可以通过设置 /etc/sysctl.conf 中的 vm.swappiness 值来调整系统的 swappiness。较高的值导致交换更多页面,较低的值导致将更多应用程序保留在内存中(即使这些应用程序处于空闲状态)。

  除了这些基础之外,还有许多关于应该如何配置 VM 和应该分配多少磁盘空间的观点和规则。下面总结了其中一些方法:

  1. 有些管理员认为,您的交换空间决不应该少于物理 RAM。由于其中的 VM 使用方式,这是较旧的 UNIX 版本(尤其是 SunOS)的一个要求。从理论上讲,拥有比物理 RAM 更多的 VM 可以使操作系统能够在系统变得空闲时将所有当前进程换出到磁盘上,并且能够提高系统的性能,因为可以将新进程直接加载到 RAM 中,而不必预先交换应用程序。

  2.对于开发系统,许多管理员都赞成应该有与 RAM 一样多的 VM。采用这种方法的原因在于,交换空间还在系统故障期间用作转储活动内存的位置;然后可以在启动期间重新加载所存储的内存转储,并将其保存为内核核心文件。如果所配置的交换空间小于物理 RAM,此类转储就无法实现。

  3.在高性能部署环境中,由于您只希望将应用程序活动地保留在内存中,并且不需要大量的交换,您可以配置尽可能小的 VM。崩溃恢复不是必需的,而确定物理 RAM 的潜在缺乏(由于交换空间用尽)的能力可以提供警告,使您知道应用程序环境未得到优化或者您需要升级 RAM。

  4.对于桌面环境,拥有非常大的 VM 分配可能对您有利,因为它使您能够运行大量的应用程序(其中许多应用程序可能是空闲的,可以容易地交换,从而使更多 RAM 对活动应用程序可用)。

  选择正确的交换空间量很大程度上取决于您所配置的平台——其预期用途和您希望如何处理可用 VM 缺乏的情况。

  下面是一些保守值:

  1. 在桌面系统上,至少分配与物理 RAM 一样多的交换空间。

  2. 在服务器上,至少分配可用 RAM 的 50% 作为交换空间。一旦头脑中有了大体数字,您就需要配置交换空间。

  三、配置交换空间

  所有 UNIX 系统都有多种类型的交换空间。主交换空间是通常在启动时配置的交换空间,并且通常是作为操作系统安装的一部分来设置的。所有 UNIX 系统通常都有一个主交换空间分配。

  交换空间的创建和配置方式随不同的系统而异。在 Linux 下,用于交换的磁盘分区是通过分区 ID 来标识的,该分区必须通过 mkswap 命令来初始化:

  代码如下:

  $ mkswap /dev/sda2

  在大多数传统 UNIX 环境中,您可以使用任何可用分区而无需进行任何准备工作。在 HP-UX、AIX® 和 Linux 上,您可以使用 swapon 命令来将分区添加到可用的交换空间:

  代码如下:

  $ swapon /dev/sda2

  在 Solaris 上,您可以使用 swap 命令来将交换空间添加到系统:

  代码如下:

  $ swap -a /dev/dsk/c0t0d0s2

  请注意,以这种方式添加的交换空间在重新启动后不会保留。若要永久地将交换空间添加到系统,您必须配置启动配置文件之一来自动启用交换空间分配。

  四、添加启动时交换空间

  在大多数 UNIX 变体下,交换空间都是作为内核初始化的一部分在启动时自动添加的。大多数变体使用文件系统安装文件(/etc/fstab、/etc/vfstab 或 /etc/filesystems)中的行来指定要用作交换空间的分区。您可以从 Solaris 的 /etc/vfstab 文件中看到这样一个示例

  在 Solaris 中指定要用作交换空间的分区:

  代码如下:

  #device device mount FS fsck mount mount

  #to mount to fsck point type pass at boot options

  #

  fd - /dev/fd fd - no -

  /proc - /proc proc - no -

  /dev/dsk/c0d0s1 - - swap - no -

  /dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -

  /dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes -

  /devices - /devices devfs - no -

  ctfs - /system/contract ctfs - no -

  objfs - /system/object objfs - no -

  swap - /tmp tmpfs - yes -

上一页12下一页共2页

  下面显示了 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

  然后可以像添加分区一