千鋒扣丁學堂Linux培訓之如何創建和使用交換文件
2019-09-17 15:00:18
4331瀏覽
今天千鋒扣丁學堂Linux培訓老師給大家分享一篇關于如何在Linux上創建和使用交換文件的詳細介紹,為什么使用它以及它相對于傳統交換分區的優勢。你將學習如何創建交換文件和調整其大小,下面我們一起來看一下吧。
什么是Linux的交換文件?
交換文件允許Linux將磁盤空間模擬為內存。當你的系統開始耗盡內存時,它會使用交換空間將內存的一些內容交換到磁盤空間上。這樣釋放了內存,為更重要的進程服務。當內存再次空閑時,它會從磁盤交換回數據。我建議閱讀這篇文章,了解Linux上的交換空間的更多內容。
傳統上,交換空間是磁盤上的一個獨立分區。安裝Linux時,只需創建一個單獨的分區進行交換。但是這種趨勢在最近幾年發生了變化。
使用交換文件,你不再需要單獨的分區。你會根目錄下創建一個文件,并告訴你的系統將其用作交換空間就行了。
使用專用的交換分區,在許多情況下,調整交換空間的大小是一個可怕而不可能的任務。但是有了交換文件,你可以隨意調整它們的大小。
最新版本的Ubuntu和其他一些Linux發行版已經開始默認使用交換文件。甚至如果你沒有創建交換分區,Ubuntu也會自己創建一個1GB左右的交換文件。
讓我們看看交換文件的更多信息。
檢查Linux的交換空間
在你開始添加交換空間之前,最好檢查一下你的系統中是否已經有了交換空間。
你可以用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上創建交換文件。你也可以創建多個交換文件。
讓我們看看如何在Linux上創建交換文件。我在本教程中使用Ubuntu18.04,但它也應該適用于其他Linux發行版本。
步驟1:創建一個新的交換文件
首先,創建一個具有所需交換空間大小的文件。假設我想給我的系統增加1GB的交換空間。使用fallocate命令創建大小為1GB的文件。
sudo fallocate -l 1G /swapfile
建議只允許root用戶讀寫該交換文件。當你嘗試將此文件用于交換區域時,你甚至會看到類似“不安全權限0644,建議0600”的警告。
sudo chmod 600 /swapfile
請注意,交換文件的名稱可以是任意的。如果你需要多個交換空間,你可以給它任何合適的名稱,如swap_file_1、swap_file_2等。它們只是一個預定義大小的文件。
步驟2:將新文件標記為交換空間
你需要告訴Linux系統該文件將被用作交換空間。你可以用mkswap工具做到這一點。
sudo mkswap /swapfile
你應該會看到這樣的輸出:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a
步驟3:啟用交換文件
現在,你的系統知道文件swapfile可以用作交換空間。但是還沒有完成。你需要啟用該交換文件,以便系統可以開始使用該文件作為交換。
sudo swapon /swapfile
現在,如果你檢查交換空間,你應該會看到你的Linux系統會識別并使用它作為交換空間:
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
步驟4:讓改變持久化
迄今為止你所做的一切都是暫時的。重新啟動系統,所有更改都將消失。
你可以通過將新創建的交換文件添加到/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參數決定了交換空間的使用頻率。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上調整交換空間的大小
在Linux上有幾種方法可以調整交換空間的大小。但是在你看到這一點之前,你應該了解一些關于它的事情。
當你要求系統停止將交換文件用于交換空間時,它會將所有數據(確切地說是內存頁)傳輸回內存。所以你應該有足夠的空閑內存,然后再停止交換。
這就是為什么創建和啟用另一個臨時交換文件是一個好的做法的原因。這樣,當你關閉原來的交換空間時,你的系統將使用臨時交換文件。現在你可以調整原來的交換空間的大小。你可以手動刪除臨時交換文件或留在那里,下次啟動時會自動刪除(LCTT譯注:存疑?)。
如果你有足夠的可用內存或者創建了臨時交換空間,那就關閉你原來的交換文件。
sudo swapoff /swapfile
現在你可以使用fallocate命令來更改文件的大小。比方說,你將其大小更改為2GB:
sudo fallocate -l 2G /swapfile
現在再次將文件標記為交換空間:
sudo mkswap /swapfile
并再次啟用交換文件:
sudo swapon /swapfile
你也可以選擇同時擁有多個交換文件。
刪除Linux中的交換文件
你可能有不在Linux上使用交換文件的原因。如果你想刪除它,該過程類似于你剛才看到的調整交換大小的過程。
首先,確保你有足夠的空閑內存。現在關閉交換文件:
sudo swapoff /swapfile
下一步是從/etc/fstab文件中刪除相應的條目。
最后,你可以刪除該文件來釋放空間:
sudo rm /swapfile
你用了交換空間了嗎?現在已經很好地理解了Linux中的交換文件概念。現在,你可以根據需要輕松創建交換文件或調整它們的大小。
以上就是關于千鋒扣丁學堂Linux培訓之如何創建和使用交換文件的全部內容,
想了解更多內容的小伙伴可以登錄扣丁學堂官網咨詢。想要學好Linux開發小編給大家推薦口碑良好的扣丁學堂,扣丁學堂有專業老師制定的Linux學習路線圖輔助學員學習,此外還有與時俱進的Linux課程體系和Linux視頻教程供大家學習,想要學好Linux開發技術的小伙伴快快行動吧。扣丁學堂Linux技術交流群:422345477。
【關注微信公眾號獲取更多學習資料】 【掃碼進入JavaEE/微服務VIP免費公開課】
查看更多關于“Linux培訓資訊”的相關文章>>
標簽:
Linux培訓
Linux視頻教程
紅帽Linux視頻
Linux學習視頻
Linux入門視頻
紅帽RHCE/RHCSA考試