在使用Amazon Linux AMI中的EC2使用EBS作為Swap。
並結合Launch Template。
Opening
Amazon提供的EC2 optimize Linux預設是沒有開啟Swap的,
所以需要手動開啟。
Manual
以手動開啟為例,首先EC2要具備連入能力。
這邊不多贅述,可以自行搜尋EC2以SSH連入或是SessionManager等。
Check Swap
檢查Swap是否開啟的指令。
1 2 3
| $ swapon -s Filename Type Size Used Priority /dev/nvme1n1 partition 10485756 5120 -2
|
List block devices
列出目前所有的Disk以及Partition。
1 2 3 4 5 6
| $ lsbsk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 10G 0 disk [SWAP] nvme0n1 259:1 0 30G 0 disk ├─nvme0n1p1 259:2 0 30G 0 part / └─nvme0n1p128 259:3 0 1M 0 part
|
上圖為兩個EBS Volume分別為30G以及10G。
30G做為系統碟掛載在root,10G做為Swap磁區。
Hint: nvme1n1
構建在Nitro System上的EC2 Instance,其中EBS的Volume會以NVMe block device的方式掛載在Instance中。[1]
在EBS指定的磁區名稱會被重新mapping為 /dev/nvme[0-26]n1
以上段圖例,
我的EBS Volume其實設定為:

其中
1 2
| /dev/xvda -> nvme0n1 /dev/xvdz -> nvme1n1
|
在EC2 Instance內,你可以使用指令來檢查對應nvme裝置的mapping。
舉例查看 /dev/nvme0n1
的名稱:
1 2 3
| $ sudo /sbin/ebsnvme-id /dev/nvme0n1 Volume ID: vol-xxxxxxxx xvda
|
mkswap
以指定裝置設定Swap磁區並開啟Swap。
1 2 3 4
| $ sudo mkswap /dev/nvme1n1 mkswap: /dev/nvme1n1: warning: wiping old swap signature. Setting up swapspace version 1, size = 10 GiB (10737414144 bytes) no label, UUID=62c94db1-3dfe-420d-a693-9a14d73ffdef
|
1
| $ sudo swapon /dev/nvme1n1
|
執行後,再次檢查會得到
1 2 3
| $ swapon -s Filename Type Size Used Priority /dev/nvme1n1 partition 10485756 0 -2
|
以 top
指令可以查看使用情形:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ top top - 00:48:24 up 1 day, 16:55, 0 users, load average: 0.00, 0.07, 0.12 Tasks: 126 total, 1 running, 84 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 89.6 id, 0.0 wa, 0.0 hi, 0.0 si, 3.5 st KiB Mem : 3976984 total, 368968 free, 1579896 used, 2028120 buff/cache KiB Swap: 10485756 total, 10485756 free, 0 used. 2168728 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2924 root 20 0 1595148 47820 29364 S 0.7 1.2 21:18.03 containerd 3373 root 20 0 2054812 111076 53008 S 0.7 2.8 21:00.35 dockerd 4713 root 20 0 713120 9896 6480 S 0.7 0.2 7:02.12 containerd-shim 4193 root 20 0 712864 9096 6092 S 0.3 0.2 0:28.93 containerd-shim ...
|
fstab
寫入開機自動掛載。
1
| $ echo "/dev/nvme1n1 none swap sw 0 0" | tee -a /etc/fstab
|
With Launch Template
Reference