SWAP是什么?SWAP有什么用?SWAP怎么用?

2022-10-12    分類: 網(wǎng)站建設(shè)

寫這個帖子的原因是有網(wǎng)友在廣告中國論壇問怎么樣才能刪除掉 VPS 的SWAP 分區(qū),大偉哥借機會在這里對VPS新手和站長管理員做個有關(guān)Linux SWAP 的基礎(chǔ)小科普,是給新手看的,高深的東西大偉哥是真的不會。

一、什么是 SWAP?SWAP 有什么用?

 

swap 是類 Unix 操作系統(tǒng)下虛擬內(nèi)存技術(shù)的實現(xiàn)。簡單地說,swap 文件或者 swap 分區(qū)(交換區(qū))就是把一部分硬盤空間拿出來,模擬成備用的內(nèi)存給 linux 使用。Linux 系統(tǒng)在運行中會把內(nèi)存中暫時用不到的部分數(shù)據(jù)放在 swap 分區(qū)中保存,把寶貴的內(nèi)存資源分配給其他更加需要內(nèi)存的程序使用。

SWAP是什么?SWAP有什么用?SWAP怎么用?

合理地配置和使用 swap,可以讓 Linux 在有限的硬件配置下完成更多的處理任務(wù)。另外,有了 swap 的緩沖,還可以避免 linux 系統(tǒng)做出一些過激的保護機制(OOM),在內(nèi)存不夠用的情況下殺死某些雖然占用內(nèi)存很多但卻非常重要的服務(wù)進程,比如mysql數(shù)據(jù)庫服務(wù)。作為一臺網(wǎng)站服務(wù)器,底層的數(shù)據(jù)庫進程沒有了,web server 即使還在運行,取不到數(shù)據(jù)又有什么用呢?所以有些主機商比如 Linode 會在管理面板里直接提供相應的功能,讓你很方便地創(chuàng)建 swap 分區(qū)。

然而,swap 畢竟是硬盤虛擬出來的假的內(nèi)存,比起物理內(nèi)存的讀取速度來肯定是非常渣的,同時,如果頻繁地在內(nèi)存和 swap 之間進行 IO 操作,也會帶來額外的系統(tǒng)開銷。因此過多的依賴 swap 分區(qū),可能會拖慢系統(tǒng)的性能。這也是為什么有些主機商比如阿里云不推薦你使用 swap 的原因(你可以加錢升級到更大內(nèi)存的套餐啊親)。

大偉哥個人認為,在目前云服務(wù)器內(nèi)存還不是很大的情況下,swap 還是需要使用的,至少大偉哥自己就碰到過因為數(shù)據(jù)庫進程被強行 kill 引起的網(wǎng)站崩潰問題。如果怕占用太多硬盤空間,你可以把 swap 設(shè)置小一點。另外,為了讓系統(tǒng)盡量少使用 swap 而多使用物理內(nèi)存,還可以通過調(diào)低 swappiness 參數(shù)來實現(xiàn)。

二、如何使用 SWAP?

 

使用 swap 有兩種方式,一種是創(chuàng)建 SWAP 分區(qū)即交換分區(qū),另一種是使用 swap 文件。

以前有一種說法是 swap 分區(qū)比 swap 文件在速度上要快一些,但是在 linux 內(nèi)核 2.6.x 及以后版本,這兩種方法在性能和速度上其實很接近了,特別是 swap 文件是連續(xù)存放在硬盤里的情況下。而且 swap 文件比 swap 分區(qū)更靈活,可以放在硬盤的任何目錄下,并且隨時調(diào)整大小?;谶@兩種不同方式各自的優(yōu)缺點,你可以根據(jù)實際情況選擇使用哪種方式。

1、可以使用 swap -s 命令查看 swap 設(shè)置的情況。

daweibro@aliyun:~$ swapon -s Filename               Type        Size    Used    Priority /var/swap              file        2097148    0    -1

上面是大偉哥阿里云 ECS 的情況,說明 swap 是文件的形式,大小是 2 GB 左右,文件位于/var/目錄下面。

daweibro@Workstation:~$ swapon -s Filename                Type        Size    Used    Priority /dev/dm-2               partition   3999740    0    -1

上面是大偉哥工作用電腦的情況,這里 swap 是獨立分區(qū)的形式,大小 4GB 左右。

2、使用 top 或者 free -m 命令可以查看當前內(nèi)存和 swap 具體的使用情況。這里我們以 free -m 為例:

daweibro@aliyun:~$ free -m              total       used       free     shared    buffers     cached Mem:           992        875        116         65        101        370 -/+ buffers/cache:        404        588 Swap:         2047          0       2047

以上 Mem 部分第一二行是物理內(nèi)存的使用情況 ,最后一行就是 swap 的使用情況了。完全沒用到,說明目前阿里云的 ECS 很悠閑,一點也不累。

daweibro@Workstation:~$ free -m               total        used        free      shared  buff/cache   available Mem:          19954       10761        6701         416        2492        8327 Swap:          3905           0        3905

工作用的電腦也還行,內(nèi)存占用率更低,交換分區(qū)也沒用上。

3、創(chuàng)建 swap 分區(qū)或者 swap 文件。

創(chuàng)建 swap 分區(qū)要用到分區(qū)工具比如 fdisk 或者 parted,這里大偉哥就不講了,只是提醒一下,磁盤操作需要小心謹慎,萬一丟失數(shù)據(jù)就不好了。

要創(chuàng)建 swap 文件,可以用 dd 命令,下面的例子就是在/根目錄下創(chuàng)建一個 2048 GB 大小的文件,名稱是 swapfile:

dd if=/dev/zero of=/swapfile bs=1M count=2048

給予合適的權(quán)限:

chmod 600 /swapfile

4、建立 swap 的文件系統(tǒng):

mkswap /swapfile

如果你創(chuàng)建的是 swap 分區(qū)/dev/sdb,則需要用同樣的命令對 swap 分區(qū)進行格式化:

mkswap /dev/sdb

5、建立 swap 的文件系統(tǒng):

swapon /swapfile

或者:

swapon /dev/sdb

6、編輯/etc/fstab 文件,在文件末尾根據(jù)情況加入下面這兩行中的一行,然后保存退出,再重啟系統(tǒng)運行 swapon -s 或者 top/free 命令應該就能看到新添加的 swap 交換區(qū)了。

/swapfile none swap defaults 0 0

或者:

/dev/sdb none swap defaults 0 0

7、如果你做了一個艱難的決定,要和之前的 swap 交換區(qū)說再見,只要反方向操作就可以了。首先 swapoff,然后刪除 swap 文件或分區(qū):

# swapoff -a # rm -f /swapfile

最后把之前加入/etc/fstab 文件的行刪除就好了。

三、如何使用 swappiness 參數(shù)設(shè)置用好 SWAP?

 

論壇上的朋友因為擔心 swap 的使用會拖慢系統(tǒng),所以才發(fā)貼尋求刪除 swap 交換分區(qū)的方法,其實不用過分擔心這一點,因為 linux 肯定不會那么傻,放著大量空閑的物理內(nèi)存不用而去使用慢得多的 swap。就如大偉哥前面的例子,不管是 1 GB 內(nèi)存的阿里云 ECS 服務(wù)器,還是 20 GB 內(nèi)存的工作站,在物流內(nèi)存還有富余的情況下,linux 默認是用不到 swap 分區(qū)的。如果到了大量使用 swap 分區(qū)的時候,那物理內(nèi)存肯定是不夠用了,這時候沒有 swap 分區(qū)反而性能下降會更明顯。所以沒有太大的必要去刪除 swap 分區(qū)。

何況我們還有一個很有用的參數(shù) swappiness 可以調(diào)整。swappiness=0 的時候表示大限度使用物理內(nèi)存,swappiness=100 的時候表示積極的使用 swap 分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時的搬運到 swap 空間里面。當然參數(shù)為 0 的時候并不是說要等物理內(nèi)存完全用光以后才開始用 swap 的,網(wǎng)絡(luò)上有關(guān)于這個參數(shù)的算法說明,感興趣的話可以自己去搜索,大偉哥這里知其然不知其所以然,就不在這里裝逼了。

一般 linux 默認的 swappiness 參數(shù)是 60。你可以試著調(diào)小一些,比如說設(shè)置成 10。以下是幾個有關(guān) swappiness 操作的命令說明:

1、查看你的系統(tǒng)里面的 swappiness

cat /proc/sys/vm/swappiness

2、修改 swappiness 值為 10:

$ sudo sysctl vm.swappiness=10

上面這條命令只是臨時性的修改,重啟系統(tǒng)后會恢復成默認的 60,如果需要永久性的設(shè)置,可以修改/etc/sysctl.conf 文件,在這個文檔的最后加上下面這樣一行代碼然后保存:

vm.swappiness=10

 

網(wǎng)站題目:SWAP是什么?SWAP有什么用?SWAP怎么用?
文章地址:http://www.muchs.cn/news/204819.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)頁設(shè)計公司、定制開發(fā)、網(wǎng)站排名、企業(yè)建站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司