設定 - Swap領域の拡張方法(SUSE)

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

ここでは、手動によるSwap領域の拡張方法について記載する。
Swap用のパーティションを準備している場合、YaSTで拡張可能である。


Swap向けパーティションの作成方法

Swap向けパーティションを作成する。
※パーティションタイプは82(Linux swap)を指定して作成する。

# X : ストレージ番号
sudo fdisk /dev/sdX


Swap用のパーティションが正常に作成できたか確認する。

sudo fdisk -l /dev/sdX
:	 	 	 	 	 
Device Boot	Start    End       Blocks     Id     System
/dev/sdx2	2048     6291455   3144704    82     Linux swap / Solaris


次に、Swap領域を設定する。

# X : ストレージ番号
# Y : パーティション番号
sudo mkswap -c /dev/sdXY


Swap領域を有効にする。

# X : ストレージ番号
# Y : パーティション番号
sudo swapon /dev/sdXY


また、Swapファイルを無効にするには、以下に示すコマンドを実行する。

# X : ストレージ番号
# Y : パーティション番号
sudo swapoff /dev/sdXY


現在、使用可能なSwap領域を確認する。

cat /proc/swaps
もしくは
sudo swapon -s


なお、使用可能なパーティションが無い場合、手動でSwapファイルを作成して、Swap領域を拡張することも可能である。

※注意
ただし、Btrfsは、Swapファイルをサポートしていないので注意すること。


Swapファイルの作成方法

Btrfs以外の場合

Swap用の空ファイルを作成する。
例えば、8[GB]のSwapファイルを/var/lib/swap/swapfileに追加するには、次のコマンドを実行する。

sudo mkdir -p /var/lib/swap
sudo dd if=/dev/zero of=/var/lib/swap/swapfile bs=1M count=8192


次に、スワップファイルを初期化する。

sudo mkswap /var/lib/swap/swapfile


Swapファイルを有効化する。

sudo swapon /var/lib/swap/swapfile


ちなみに、Swapファイルを無効にするには、次のコマンドを実行する。

sudo swapoff /var/lib/swap/swapfile


現在、使用可能なSwap領域を確認する。

cat /proc/swaps
または
sudo swapon -s


上記の設定は、一時的なSwap領域なので、再起動後は使用されなくなる。
拡張したSwap領域を永久的に有効にするには、/etc/fstabファイルを編集して、次の行を追加する。

sudo vi /etc/fstab

# /etc/fstabファイル
:
/dev/sdXY              swap   swap   defaults   0   0
/var/lib/swap/swapfile swap   swap   defaults   0   0


Btrfsの場合 (Linuxカーネル 5.0以降)

Btrfsのswapファイルは、Linuxカーネル 5.0以降からサポートされている。

Swapファイルを初期化する手順を以下に示す。

  1. まず、ファイルをホストする非圧縮、非スナップショットのサブボリュームを作成する。
  2. サイズがゼロのSwapファイルを作成して、No_COWを設定する。
  3. 属性をchattrコマンドで変更して、圧縮が無効になっていることを確認する。


truncate -s 0  <作成するSwapファイルのパス>
sudo chattr +C <作成したSwapファイルのパス>
sudo btrfs property set <作成したSwapファイルのパス> compression none 


※注意
Swapファイルをスナップショットサブボリュームに置くことはできないため、Swapファイルを配置する新しいサブボリュームを作成する必要がある。
複数のデバイスにまたがるファイルシステム上のSwapファイルはサポートされない。

Swapファイルの使用領域、あるいは、空き領域を表示する場合は、以下に示すコマンドを実行する。

sudo btrfs filesystem usage <Swapファイルのパス>
# または
btrfs filesystem df <Swapファイルのパス>


Btrfsの場合 (Linuxカーネル 4.x以前)

Btrfsでは、ループデバイスにスワップファイルをマウントして、それをスワップに割り当てることができる。

まず、任意のディレクトリにSwapファイルを作成する。

sudo dd if=/dev/zero of=<Swapファイルのパス> bs=1M count=1024


次に、ルーパバックデバイスにSwapファイルを割り当てる。

# X : ループバックデバイス番号
sudo losetup /dev/loopX <Swapファイルのパス>
sudo mkswap /dev/loopX



Swapキャッシュの削除

Swapキャッシュを削除する。

sudo swapoff -a
sudo swapon -a

# または

sudo swapoff -a && sudo swapon -a