您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)在Ubuntu 16.04上增加Swap分區(qū)的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
前言
提高服務(wù)器響應(yīng)速度和防止應(yīng)用程序內(nèi)存不足錯(cuò)誤的最簡(jiǎn)單方法之一是添加一些交換空間。 在本指南中,我們將介紹如何將交換文件添加到Ubuntu 16.04服務(wù)器。
但是,請(qǐng)注意:
盡管swap區(qū)通常建議用于使用傳統(tǒng)旋轉(zhuǎn)硬盤驅(qū)動(dòng)器的系統(tǒng),但使用與SSD交換可能會(huì)導(dǎo)致隨著時(shí)間的推移硬件退化問(wèn)題。 由于這個(gè)考慮,我們不建議在DigitalOcean或任何其他使用SSD存儲(chǔ)的供應(yīng)商上啟用swap分區(qū)。 這樣做可能會(huì)影響到您和您的鄰居的底層硬件的可靠性。 本指南僅供可能在其他地方有使用旋轉(zhuǎn)磁盤系統(tǒng)的用戶參考。如果您需要改善DigitalOcean服務(wù)器的性能,我們建議升級(jí)您的Droplet,以致于有更好的體驗(yàn),并且會(huì)降低影響您的服務(wù)的硬件問(wèn)題的可能性。
1.首先來(lái)了解一下什么是Swap
Swap分區(qū)(也稱交換分區(qū))是硬盤上的一個(gè)區(qū)域,被指定為操作系統(tǒng)可以臨時(shí)存儲(chǔ)數(shù)據(jù)的地方,這些數(shù)據(jù)不能再保存在RAM中。 基本上,這使您能夠增加服務(wù)器在工作“內(nèi)存”中保留的信息量,但有一些注意事項(xiàng),主要是當(dāng)RAM中沒(méi)有足夠的空間容納正在使用的應(yīng)用程序數(shù)據(jù)時(shí),將使用硬盤驅(qū)動(dòng)器上的交換空間。
寫入磁盤的信息將比保存在RAM中的信息慢得多,但是操作系統(tǒng)更愿意將應(yīng)用程序數(shù)據(jù)保存在內(nèi)存中,并使用交換舊數(shù)據(jù)。 總的來(lái)說(shuō),當(dāng)系統(tǒng)的RAM耗盡時(shí),將交換空間作為回落空間可能是一個(gè)很好的安全網(wǎng),可防止非SSD存儲(chǔ)系統(tǒng)出現(xiàn)內(nèi)存不足的情況。
2.檢查系統(tǒng)的交換信息
在開(kāi)始之前,我們可以檢查系統(tǒng)是否已經(jīng)有一些可用的交換空間,可能有多個(gè)交換文件或交換分區(qū),但通常應(yīng)該是足夠的。我們可以通過(guò)如下的命令來(lái)查看系統(tǒng)是否有交換分區(qū):
$ sudo swapon --show
如果沒(méi)有任何結(jié)果或者沒(méi)有任何顯示,說(shuō)明系統(tǒng)當(dāng)前沒(méi)有可用的交換空間。也可以使用free工具來(lái)驗(yàn)證當(dāng)前確實(shí)沒(méi)有可用的交換分區(qū)。
$ free -h
輸出結(jié)果:
total used free shared buff/cache available
Mem: 488M 36M 104M 652K 348M 426M
Swap: 0B 0B 0B
可以看到這里的”swap”行均為0,也就是說(shuō)系統(tǒng)上沒(méi)有交換處于活動(dòng)狀態(tài)。
3.檢查硬盤驅(qū)動(dòng)器分區(qū)上的可用空間
為swap分配空間的最常見(jiàn)方式是使用專門用于具體某個(gè)任務(wù)的單獨(dú)分, 但是,改變分區(qū)方案并不是一定可行的,我們只是可以輕松地創(chuàng)建駐留在現(xiàn)有分區(qū)上的交換文件。
在開(kāi)始之前,我們應(yīng)該通過(guò)輸入以下命令來(lái)檢查當(dāng)前磁盤的使用情況:
$ df -h
輸出結(jié)果:
Filesystem Size Used Avail Use% Mounted on
udev 238M 0 238M 0% /dev
tmpfs 49M 624K 49M 2% /run
/dev/vda1 20G 1.1G 18G 6% /
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1001
在這種情況下,/dev下的設(shè)備是我們的磁盤。在這個(gè)例子中我們有足夠的空間(只使用了1.1G),當(dāng)然,您的使用情況可能會(huì)有所不同。
盡管對(duì)于交換空間的適當(dāng)大小有許多意見(jiàn),但這取決于您的個(gè)人偏好和應(yīng)用程序要求。 一般來(lái)說(shuō),相當(dāng)于系統(tǒng)內(nèi)存量的兩倍或者兩倍是一個(gè)很好的起點(diǎn)。 另一個(gè)很好的經(jīng)驗(yàn)是,如果你只是把它用作RAM備用,那么swap分區(qū)的大小盡量不要超過(guò)4 GB。
4.創(chuàng)建swap文件
現(xiàn)在我們知道了可用的硬盤空間,那我們就可以在文件系統(tǒng)中創(chuàng)建一個(gè)交換文件,我們將在我們的根(/)目錄下創(chuàng)建一個(gè)名為swapfile的文件。創(chuàng)建交換文件最好的方法是使用fallocate命令,這個(gè)命令能立即創(chuàng)建一個(gè)預(yù)分配大小的文件。由于本示例中的服務(wù)器RAM的大小為512MB,因此我們將在本教程中創(chuàng)建一個(gè)1 GB大小的文件,并適當(dāng)加以調(diào)整,以滿足您自己的服務(wù)器的需求:
$ sudo fallocate -l 1G /swapfile
創(chuàng)建完成之后,我們可以通過(guò)這個(gè)命令來(lái)驗(yàn)證是否保留了正確的交換空間:
$ ls -lh /swapfile
顯示結(jié)果:
$ -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
這就說(shuō)明我們的文件已經(jīng)創(chuàng)建了正確的空間大小。
5.啟用交換文件
現(xiàn)在我們有一個(gè)1 GB大小的文件,我們需要把它變成交換空間
首先,我們需要鎖定文件的權(quán)限,以便只有擁有root權(quán)限的用戶才能讀取文件內(nèi)容,這可以防止普通用戶能夠訪問(wèn)該文件,以免造成重大的安全隱患。
鎖定文件的root權(quán)限:
$ sudo chmod 600 /swapfile
驗(yàn)證權(quán)限:
$ ls -lh /swapfile
顯示結(jié)果:
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
可以看到,只有root用戶啟用了讀寫標(biāo)志。
接下來(lái),我們可以通過(guò)以下命令將文件標(biāo)記為交換空間
$ sudo mkswap /swapfile
顯示結(jié)果:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
標(biāo)記文件之后,我們可以啟用該交換文件,讓我們的系統(tǒng)開(kāi)始使用它:
$ sudo swapon /swapfile
可以通過(guò)以下命令驗(yàn)證交換空間是否可用:
$ sudo swapon --show
顯示結(jié)果:
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1
這時(shí),我們可以通過(guò)free再次查看我們的設(shè)置:
$ free -h
顯示結(jié)果:
total used free shared buff/cache available
Mem: 488M 37M 96M 652K 354M 425M
Swap: 1.0G 0B 1.0G
可以看到swap分區(qū)已成功創(chuàng)建,大小為1.0 G,操作系統(tǒng)將在必要時(shí)使用。
6.永久保留交換文件
我們最近的更改啟用了當(dāng)前會(huì)話的swap文件,但是,如果我們重新啟動(dòng),服務(wù)器不會(huì)自動(dòng)保留swap設(shè)置,我們可以通過(guò)將swap文件添加到/etc/fstab文件中來(lái)改變這一點(diǎn)。
備份/etc/fstab文件以防出錯(cuò):
$ sudo cp /etc/fstab /etc/fstab.bak
將swap文件信息添加到/etc/fstab文件的末尾:
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
這樣就保留了swap文件。
7.調(diào)整你的交換設(shè)置
在處理交換時(shí),可以配置幾個(gè)選項(xiàng),這些選項(xiàng)會(huì)影響系統(tǒng)的性能
7.1 調(diào)整swappiness屬性
swappiness參數(shù)配置您的系統(tǒng)將數(shù)據(jù)從RAM交換到交換空間的頻率, 值介于0和100之間,表示百分比。如果swappiness值接近0,內(nèi)核將不會(huì)將數(shù)據(jù)交換到磁盤,除非絕對(duì)必要。要記住一點(diǎn),與swap文件的交互是“昂貴的”,因?yàn)榕cswap交互花費(fèi)的時(shí)間比與RAM的交互更長(zhǎng),并且會(huì)導(dǎo)致性能的顯著下降。系統(tǒng)更少依賴swap分區(qū)通常會(huì)使你的系統(tǒng)更快。swappiness接近100的值將嘗試將更多的數(shù)據(jù)放入交換中,以保持更多的RAM空間。根據(jù)您的應(yīng)用程序的內(nèi)存配置文件或您使用的服務(wù)器,這可能會(huì)在某些情況下更好。
查看當(dāng)前的swappiness值:
$ cat /proc/sys/vm/swappiness
結(jié)果顯示
60
對(duì)于桌面系統(tǒng)來(lái)說(shuō),60的swappiness設(shè)置不是一個(gè)比較壞的值,但是對(duì)于服務(wù)器,您可能希望將其設(shè)置與0更接近的值。
我們可以使用sysctl命令將swappiness設(shè)置為不同的值,例如,要將swappiness設(shè)置為10:
$ sudo sysctl vm.swappiness=10
顯示結(jié)果:
vm.swappiness = 10
該設(shè)置將保持到系統(tǒng)下次重新啟動(dòng),如果想要在重啟之后也生效,我們可以通過(guò)在/etc/sysctl.conf文件中添加一行實(shí)現(xiàn):
$ sudo nano /etc/sysctl.conf
在文件的最后添加:
vm.swappiness=10
完成后保存并關(guān)閉文件。
7.2 調(diào)整緩存壓力設(shè)置
您可能想要修改的另一個(gè)相關(guān)值是vfs_cache_pressure,這個(gè)設(shè)置配置系統(tǒng)將選擇多少數(shù)據(jù)緩存inode和dentry信息?;旧?,這是訪問(wèn)有關(guān)文件系統(tǒng)的數(shù)據(jù),通常是非常耗時(shí)的查詢和頻繁要求,所以這是一個(gè)很好的事情,讓您的系統(tǒng)緩存,您可以通過(guò)再次查詢proc文件系統(tǒng)來(lái)查看當(dāng)前值。
$ cat /proc/sys/vm/vfs_cache_pressure
輸出結(jié)果:
100
這個(gè)配置可能使我們的系統(tǒng)太快地從緩存中刪除inode信息。 我們可以設(shè)置一個(gè)更保守的值,比如50。
$ sudo sysctl vm.vfs_cache_pressure=50
顯示結(jié)果:
vm.vfs_cache_pressure = 50
和swappiness類似,這只對(duì)當(dāng)前的session有效,我們可以通過(guò)將其添加到我們的配置文件來(lái)改變它,就像我們使用我們的swappiness設(shè)置一樣:
$ sudo nano /etc/sysctl.conf
在末尾添加:
vm.vfs_cache_pressure=50
完成后保存并關(guān)閉文件。
關(guān)于“在Ubuntu 16.04上增加Swap分區(qū)的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。