最近Oracle Cloud VPSのFree Tier Always Free枠で遊んでいます.
今日はなんだかとても重くなりましたRAMが1GBあるのですが,9割以上利用していました.swapは未設定.swapを設定してみました.
Oracle Cloudですが大抵の環境でも同じように出来るはずです.
アドホックなswapファイル設定
まずは急場しのぎによく使う方法でスワップファイルを作成して利用する方法.
適当な場所に空ファイルを作成します. ここでは2GB分作成しました.
$ sudo dd if=/dev/zero of=/var/tmp/swap bs=1M count=2048
swapを設定します.
$ sudo chmod 600 /var/tmp/swap (1) $ sudo mkswap /var/tmp/swap (2) $ sudo swapon /var/tmp/swap (3) $ free -h (4) total used free shared buff/cache available Mem: 966Mi 303Mi 62Mi 12Mi 600Mi 501Mi Swap: 2.0Gi 0.0Ki 2.0Gi $ sudo swapoff /var/tmp/swap (5) $ sudo rm /var/tmp/swap (6)
- rootのみ読み書きに設定
- swapファイルを初期化
- swapに割当
- swapが設定されたのを確認
- 必要なくなったらswapから取り外し
- 必要なくなったswapファイルを削除
使い続けたい場合は/etx/fstabに設定することで永続化して再起動後も利用することができます.(下のswapパーティションを作る方法のほうが少し速いはず)
$ sudo vi /etc/fstab (1) $ sudo git -C /etc diff HEAD~ /etc/fstab (2) diff --git a/fstab b/fstab index d1ac1c3..01c9c0e 100644 --- a/fstab +++ b/fstab @@ -1,5 +1,6 @@ LABEL=cloudimg-rootfs / ext4 defaults 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 +/var/tmp/swap none swap pri=-1 0 0 # CLOUD_IMG: This file was created/modified by the Cloud Image build process ###################################### $ sudo swapon -av (3) swapon: /var/tmp/swap: found signature [pagesize=4096, signature=swap] swapon: /var/tmp/swap: pagesize=4096, swapsize=2147483648, devsize=2147483648 swapon /var/tmp/swap $ free (4) total used free shared buff/cache available Mem: 989340 308556 71368 12880 609416 517280 Swap: 2097148 0 2097148
- /etc/fatab 修正
- /etc/fstab 修正内容
- swapを手動で反映(次回起動時からは自動的に反映される)
- swapが設定されたのを確認
ディスクを縮小してswapパーティションを作成
swapファイルを使う方法はお手軽ですが,レイヤーが増えるので少し遅くなるはずです.割当済のディスクを縮小してswapパーティションを作成してマウントします.
Warning
|
設定をミスするとシステムが壊れるので注意して操作してください.操作に不安がある場合は上のswapファイルを利用したほうが安全です. |
Partedで処理を行います.GUIの場合はgPartedが解りやすくて便利です.
現在の状態を確認してみます.空きディスクはほとんどありませんが,パーティション1の /dev/dsa1
を縮小してswap用に貰うことにします.
$ sudo parted /dev/sda : (parted) print free Model: ORACLE BlockVolume (scsi) Disk /dev/sda: 50.0GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 14 1049kB 5243kB 4194kB bios_grub 15 5243kB 116MB 111MB fat32 boot, esp 1 116MB 50.0GB 49.9GB ext4
パーティション1を50GBから48GBにリサイズします.
(parted) resizepart Partition number? 1 Warning: Partition /dev/sda1 is being used. Are you sure you want to continue? Yes/No? yes End? [50.0GB]? 48GB Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? yes
パーティション1が小さくなりました.
(parted) print Model: ORACLE BlockVolume (scsi) Disk /dev/sda: 50.0GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 14 1049kB 5243kB 4194kB bios_grub 15 5243kB 116MB 111MB fat32 boot, esp 1 116MB 48.0GB 47.9GB ext4
できた空き領域からswap用のパーティーションを作成します.
(parted) mkpart Partition name? []? File system type? [ext2]? linux-swap Start? 48.0GB End? 50GB (parted) print Model: ORACLE BlockVolume (scsi) Disk /dev/sda: 50.0GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 14 1049kB 5243kB 4194kB bios_grub 15 5243kB 116MB 111MB fat32 boot, esp 1 116MB 48.0GB 47.9GB ext4 2 48.0GB 50.0GB 2009MB linux-swap(v1) (parted) quit Information: You may need to update /etc/fstab.
swapパーティションを初期化します.
$ sudo mkswap /dev/sda2 Setting up swapspace version 1, size = 1.9 GiB (2009067520 bytes) no label, UUID=4e27ed83-3d75-4c3d-87ac-f16e618bba4a
アドホックに手動でswapを有効化してみます.
$ sudo swapon -v UUID=4e27ed83-3d75-4c3d-87ac-f16e618bba4a swapon: /dev/sda2: found signature [pagesize=4096, signature=swap] swapon: /dev/sda2: pagesize=4096, swapsize=2009071616, devsize=2009071616 swapon /dev/sda2 $ free total used free shared buff/cache available Mem: 989340 311428 83696 12884 594216 513164 Swap: 1961980 0 1961980
一旦swapをoffにして永続化のために/etc/fstabに登録してswaponしてみます.
$ sudo swapoff UUID=4e27ed83-3d75-4c3d-87ac-f16e618bba4a $ sudo vi /etc/fstab $ sudo git -C /etc diff /etc/fstab diff --git a/fstab b/fstab index e22bda5..72d64af 100644 --- a/fstab +++ b/fstab @@ -1,6 +1,6 @@ LABEL=cloudimg-rootfs / ext4 defaults 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 -/var/tmp/swap none swap pri=20 0 0 +UUID=4e27ed83-3d75-4c3d-87ac-f16e618bba4a none swap pri=-1 0 0 # CLOUD_IMG: This file was created/modified by the Cloud Image build process ###################################### ubuntu@instance-20220327-0134:~$ sudo swapon -a ubuntu@instance-20220327-0134:~$ free total used free shared buff/cache available Mem: 989340 312360 80884 12884 596096 512232 Swap: 1961980 0 1961980
次回起動時から自動的に有効になるはずです.
環境
- Oracle Cloud コンピュートインスタンス
- イメージ
- Canonical-Ubuntu-20.04-Minimal-2022.03.04-0
$ dpkg-query -W parted mount mount 2.34-0.1ubuntu9.3 parted 3.3-4ubuntu0.20.04.1 $ lsb_release -dr Description: Ubuntu 20.04.4 LTS Release: 20.04 $ uname -a Linux instance-20220327-0134 5.13.0-1027-oracle #32~20.04.1-Ubuntu SMP Fri Apr 15 05:59:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux