如何在 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 伺服器上記憶體不足,那麼以上內容將特別有用。

更新於:2020 年 1 月 27 日

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告