我在为服务器安装系统的时候,并没有挂载swap分区。把博客转过来之后,发现MySQL时不时就罢工,原因就是内存不足。看来必须要挂载一个swap分区才好。
但是,我在对数据盘进行分区的时候,把整个磁盘都用上了,并没用预留空间。swap分区是行不通了,只能试试swap文件。
服务器的物理内存是512MB,按照1.5~2倍原则,我将swap文件设置为1GB。
#root@aliyun:/srv# dd if=/dev/zero of=SWAPFILE bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 59.7957 s, 18.0 MB/s
使用 swapon
命令让系统使用这个文件作为swap文件。但是这个文件不能直接使用,否则会报错:
root@aliyun:/srv# swapon swapfile
swapon: /srv/swapfile: read swap header failed: Invalid argument
必须先使用 mkswap
将文件格式化成swap格式(不知道为什么会少了4KB):
root@aliyun:/srv# mkswap SWAPFILE 1048576
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=1aaed031-33ef-479b-a9a4-2f008a7bbb2f
使用格式化完毕的文件:
root@aliyun:/srv# swapon SWAPFILE
查看文件使用情况:
root@aliyun:/srv# swapon -s
Filename Type Size Used Priority
/srv/SWAPFILE file 1048572 95852 -1
为避免重启后swapfile生效,可以将启用swap的代码加入启动文件中,对于ubuntu server,编辑 /etc/rc.local
文件,加入以下内容(具体文件路径自定):
swapon /srv/SWAPFILE
或者
修改 /etc/fstab
文件,加入以下内容:
/srv/SWAPFILE swap swap defaults 0 0