如何在 Linux Ubuntu 上增加交換空間?
在本文中,我們將學習如何增加交換空間,這將解決應用程式中的記憶體錯誤。這將涵蓋如何在 Ubuntu Linux 中新增交換檔案。
無論如何,建議將旋轉硬碟驅動器用於交換,因為固態硬碟隨著時間的推移可能會導致硬體退化問題。由於這個原因,不要在提供固態硬碟儲存的雲環境中啟用交換。
什麼是交換檔案?
交換空間是作業系統可以儲存臨時資料的地方,因為 RAM 無法再容納這些資料。基本上,這將增加伺服器在工作記憶體中可以容納的資料量的能力。硬碟驅動器上的交換空間主要在 RAM 中有足夠空間容納資料時使用。
寫入磁碟的資料比 RAM 慢,但作業系統會優先將正在執行的應用程式和資料儲存在記憶體中,並將舊資料儲存在交換空間中。
檢查系統以獲取交換資訊
我們首先檢查系統中已經存在的交換空間。我們可以有多個交換檔案或分割槽。
請注意,我們可以使用以下命令檢視系統中可用的交換空間:
# sudo swapon --show [sudo] password for ubuntu: NAME TYPE SIZE USED PRIO /dev/dm-1 partition 1020M 0B -1
或者我們可以使用 free **-h** 命令來顯示交換空間。
$ free -h total used free shared buffers cached Mem: 975M 254M 720M 4.8M 12M 133M -/+ buffers/cache: 109M 866M Swap: 1.0G 0B 1.0G
我們可以在機器輸出中看到交換行。在這臺機器上,我們分配了 1.0G 的交換空間。
檢查硬碟分割槽上的可用空間
在 Linux 上分配交換空間最常見的方法是使用為交換分配的單獨分割槽。我們無法更改分割槽方案(這是不可能的),但我們可以輕鬆建立駐留在現有分割槽上的交換檔案。
在執行此操作之前,我們將使用以下命令檢查當前磁碟空間。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 473M 0 473M 0% /dev tmpfs 98M 4.9M 93M 5% /run /dev/dm-0 19G 3.1G 15G 18% / tmpfs 488M 0 488M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 236M 51M 173M 23% /boot tmpfs 98M 0 98M 0% /run/user/1000
** /dev ** 下的裝置是硬碟驅動器,這裡我們有 15G 的可用空間。
通常,建議將機器上 RAM 的數量或兩倍數量作為良好的起始值。
建立交換檔案
由於我們知道可用的硬碟空間,因此我們可以透過在檔案系統中建立交換檔案來繼續。另外,請注意,我們稱為“swapfile”的交換大小的檔案位於我們的根分割槽 / 目錄中。
建立交換檔案的最佳方法是使用名為“fallocate”的程式,此命令將立即建立預分配大小的檔案。
由於我們的機器分配了 1GB 的 RAM,因此我們將建立 2GB 的檔案以滿足 Linux 的最低要求。
$ sudo fallocate -l 2G /swapfile
我們可以使用以下命令進行驗證。
$ ls -lh /swapfile -rw-r--r-- 1 root root 2.0G May 16 12:52 /swapfile
啟用交換檔案
我們已經建立了所需大小的交換檔案,但需要在此交換空間中將其開啟。在開啟交換檔案之前,我們需要將檔案的許可權鎖定為僅限 root 使用者許可權,這些使用者可以讀取檔案內容,從而防止普通使用者訪問該檔案。
我們可以使用以下命令執行此操作
$ sudo chmod 600 /swapfile
要驗證許可權,我們可以使用以下命令檢視
$ ls -lh /swapfile -rw------- 1 root root 2.0G May 16 12:52 /swapfile
我們可以使用以下命令開啟“swapfile”以用作交換空間
$ sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=049218ad-50b4-4c78-98e4-7a1ea21ca77e
我們必須驗證交換空間是否可用以及分配的空間大小。為此,我們可以使用以下命令:
$ sudo swapon --show NAME TYPE SIZE USED PRIO /dev/dm-1 partition 3068M 0B -1
或者使用以下命令:
$ free -h total used free shared buffers cached Mem: 975M 255M 720M 4.8M 12M 133M -/+ buffers/cache: 108M 867M Swap: 3.0G 0B 3.0G
使交換檔案永久化
由於我們在當前會話中更改了交換檔案,因此我們還需要重新引導伺服器,這樣才能將交換設定保留為永久設定。此外,我們可以自動將此交換檔案設定新增到“/etc/fstab”檔案中。
$ sudo vi /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/server--vg-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation UUID=40f8b7fe-3195-414a-a0e4-a4443cceb78c /boot ext2 defaults 0 2 /dev/mapper/server--vg-swap_1 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 /swapfile none swap sw 0 0
我們可以使用以上步驟使用交換檔案來增加交換空間,從而解決與記憶體異常相關的問題。如果我們在任何 Linux 伺服器上記憶體不足,那麼以上內容將特別有用。