Use EBS as Swap at EC2
在使用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
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
- TBD