我自己喜歡架設各種網路服務供自己自娛自樂,在一台AWS EC2虛擬機上上架設了 Nextcloud, WordPress, Postfix, Dovecot, MariaDB, Nginx, 等等的服務。由於我的機器只有1GB的ram, 常常會碰到記憶體不足MariaDB資料庫崩潰的情況。這時如果設定好swap交換空間,就能大大降低服務中斷的情況。雖然使用硬碟當成swap會降低快取的效能,不過因為是自用,這點效能降低換取服務不中斷,還是很划算的!
首先,你要在EC2 頁面上新增個磁盤空間,大小就設定為記憶體的兩倍就好。像我就是設成2GB。 接下來請把這個新建好的空間掛載(attach)到你的伺服器上。這些設定都在EC2 的界面上就能操作完成,我就不多展示了。
這時用SSH連線進入你的純文字後台,輸入
lsblk
你就會看見你新增的磁區
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 2G 0 disk
nvme1n1 259:1 0 15G 0 disk
└─nvme1n1p1 259:2 0 15G 0 part /
這是我的例子,其中nvme0n1就是我新增要用作SWAP的磁區。這時請輸入
sudo mkswap /dev/nvme0n1
其中nvme0n1請代換成你新增磁區的代號
然後再輸入
sudo swapon /dev/nvme0n1
如果這時你用 lsblk 看到
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 2G 0 disk [SWAP]
在MOUNTPOINTS 有看到[SWAP] 就表示你已經將新增的磁區掛載上了。
此時你可以用 top 指令來看看是否swap有在運作
top
如果你看到下面這一行就代表成功了
MiB Swap: 2048.0 total, 2030.5 free, 17.5 used. 235.1 avail Mem
其中total 前面要顯示你新掛載磁區的大小才是正確的,掛載失敗total會顯示0
最後你要將開機就掛載設定好。
這時最好使用UUID 來掛載磁區,請用以下指令來查你剛掛上的磁區的UUID
sudo blkid
找到你剛掛上的磁區的UUID
接著請輸入
sudo nano /etc/fstab
並新增下面這一行
UUID=”YOURUUIDHERE” none swap sw 0 0
Ctrl + X 存檔。
這裡記得把雙引號中間的字串改成你自己的UUID,不然每次重開機都會出問題。