|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 850|回復: 1
打印 上一主題 下一主題

Linux系统管理员工具包: 交换空间管理和技巧

[複製鏈接]

9

主題

0

好友

550

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    開心
    2024-11-3 08:57
  • 簽到天數: 422 天

    [LV.9]以壇為家II

    推廣值
    0
    貢獻值
    0
    金錢
    2098
    威望
    550
    主題
    9
    樓主
    發表於 2012-11-16 11:05:10
    配置交换空间(包括在紧急情况下添加空间)以充分利用您的系统。在本文中,您将了解如何监视系统以确定有效的交换空间配置数据,并研究将交换空间不只是用作辅助随机访问存储器 (RAM) 的方法。

    关于本系列

    典型的 UNIX 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。

    UNIX 如何使用交换空间

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

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

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

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

    设置交换空间值

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

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

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

    除了这些基础之外,还有许多关于应该如何配置 VM 和应该分配多少磁盘空间的观点和规则。下面总结了其中一些方法:
        * 有些管理员认为,您的交换空间决不应该少于物理 RAM。由于其中的 VM 使用方式,这是较旧的 UNIX 版本(尤其是 SunOS)的一个要求。从理论上讲,拥有比物理 RAM 更多的 VM 可以使操作系统能够在系统变得空闲时将所有当前进程换出到磁盘上,并且能够提高系统的性能,因为可以将新进程直接加载到 RAM 中,而不必预先交换应用程序。
        * 对于开发系统,许多管理员都赞成应该有与 RAM 一样多的 VM。采用这种方法的原因在于,交换空间还在系统故障期间用作转储活动内存的位置;然后可以在启动期间重新加载所存储的内存转储,并将其保存为内核核心文件。如果所配置的交换空间小于物理 RAM,此类转储就无法实现。
        * 在高性能部署环境中,由于您只希望将应用程序活动地保留在内存中,并且不需要大量的交换,您可以配置尽可能小的 VM。崩溃恢复不是必需的,而确定物理 RAM 的潜在缺乏(由于交换空间用尽)的能力可以提供警告,使您知道应用程序环境未得到优化或者您需要升级 RAM。
        * 对于桌面环境,拥有非常大的 VM 分配可能对您有利,因为它使您能够运行大量的应用程序(其中许多应用程序可能是空闲的,可以容易地交换,从而使更多 RAM 对活动应用程序可用)。

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

    下面是一些保守值:
        * 在桌面系统上,至少分配与物理 RAM 一样多的交换空间。
        * 在服务器上,至少分配可用 RAM 的 50% 作为交换空间。一旦头脑中有了大体数字,您就需要配置交换空间。

    配置交换空间

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

    交换空间的创建和配置方式随不同的系统而异。在 Linux 下,用于交换的磁盘分区是通过分区 ID 来标识的,该分区必须通过 mkswap 命令来初始化:
    1. #device         device           mount            FS    fsck mount  
    2. mount
    3. #to mount       to fsck          point            type  pass at boot
    4. options
    5. #
    6. fd              -                /dev/fd          fd    -    no  
    7.     -
    8. /proc           -                /proc            proc  -    no     
    9. -
    10. /dev/dsk/c0d0s1 -                -                swap  -    no     
    11. -
    12. /dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 /                ufs   1    no     
    13. -
    14. /dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home     ufs   2    yes  
    15.    -
    16. /devices        -                /devices         devfs -    no     
    17. -
    18. ctfs            -                /system/contract ctfs  -    no     
    19. -
    20. objfs           -                /system/object   objfs -    no     
    21. -
    22. swap            -                /tmp             tmpfs -    yes  
    23.    -
    複製代碼
    清单 2 显示了 Linux 中的 /etc/fstab 文件示例。

    清单 2. 在 Linux 中指定要用作交换空间的分区

    # <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 文件来配置交换空间分区(请参见清单 3)。

    清单 3. 使用 /etc/swappspaces 文件来配置交换空间分区

    * 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> 命令在这里最合适,因为它提供了创建大型文件的简单方法。您可以在命令行指定文件名和文件大小:
    1. kthr      memory            page            disk          faults     
    2. cpu
    3. r b w   swap  free  re  mf pi po fr de sr cd cd cd cd   in   sy   cs us
    4. sy id
    5. 0 0 0 945932 385632  9  36 13  0  1  0 100 3  0  0  0  413  172   87  0
    6. 36 63
    7. 0 0 0 944616 384068  0   8  3  0  0  0  0  0  0  0  0  654   21  
    8. 51  0  1 99
    9. 0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  596   21  
    10. 52  0  1 99
    11. 0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  694   12  
    12. 48  0  1 99
    13. 0 0 0 944612 384064  0   0  0  0  0  0  0  5  0  0  0  658   11  
    14. 50  0  1 99
    15. 0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  576   18  
    16. 52  0  1 99
    17. 0 0 0 944500 383988 115 850 1  0  0  0  0  0  0  0  0  612
    18. 1656  120  1  5 94
    19. 0 0 0 942060
    20. 382444  6  62  0  0  0  0  0  0  0  0  0  669  256  146  0  2 98
    21. 0 0 0 942048
    22. 382432  9 105  0  0  0  0  0  0  0  0  0  699  414  188  0  2 98
    23. 0 0 0 946188
    24. 388188 481 2400 10 10 10 0 0  5  0  0  0  595 12613 6082 6 18 76
    25. 0 0 0 944488
    26. 386308 769 4753 1 8  8  0  0  7  0  0  0  625 15705 6285 8 29 63
    27. 0 0 0 943128
    28. 385104 839 5194 176 9 9 0  0 14  0  0  0  579 16077 6304 8 32 60
    29. 0 0 0 937692
    30. 377628 32 209  2  0  0  0  0  2  0  0  0  654  403  131  0  2 97
    31. 0 0 0 937228
    32. 377208  0   0  0  0  0  0  0  0  0  0  0  647   38   63  0  1 99
    33. 0 0 0 937220
    34. 377200 121 980 0  0  0  0  0  0  0  0  0  623 1246  218  1  6 93
    35. 0 0 0 937348
    36. 377320 126 1044 2 1  1  0  0  3  0  0  0  667 1266  228  1  7 93
    37. 0 0 0 937428
    38. 377408 57 686  0  0  0  0  0  0  0  0  0  702  890  180  1  5 94
    39. 0 0 0 937436
    40. 377404 72 861  0  0  0  0  0 54  0  0  0  689 1113  295  1  6
    41. 93
    複製代碼
    其中存在许多列——有些列比另一些列更重要。关键的列包括:
        * swap——显示可用的总交换空间
        * free——显示空闲的交换空间量
        * pi——换入的千字节数
        * po——换出的千字节数
        * fr——空闲的千字节数

    非常低的空闲空间量和较高的换入或换出页数可能表明 VM 不足,非常高的换入和换出页数可能表明物理 RAM 不足。

    将交换空间用于临时存储

    在某些 UNIX 变体下,特别是 Solaris 和 Linux,您可以使用 tmpfs 文件系统;该文件系统使用 VM 作为存储空间。当您有充足的 RAM 时,这提供了支持超快速磁盘访问的理想方法;未使用的文件将交换到磁盘上。其结果是实现了快速访问最常用文件的高效解决方案,并且它可以显著提高应用程序速度,例如软件开发,其中要在编译过程期间创建大量的临时文件。

    总结

    正确配置交换空间可以对计算机效率产生巨大的影响。大多数人设置并遗忘他们的交换空间设置,不过在本文中,您研究了几种添加和调整交换空间的方法。您还看到了如何向您的配置永久地添加交换空间,以及如何在内存不足时紧急添加交换空间
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-16 16:27 , Processed in 0.017737 second(s), 16 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部