最近想在Ubuntu上邊裝一個Windows虛擬機玩玩,可是苦於提示沒有交換空間,然後怎麼辦捏,都怪我當時偷懶沒有弄交換分區(Swap分區),不過不重要,還可以再弄嘛,下邊開始創建Swap分區。
首先來了解一下什麼是Swap
Swap分區(也稱交換分區)是硬碟上的一個區域,被指定為作業系統可以臨時存儲數據的地方,這些數據不能再保存在RAM中。 基本上,這使您能夠增加伺服器在工作「內存」中保留的信息量,但有一些注意事項,主要是當RAM中沒有足夠的空間容納正在使用的應用程式數據時,將使用硬碟驅動器上的交換空間。寫入磁碟的信息將比保存在RAM中的信息慢得多,但是作業系統更願意將應用程式數據保存在內存中,並使用交換舊數據。 總的來說,當系統的RAM耗盡時,將交換空間作為回落空間可能是一個很好的安全網,可防止非SSD存儲系統出現內存不足的情況。
檢查系統的交換信息
在開始之前,我們可以檢查系統是否已經有一些可用的交換空間,可能有多個交換文件或交換分區,但通常應該是足夠的。我們可以通過如下的命令來查看系統是否有交換分區:
sudo swapon --show
然後你會發現根本沒有提示,那麼就是沒有交換空間咯,你也可以用free -h來查看一下:
free -h
然後下邊寫的0000,全是0哦,那麼就沒辦法咯,就是沒有呢。
檢查硬碟驅動器分區上的可用空間
為swap分配空間的最常見方式是使用專門用於具體某個任務的單獨分, 但是,改變分區方案並不是一定可行的,我們只是可以輕鬆地創建駐留在現有分區上的交換文件。在開始之前,我們應該通過輸入df -h來檢查當前磁碟的使用情況:
df -h
在這種情況下,/dev下的設備是我們的磁碟。在這個例子中我們有足夠的空間(只使用了1.1G),當然,您的使用情況可能會有所不同。儘管對於交換空間的適當大小有許多意見,但這取決於您的個人偏好和應用程式要求。 一般來說,相當於系統內存量的兩倍或者兩倍以上是一個很好
的起點。 另一個很好的經驗是,如果你只是把它用作RAM備用,那麼swap分區的大小儘量不要超過4 GB。
創建Swap分區
現在我們知道了可用的硬碟空間,那我們就可以在文件系統中創建一個交換文件,我們將在我們的根(/)目錄下創建一個名為swapfile的文件。創建交換文件最好的方法是使用fallocate命令,這個命令能立即創建一個預分配大小的文件。由於本示例中的伺服器RAM的大小為8G,因此我們將在本教程中創建一個10GB大小的文件,並適當加以調整,以滿足您自己的伺服器的需求。
sudo fallocate -l 10G /swapfile
創建完成之後,我們可以通過這個命令來驗證是否保留了正確的交換空間:
ls -lh /swapfile
這就說明我們的文件已經創建了正確的空間大小。
啟用交換文件
現在我們有一個10 GB大小的文件,我們需要把它變成交換空間。首先,我們需要鎖定文件的權限,以便只有擁有root權限的用戶才能讀取文件內容,這可以防止普通用戶能夠訪問該文件,以免造成重大的安全隱患。鎖定文件的root權限:
sudo chmod 600 /swapfile
查看下權限是否設置成功,一般都是沒問題的:
ls -lh /swapfile
接下來,我們可以通過以下命令將文件標記為交換空間:
sudo mkswap /swapfile
標記文件之後,我們可以啟用該交換文件,讓我們的系統開始使用它:
sudo swapon /swapfile
可以通過以下命令驗證交換空間是否可用:
sudo swapon --show
這時,我們可以通過free再次查看我們的設置:
free -h
可以看到swap分區已成功創建,大小為10.0 G,作業系統將在必要時使用。
永久保留交換文件
我們最近的更改啟用了當前會話的swap文件,但是,如果我們重新啟動,伺服器不會自動保留swap設置,我們可以通過將swap文件添加到/etc/fstab文件中來改變這一點。備份/etc/fstab文件以防出錯(提示:玩Linux因為只要權限夠什麼都能動,所以修改之前最好備份一下,以防止萬一):
sudo cp /etc/fstab /etc/fstab.bak
將swap文件信息添加到/etc/fstab文件的末尾:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
這樣就保留了swap文件。
歡迎大家關注這個百家號,作為一個技術型的百家號,請大家多多指導,另外可以去我的博客踩踩-->貓巷の博客,百度貓巷或者直接訪問lovyou.top,emmm~~~,愛你們,謝謝大家支持。