Linux添加交换文件教程
如何额外的交换空间来提高Linux服务器/台式机系统的性能。
如何在不创建新分区的情况下使用命令行选项将交换文件添加到Linux系统?
在Linux中,就像在大多数其他类似Unix的操作系统中一样,通常使用整个硬盘分区进行交换。
但是,对于2.6 Linux内核,交换文件的速度与交换分区一样快,尽管我建议使用交换分区。
交换文件的管理灵活性胜于分区的灵活性;由于现代大容量硬盘驱动器可以重新映射物理扇区,因此不能保证任何分区都是连续的。
您可以将交换文件添加为专用分区,也可以按照以下说明创建交换文件。
在Linux下添加交换文件的过程
您需要使用dd命令创建交换文件。
mkswap命令用于在设备或文件中设置Linux交换区域。
步骤1以root用户身份登录
打开终端窗口(选择应用程序>附件>终端)或使用ssh客户端登录到远程服务器。
出现提示时,通过执行" su-"(或" sudo -s")并输入root密码来切换到root用户:
$ su
或者
$ sudo -s
步骤2创建存储文件
执行以下命令以创建512MB交换文件(1024 * 512MB = 524288块大小):
# dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
输出示例:
524288+0 records in 524288+0 records out 536870912 bytes (537 MB) copied, 3.23347 s, 166 MB/s
其中:
- ``if =/dev/zero`:从/dev/zero文件读取。/dev/zero是一个特殊文件,其中提供了许多空字符来构建名为/swapfile1的存储文件。
- ``of =/swapfile1`:从/dev/zero读取存储文件到/swapfile1。
- ``bs = 1024`:一次读写1024个字节。
- ``count = 524288`:仅复制523288 BLOCKS输入块。
步骤3安全交换文件
出于安全原因设置正确的文件权限,请执行:
# chown root:root /swapfile1 # chmod 0600 /swapfile1
全球可读的交换文件是一个巨大的本地漏洞。
以上命令确保只有root用户才能读取和写入文件。
步骤4设置Linux交换区域
执行以下命令以在文件中设置Linux交换区域:
# mkswap /swapfile1
输出示例:
Setting up swapspace version 1, size = 524284 KiB no label, UUID=0e5e7c60-bbba-4089-a76c-2bb29c0f0839
步骤5启用交换文件
最后,立即激活/swapfile1交换空间,执行:
# swapon /swapfile1
步骤6更新/etc/fstab文件
要在Linux系统重新引导后激活/swapfile1,请在/etc/fstab文件中添加条目。
使用文本编辑器(例如vi)打开此文件:
# vi /etc/fstab
追加以下行:
/swapfile1 none swap sw 0 0
保存并关闭文件。
下次Linux在重新引导后启动时,它将自动为您启用新的交换文件。
如何验证Linux交换文件是否已激活?
只需使用free命令:
$ free -m
total used free shared buffers cached Mem: 1876 1798 77 0 119 1440 -/+ buffers/cache: 237 1638 Swap: 4607 0 4607
如何在Linux上显示交换使用摘要?
执行以下swapon命令:
# swapon -s
输出示例:
Filename Type Size Used Priority /dev/sda6 partition 4194296 0 0 /swapfile1 file 524280 0 -1
另一个选项是查看/proc/meminfo文件:
$ less /proc/meminfo $ grep -i --color swap /proc/meminfo
输出示例:
SwapCached: 30748 kB SwapTotal: 6291448 kB SwapFree: 6154008 kB
您还可以使用top命令,atop命令和/或htop命令显示有关交换使用情况的信息:
# top # atop # htop
如何在Linux上禁用用于分页和交换的设备和文件?
您需要使用swapoff命令:
# swapoff /swapfile1 # swapon -s
如何在Linux服务器上设置swappiness?
语法为:
# sysctl vm.swappiness=VALUE # sysctl vm.swappiness=20
或者
# echo VALUE > /proc/sys/vm/swappiness # echo 30 > /proc/sys/vm/swappiness
"/proc/sys/vm/swappiness"文件中的值控制内核将多大程度地交换内存页面。
较高的值会增加攻击性,较低的值会降低攻击性。
默认值为60。
要使更改永久生效,请将以下行添加到/etc/sysctl.conf
中:
echo 'vm.swappiness=30' >> /etc/sysctl.conf