Mem:?????????? 488M???????? 36M??????? 104M??????? 652K??????? 348M??????? 426M
Swap:??????????? 0B????????? 0B????????? 0B

可以看到這里的”swap”行均為0,也就是說系統(tǒng)上沒有交換處于活動(dòng)狀態(tài)。

3.檢查硬盤驅(qū)動(dòng)器分區(qū)上的可用空間

為swap分配空間的最常見方式是使用專門用于具體某個(gè)任務(wù)的單獨(dú)分, 但是,改變分區(qū)方案并不是一定可行的,我們只是可以輕松地創(chuàng)建駐留在現(xiàn)有分區(qū)上的交換文件。

在開始之前,我們應(yīng)該通過輸入以下命令來檢查當(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ì)有所不同。

盡管對于交換空間的適當(dāng)大小有許多意見,但這取決于您的個(gè)人偏好和應(yīng)用程序要求。 一般來說,相當(dāng)于系統(tǒng)內(nèi)存量的兩倍或者兩倍是一個(gè)很好的起點(diǎn)。 另一個(gè)很好的經(jīng)驗(yàn)是,如果你只是把它用作RAM備用,那么swap分區(qū)的大小盡量不要超過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)建完成之后,我們可以通過這個(gè)命令來驗(yàn)證是否保留了正確的交換空間:

$ ls -lh /swapfile

顯示結(jié)果:

$ -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

這就說明我們的文件已經(jīng)創(chuàng)建了正確的空間大小。

5.啟用交換文件

現(xiàn)在我們有一個(gè)1 GB大小的文件,我們需要把它變成交換空間

首先,我們需要鎖定文件的權(quán)限,以便只有擁有root權(quán)限的用戶才能讀取文件內(nèi)容,這可以防止普通用戶能夠訪問該文件,以免造成重大的安全隱患。

鎖定文件的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)志。

接下來,我們可以通過以下命令將文件標(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)開始使用它:

$ sudo swapon /swapfile

可以通過以下命令驗(yàn)證交換空間是否可用:

$ sudo swapon --show

顯示結(jié)果:

NAME????? TYPE? SIZE USED PRIO
/swapfile file 1024M?? 0B?? -1

這時(shí),我們可以通過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è)置,我們可以通過將swap文件添加到/etc/fstab文件中來改變這一點(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ù)交換到磁盤,除非絕對必要。要記住一點(diǎn),與swap文件的交互是“昂貴的”,因?yàn)榕cswap交互花費(fèi)的時(shí)間比與RAM的交互更長,并且會(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

對于桌面系統(tǒng)來說,60的swappiness設(shè)置不是一個(gè)比較壞的值,但是對于服務(wù)器,您可能希望將其設(shè)置與0更接近的值。

我們可以使用sysctl命令將swappiness設(shè)置為不同的值,例如,要將swappiness設(shè)置為10:

$ sudo sysctl vm.swappiness=10

顯示結(jié)果:

vm.swappiness = 10

該設(shè)置將保持到系統(tǒng)下次重新啟動(dòng),如果想要在重啟之后也生效,我們可以通過在/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信息。基本上,這是訪問有關(guān)文件系統(tǒng)的數(shù)據(jù),通常是非常耗時(shí)的查詢和頻繁要求,所以這是一個(gè)很好的事情,讓您的系統(tǒng)緩存,您可以通過再次查詢proc文件系統(tǒng)來查看當(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類似,這只對當(dāng)前的session有效,我們可以通過將其添加到我們的配置文件來改變它,就像我們使用我們的swappiness設(shè)置一樣:

$ sudo nano /etc/sysctl.conf

在末尾添加:

vm.vfs_cache_pressure=50

完成后保存并關(guān)閉文件。

8.總結(jié)

遵循本指南的步驟將給您一些喘息的空間,否則會(huì)導(dǎo)致內(nèi)存不足的例外,swap空間對于避免這些常見問題非常有用,如果遇到OOM(內(nèi)存不足)錯(cuò)誤,或者如果發(fā)現(xiàn)系統(tǒng)無法使用所需的應(yīng)用程序,則最佳解決方案是優(yōu)化應(yīng)用程序配置或升級服務(wù)器。

翻譯自:How To Add Swap Space on Ubuntu 16.04:https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:西部數(shù)碼知識庫 » 如何在Ubuntu 16.04上增加Swap分區(qū)

登錄

找回密碼

注冊