天天看點

磁盤中如何清空swap分區,并且加大swap的分區

1 我的系統是Centos6.x 記憶體有32G,按理來說應該配置設定swap分區為8G但,但是由于曆史原因,這個配置設定的swap分區為4G,但是這個機器上跑了mysql,占用了swap分區為1G多,導緻swap消耗一般以上,zabbix監控一直在報警,是以要加大swap分區!前提是要把這個swap給下了,首先要将swap分區dump到記憶體中去!

步驟:

第一

sync 将系統緩沖區同步到磁盤中去

<code>sync</code>

第二:

<code>echo</code> <code>"3"</code> <code>&gt;  </code><code>/proc/sys/vm/drop_caches</code>

解釋:是釋放cache的操作!

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

預設是0

第三:disable all swaps

<code>swapoff -a</code>

第四:用檔案作為Swap分區

1.建立要作為swap分區的檔案:增加1GB大小的交換分區,則指令寫法如下,其中的count等于想要的塊的數量(bs*count=檔案大小)。

<code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=</code><code>/root/swapfile</code> <code>bs=1G count=8</code>

2.格式化為交換分區檔案:

<code>mkswap </code><code>/root/swapfile</code>

#建立swap的檔案系統

3.啟用交換分區檔案:

<code>swapon </code><code>/root/swapfile</code>

#啟用swap檔案

4.使系統開機時自啟用,在檔案/etc/fstab中添加一行:(将以前的注釋掉)

/root/swapfile swap swap defaults 0 0

第五:還原使用cache的模式

<code>echo</code> <code>"0"</code> <code>&gt;  </code><code>/proc/sys/vm/drop_caches</code>

真實環境中,發現mysql自動重新開機了,3306有down了一會,且程序有重新啟動過,然後是自動的,懷疑是swap被全部dump到記憶體中,而記憶體不足導緻! 或者mysql沒使用到swap會down,因為mysql配置原因吧,我也沒有深入研究它!

閱讀:

To free pagecache:

echo 1 &gt; /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 &gt; /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 &gt; /proc/sys/vm/drop_caches

本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1773203如需轉載請自行聯系原作者

cuizhiliang

繼續閱讀