什麼是swap分區
交換區可是看作是記憶體的一部分,只是它是從硬碟中劃分出來的,它像windows下的虛擬記憶體,它的作用是快取資料,劃分它時,大小設成你的實體記憶體的大小的兩倍。
設定swap交換分區
交換分區的大小分配推薦法則
記憶體小於4GB時,推薦不少於2GB的swap空間;
記憶體4GB~16GB,推薦不少於4GB的swap空間;
記憶體16GB~64GB,推薦不少於8GB的swap空間;
記憶體64GB~256GB,推薦不少於16GB的swap空間。
1、以root許可權登入SSH,鍵入如下命令建立512M的swap檔案(1024 * 512MB = 524288).
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
2、建立Linux分頁檔
mkswap /swapfile1
3、立即啟用 /swapfile1分頁檔
swapon /swapfile1
4、設定系統自啟用分頁檔。編輯 /etc/fstab檔案,並增加如下第二行代碼。
vi /etc/fstab
/swapfile1 swap swap defaults 0 0
5、重啟系統,使用free -m查看swap大小。
Linux中查看swap的命令
可以用“cat /proc/swaps”、“swapon -s”、“free”等命令查看Swap分區的情況。
[root@jay-linux ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2096120 840 -1
[root@jay-linux ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2096120 840 -1
[root@jay-linux ~]# free -m
total used free shared buffers cached
Mem: 7872 7280 592 0 429 5964
-/+ buffers/cache: 886 6986
Swap: 2046 0 2046
根據上面的例子,我其實該分配4GB的Swap空間,這裡示範的是2GB(可能不太符合Redhat的推薦值,因為本機使用記憶體量並不會太大,幾乎沒有使用Swap的情況)。
重新劃分Swap交換分區
先執行一下fdisk -l查看一下裝置名稱和分區狀況
1、執行swapoff swap分區的裝置名稱 關閉分頁檔。
2、看到swap的裝置名稱刪除原來的swap分區,在建立一個swap分區。可以使用fdisk做此操作
如果對/dev/sda裝置進行分區操作:
fdisk /dev/sda
工具提示:
Command (m for help):
鍵入p
螢幕會列出當前所有的分區裝置號、大小、檔案格式等參數;
下面進行刪www.111cn.net除分區的操作:
工具提示:
Command (m for help):
鍵入d
工具提示:
Partition number (1-x):
x是您現有的分區數量,有兩個分區的話x就是2;刪除分區時從最後一個分區開始,鍵入2:
工具提示:
Command (m for help):
鍵入p
列出當前分區情況,發現sda2被刪除了;
繼續鍵入d,然後是1,再鍵入p,發現sda的分區都被刪除了;
工具提示:
Command (m for help):
鍵入w
儲存當前刪除的操作,回到主介面,如果/dev/sdb上也有分區,按照上面的方法刪除。
下面進行建立分區的操作:
fdisk /dev/sda
工具提示:
Command (m for help):
鍵入p
此時硬碟上應該沒有任何分區;
鍵入n
工具提示:
First cylinder (abcd-efgh, default abcd):
abcd和efgh都是數字,表示新分區起始的柱面數,直接鍵入斷行符號即可;
工具提示:
Last cylinder or +size or +sizeM or +sizeK (abcd-ijkl, default ijkl):
abcd和 ijkl也都是數字,這裡是要求定義分區的大小,如果要建立2G的空間,鍵入+2000M,如果要將後面所有空間都分出來,直接鍵入斷行符號即可;注意分區大
小的單位M和K一定要大寫!
工具提示:
Command (m for help):
鍵入p
發現已經建立了分區sda1,大小是2G
仿照上面的方法建立更多分區,可以用p查看,最後鍵入w儲存操作。
3、這樣重建swap之後,可以使用mkswap /dev/sda[x],其中的[x]代表的是你的第幾個分區。
4、啟用交換分區 swapon /dev/sda[x]
5、 想要在系統啟動時自動啟用此分頁檔,應該在 /etc/fstab 中加入如下一行:
/dev/sda[x] swap swap defaults 0 0
添加分頁檔並啟用它後,用 cat /proc/swaps 或 free 命令查看分頁檔是否
被成功啟用。
沒有swap交換分區分區的解決辦法(用檔案替代swap分區)
檔案系統 類型 容量 已用 可用 已用% 掛載點
/dev/sdb2 ext3 7.6G 555M 6.7G 8% /
/dev/sda1 ext3 466G 453G 13G 98% /home1
/dev/sdb7 ext3 4.8G 149M 4.4G 4% /tmp
/dev/sdb6 ext3 4.8G 1.6G 3.0G 35% /var
/dev/sdb5 ext3 5.7G 140M 5.3G 3% /swap
/dev/sdb3 ext3 5.7G 2.1G 3.4G 39% /usr
/dev/sdb1 ext3 99M 18M 77M 19% /boot
/dev/sdb8 ext3 437G 175G 262G 41% /home2
tmpfs tmpfs 2.0G 2.2M 2.0G 1% /dev/shm
swap交換分區就根本用不了,由於此伺服器已經在跑業務了,不能隨便停機,更不能重裝系統。
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 3910 3886 23 0 16 1652
-/ buffers/cache: 2217 1692
Swap: 0 0 0
解決方案:
#製作一個swapfile檔案,需要root許可權
su
dd if=/dev/zero of=/swap/swapfile bs=4096 count=1310720
#說明:其中bs參數制定每次讀取及輸入多少個位元組。因為硬碟存取的最小單位為扇區,所以設定bs參數就相當於設定每個扇區的大小。我這裡設定為4096即4k。參數count則主要是用來設定可以使用扇區的數量。所以這個檔案所佔用的空間就是以上連個參數的乘積。www.111cn.net這裡需要注意的是,如果要增加swap檔案容量,一般是通過調整count參數來實現的,bs參數一般不動。看到我的/swap分區完全沒被使用,有5.3G剩餘空間,所有我建立了一個5G的swapfile檔案。
#格式化swapfile,同樣需要root許可權
mkswap /swap/swapfile
#啟用swap
swapon /swap/swapfile
#不想每次重啟後手動啟用swap就可以將掛載寫入/etc/fstab中 (因為我這個分區比較特殊,分區名稱相同,為保險起見,我沒寫入到fstab裡面)
/swap/swapfile swap swap defaults 0 0
#用free -m查看一下,swap設定已經生效了:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 3910 3885 25 0 21 1639
-/ buffers/cache: 2224 1686
Swap: 5119 0 5119
順利搞定。
當你實在不需要使用swap交換分區時 可是釋放掉swapfile
swapoff /swap/swapfile
rm -f /swap/swapfile