很多人對Linux的swap交換分區不了解,不知道什麼是swap交換分區,下面小編將針對什麼是swap分區及swap分區的設置給大家做個簡單的介紹,想要設置swap分區的朋友不妨來了解下。
一、什麼是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
屏幕會列出當前所有的分區設備號、大小、文件格式等參數;
下面進行刪除分區的操作:
屏幕提示:
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則主要是用來設置可以使用扇區的數量。所以這個文件所占用的空間就是以上連個參數的乘積。這裡需要注意的是,如果要增加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
上面就是Linux設置swap交換分區的方法介紹了,本文對查看swap分區的命令及swap分區的重新劃分也做了一定的講解,即便你的系統沒有swap分區也能通過文件來替代。