如何在FreeBSD Unix系统上添加交换
我需要额外的交换空间来提高我的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