自打用起Ubuntu, 每隔一阵子就出现系统无响应,伴随机器狂转。后发现是因为没有设置交换区(Swap)。
百度谷歌了半天,总结如下:
1 首先要确认有没有设置交换区
$ cat /proc/meminfo |grep Swap
SwapCached: 0 kB
SwapTotal: 4047196 kB
SwapFree: 4047196 kB
如果以上后两项的值均为0,则没有设置。
2 若没设置,要选择创建swap的方式
有两种:1 磁盘分区 2 文件
2.1 如果有一块空闲的磁盘空间,则打开磁盘管理,新建一个ext4类型的分区
然后选择“编辑分区(Edit Partition)”,选择Linux Swap(0x82)。
然后执行:
$mkswap /dev/sda6
$swapon /dev/sda6
具体设备符可能不同,可以在磁盘管理界面中看到。
现在,再执行
2.2 如果没有空闲磁盘空间,可以选择创建swap文件。(以下命令节选自http://os.51cto.com/art/201212/372860.htm)
这里要注意先看看/下有没有足够空间:
$df -h
确认后:
$sudo dd if=/dev/zero of=/mnt/Swap.disk bs=1M count=4k<span style="color:#FF0000;"> (count=1k创建1G的Swap,如果要创建4G则count=4k;这步比较慢)</span>
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 131.995 s, 32.5 MB/s
$sudo mkswap -f /mnt/Swap.disk
$sudo swapon /mnt/Swap.disk
大小可参考内存的一倍到两倍,网上众说纷纭,理论型建议两倍,实践型建议小一些,毕竟现在内存怎么也有4G。
下一步是让配置永久生效:
1 对于基于磁盘分区的情况,要先查找swap分区的UUID
$ sudo blkid
/dev/sda1: UUID="BC543D4C543D0B22" TYPE="ntfs"
/dev/sda5: UUID="fc881848-f0bb-40b7-8962-1b49eaace3ff" TYPE="ext4"
/dev/sdb5: LABEL="Mov195G" UUID="96098278199E3ED4" TYPE="ntfs"
/dev/sdb6: LABEL="Data" UUID="429C716D9C715C7B" TYPE="ntfs"
/dev/sda6: UUID="<span style="color:#FF0000;">4d39241a-e46b-4869-af0c-e1888d6dfa72</span>" TYPE="ext4" LABEL="swap"
2 加入到系统的fstab中
$ <span style="font-size:18px;">sudo gedit /etc/fstab</span>
在最后加入下列内容,红色部分为Swap分区的UUID
UUID=<span style="color:#FF0000;">4d39241a-e46b-4869-af0c-e1888d6dfa72</span> none swap sw 0 0
或
/mnt/Swap.disk none swap sw 0 0
另外,关于配置swapiness的更多参考见:
http://www.linuxidc.com/Linux/2013-03/80208.htm
http://os.51cto.com/art/201212/372860.htm