簡單介紹在 Linux 上建立和使用交換檔案的方法
本教程討論了 中交換檔案的概念,為什麼使用它以及它相對於傳統交換分割槽的優勢。你將學習如何建立交換檔案和調整其大小。 |
交換檔案允許 Linux 將磁碟空間模擬為記憶體。當你的系統開始耗盡記憶體時,它會使用交換空間將記憶體的一些內容交換到磁碟空間上。這樣釋放了記憶體,為更重要的程式服務。當記憶體再次空閒時,它會從磁碟交換回資料。我建議閱讀這篇文章,瞭解 Linux 上的交換空間的更多內容。
傳統上,交換空間是磁碟上的一個獨立分割槽。安裝 Linux 時,只需建立一個單獨的分割槽進行交換。但是這種趨勢在最近幾年發生了變化。
使用交換檔案,你不再需要單獨的分割槽。你會根目錄下建立一個檔案,並告訴你的系統將其用作交換空間就行了。
使用專用的交換分割槽,在許多情況下,調整交換空間的大小是一個可怕而不可能的任務。但是有了交換檔案,你可以隨意調整它們的大小。
最新版本的 Ubuntu 和其他一些 Linux 發行版已經開始 預設使用交換檔案。甚至如果你沒有建立交換分割槽,Ubuntu 也會自己建立一個 1GB 左右的交換檔案。
讓我們看看交換檔案的更多資訊。
在你開始新增交換空間之前,最好檢查一下你的系統中是否已經有了交換空間。
你可以用Linux 上的 free 檢查它。就我而言,我的戴爾 XPS有 14GB 的交換容量。
free -h total used free shared buff/cache available Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G Swap: 14G 0B 14G
free 給出了交換空間的大小,但它並沒有告訴你它是真實的交換分割槽還是交換檔案。swapon 命令在這方面會更好。
swapon --show NAME TYPE SIZE USED PRIO /dev/nvme0n1p4 partition 14.9G 0B -2
如你所見,我有 14.9GB 的交換空間,它在一個單獨的分割槽上。如果是交換檔案,型別應該是 file 而不是 partition。
swapon --show NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2
如果你的系統上沒有交換空間,它應該顯示如下內容:
free -h total used free shared buff/cache available Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G Swap: 0B 0B 0B
而 swapon 命令不會顯示任何輸出。
如果你的系統沒有交換空間,或者你認為交換空間不足,你可以在 Linux 上建立交換檔案。你也可以建立多個交換檔案。
讓我們看看如何在 Linux 上建立交換檔案。我在本教程中使用 Ubuntu 18.04,但它也應該適用於其他 Linux 發行版本。
首先,建立一個具有所需交換空間大小的檔案。假設我想給我的系統增加 1GB 的交換空間。使用fallocate 命令建立大小為 1GB 的檔案。
sudo fallocate -l 1G /swapfile
建議只允許 root 使用者讀寫該交換檔案。當你嘗試將此檔案用於交換區域時,你甚至會看到類似“不安全許可權 0644,建議 0600”的警告。
sudo chmod 600 /swapfile
請注意,交換檔案的名稱可以是任意的。如果你需要多個交換空間,你可以給它任何合適的名稱,如 swap_file_1、swap_file_2 等。它們只是一個預定義大小的檔案。
你需要告訴 Linux 系統該檔案將被用作交換空間。你可以用 mkswap 工具做到這一點。
sudo mkswap /swapfile
你應該會看到這樣的輸出:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a
現在,你的系統知道檔案 swapfile 可以用作交換空間。但是還沒有完成。你需要啟用該交換檔案,以便系統可以開始使用該檔案作為交換。
sudo swapon /swapfile
現在,如果你檢查交換空間,你應該會看到你的 Linux 系統會識別並使用它作為交換空間:
swapon --show NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2
迄今為止你所做的一切都是暫時的。重新啟動系統,所有更改都將消失。
你可以透過將新建立的交換檔案新增到 /etc/fstab 檔案來使更改持久化。
對 /etc/fstab 檔案進行任何更改之前,最好先進行備份。
sudo cp /etc/fstab /etc/fstab.back
現在將以下行新增到 /etc/fstab 檔案的末尾:
/swapfile none swap sw 0 0
你可以使用命令列文字編輯器手動操作,或者使用以下命令:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
現在一切都準備好了。即使在重新啟動你的 Linux 系統後,你的交換檔案也會被使用。
swappiness 引數決定了交換空間的使用頻率。swappiness 值的範圍從 0 到 100。較高的值意味著交換空間將被更頻繁地使用。
Ubuntu 桌面的預設的 swappiness 是 60,而伺服器的預設 swappiness 是 1。你可以使用以下命令檢查 swappiness:
cat /proc/sys/vm/swappiness
為什麼伺服器應該使用低的 swappiness 值?因為交換空間比記憶體慢,為了獲得更好的效能,應該儘可能多地使用記憶體。在伺服器上,效能因素至關重要,因此 swappiness 應該儘可能低。
你可以使用以下系統命令動態更改 swappiness:
sudo sysctl vm.swappiness=25
這種改變只是暫時的。如果要使其永久化,可以編輯 /etc/sysctl.conf 檔案,並在檔案末尾新增swappiness 值:
vm.swappiness=25
在 Linux 上有幾種方法可以調整交換空間的大小。但是在你看到這一點之前,你應該瞭解一些關於它的事情。
當你要求系統停止將交換檔案用於交換空間時,它會將所有資料(確切地說是記憶體頁)傳輸回記憶體。所以你應該有足夠的空閒記憶體,然後再停止交換。
這就是為什麼建立和啟用另一個臨時交換檔案是一個好的做法的原因。這樣,當你關閉原來的交換空間時,你的系統將使用臨時交換檔案。現在你可以調整原來的交換空間的大小。你可以手動刪除臨時交換檔案或留在那裡,下次啟動時會自動刪除(LCTT 譯註:存疑?)。
如果你有足夠的可用記憶體或者建立了臨時交換空間,那就關閉你原來的交換檔案。
sudo swapoff /swapfile
現在你可以使用 fallocate 命令來更改檔案的大小。比方說,你將其大小更改為 2GB:
sudo fallocate -l 2G /swapfile
現在再次將檔案標記為交換空間:
sudo mkswap /swapfile
並再次啟用交換檔案:
sudo swapon /swapfile
你也可以選擇同時擁有多個交換檔案。
你可能有不在 Linux 上使用交換檔案的原因。如果你想刪除它,該過程類似於你剛才看到的調整交換大小的過程。
首先,確保你有足夠的空閒記憶體。現在關閉交換檔案:
sudo swapoff /swapfile
下一步是從 /etc/fstab 檔案中刪除相應的條目。
最後,你可以刪除該檔案來釋放空間:
sudo rm /swapfile
我想你現在已經很好地理解了 Linux 中的交換檔案概念。現在,你可以根據需要輕鬆建立交換檔案或調整它們的大小。
如果你對這個話題有什麼要補充的或者有任何疑問,請在下面留下評論。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2672204/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在 Linux 上建立和使用交換檔案Linux
- 簡單介紹Shell指令碼之檔案批次建立與修改的方法指令碼
- 檔案管理簡單介紹
- 簡單介紹 Vue 3.0 專案建立Vue
- 簡單介紹Linux環境變數檔案Linux變數
- 簡單介紹一下 Linux 檔案系統?Linux
- 簡單介紹ASP.NET Core實現檔案上傳和下載ASP.NET
- 關於PHP檔案操作的簡單介紹PHP
- 在soalris 建立交換型檔案
- javascript建立物件簡單介紹JavaScript物件
- redis的簡單使用和介紹(轉載)Redis
- javascript的靜態方法和例項方法簡單介紹JavaScript
- css引入外部css檔案的方式簡單介紹CSS
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹Oracle
- 動態載入js檔案簡單介紹JS
- closest()、parents()和parent()方法的區別簡單介紹
- 三款Linux檔案傳輸工具簡單介紹-行雲管家Linux
- jQuery外掛Tmpl使用方法簡單介紹jQuery
- 在Linux系統上建立檔案的8個方法,記得收藏哦!Linux
- 簡單介紹java中的equals()方法Java
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹oracle重置序列的方法Oracle
- 簡單介紹NMS的實現方法
- jQuery動態載入js檔案簡單介紹jQueryJS
- js動態載入js檔案簡單介紹JS
- 何在Mac系統上建立大檔案?教你在Mac系統建立大檔案的方法Mac
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹(轉帖)Oracle
- javascript方法過載簡單介紹JavaScript
- js 特權方法簡單介紹JS
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- linux 檔案屬性介紹及改變方法Linux
- 如何簡單的在TF卡上做一個Linux的檔案系統Linux
- javascript建立名稱空間簡單介紹JavaScript
- 建立XMLHttpRequest物件效能優化簡單介紹XMLHTTP物件優化
- 簡單介紹Java String Methods(上)Java
- python內建函式的簡單使用和介紹Python函式
- Windows拉取linux上面檔案的簡單方法WindowsLinux
- 簡單介紹nacos單機本地配置檔案儲存位置方式