如何在FreeBSD Unix系统上添加交换

时间:2020-01-09 14:16:09  来源:igfitidea点击:

我需要额外的交换空间来提高我的FreeBSD Unix服务器/桌面性能。
如何在不创建新分区的情况下使用命令行选项将交换文件添加到FreeBSD系统?
为了安全起见,如何加密FreeBSD Unix服务器上的交换空间?

交换不过是磁盘上可用作虚拟内存的空间或文件。
在FreeBSD和类似Unix的操作系统中,通常使用整个硬盘分区进行交换。
当基于FreeBSD的服务器内存不足时,内核可以将睡眠或非活动进程移入交换区。
专用的Swap分区可以有效避免系统冻结,但是如果您发现RAM不足或应用程序占用过多内存,则可能需要设置交换文件。
本指南可帮助您在基于FreeBSD的Unix服务器上添加交换空间。

如何在FreeBSD版本9或更早的版本上添加交换?

您将通过以超级用户身份执行以下dd命令来创建交换文件:

dd if=/dev/zero of=/root/swap.8G.bin bs=1M count=8192

这应该在/root /中创建一个名为swap.8G.bin的8GB文件。
为确保此方法有效,您可以输入:

ls -alh  /root/swap.8G.bin

出于安全原因,请设置权限,运行:

chmod 0600 /root/swap.8G.bin
ls -alh  /root/swap.8G.bin

输出示例:
如何在FreeBSD版本9.X和更早的命令上创建交换文件

如何在启动时激活交换空间?

要将其添加到您的rc.conf中,您将输入:

echo 'swapfile="/root/swap.8G.bin"' >> /etc/rc.conf

如果要查看rc.conf中是否存在该文件,可以执行:

tail /etc/rc.conf

重新启动系统:

reboot

有关在不重新引导系统的情况下立即启用交换文件的说明

如果要立即应用交换文件,请执行以下命令:

## Enable swap space ## 
mdconfig -a -t vnode -f /root/swap.8G.bin -u 0 
 
## Find out configured devices i.e. swap device name ##
mdconfig -l -v
 
## Turn it on ##
swapon /dev/md0

输出示例:
FreeBSD找出使用mdconfig命令创建/追加的交换设备名称

要查看交换信息的详细信息,请输入:

swapinfo -k
swapinfo -k | grep '/root/swap.8G.bin'
swapinfo -h

输出示例:

Device          1K-blocks     Used    Avail Capacity
/dev/ada0p3       1048540     736K     1.0G     0%
/dev/md0          8388608       0B     8.0G     0%
Total             9437148     736K     9.0G     0%

如何在FreeBSD 10.x或更高版本上设置交换文件

首先,使用dd命令创建交换文件(128M):

dd if=/dev/zero of=/root/swap1 bs=1m count=128

出于安全原因,请在新文件上设置适当的权限:

chmod 0600 /root/swap1

编辑/etc/fstab,输入:

vi /etc/fstab

添加/添加以下行:

## md42 will be assigned by system, use any unused device name (run 'mdconfig -lv' to get list of attached memory device names) ##
md42	none	swap	sw,file=/root/swap1	0	0

如果要查看它是否在/etc/fstab中,可以执行:

tail /etc/fstab

现在,交换空间将在系统启动时添加。
要立即添加并激活交换空间,请运行:

swapon -aq

要查看交换类型的详细信息,请执行以下操作:

swapinfo -k

来自基于FreeBSD10的服务器上的示例会话:
如何在FreeBSD 10.x和更高版本上添加交换文件

关于保护和加密FreeBSD服务器上交换空间的说明

加密交换空间可以避免敏感信息(例如密码和内存中的其他数据)的泄漏。

加密交换文件的过程

执行以下命令以创建一个名为/root/en.swap0的交换文件

# dd if=/dev/random of=/root/en.swap0 bs=1m count=64
# mdconfig -a -t vnode -f /root/en.swap0
# geom eli init md0

输出示例:

Enter new passphrase:
Reenter new passphrase: 
 
Metadata backup can be found in /var/backups/md0.eli and
can be restored with the following command:
 
	# geli restore /var/backups/md0.eli md0

追加md0,输入:

# geom eli attach md0

打开加密的交换文件:

# swapon /dev/md0.eli

验证新创建的交换空间:

# swapinfo -k

会话示例:
在FreeBSD 10.x服务器上加密交换文件

这种骇客有点丑陋,但有效。
我强烈建议您使用此处所述的加密交换空间。

如何在FreeBSD上禁用用于分页和交换的设备和文件?

执行以下命令以禁用/dev/md0交换空间:

# swapoff /dev/md0
# swpainfo -k

如何在FreeBSD上显示交换使用摘要?

使用top命令:

# top

输出示例(在输出中查找交换):

last pid:   874;  load averages:  0.47,  0.32,  0.27                                                                                                                                                                                                    up 0+00:34:48  16:52:35
22 processes:  1 running, 21 sleeping
CPU:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 14M Active, 13M Inact, 104M Wired, 80M Buf, 1841M Free
Swap: 1216M Total, 1216M Free
 
  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME    WCPU COMMAND
  721 root          1  20    0 25328K  3704K select   0:00   0.00% ntpd
  755 root          1  20    0 86084K  6896K select   0:00   0.00% sshd
  765 root          1  20    0 23980K  5188K select   0:00   0.00% sendmail
  758 root          1  20    0 23492K  3452K pause    0:00   0.00% csh
....
..

您还可以使用pstat或swapinfo命令:

# pstat -s

或者

# swapinfo -k

您还可以使用vmstat/systat命令:

# vmstat
# systat swap