5. スワップ領域(4GB)作成・永続化

2025/10/26

元記事

AlmaLinux スワップ領域作成コマンド解説

VPSの契約メモリ4GBに対して、メールサーバー構築を見据えて4GBのスワップ領域を作成・永続化する手順の詳細です。

コマンド実行手順

1. スワップファイルの領域確保
sudo fallocate -l 4G /swapfile
  • fallocate: ファイルシステム上に指定サイズの領域を高速に確保するコマンド
  • -l 4G: ファイルサイズを4GB(ギガバイト)に指定
  • /swapfile: ルートディレクトリ直下に「swapfile」という名前でファイルを作成

このコマンドは、実際にゼロで埋めることなく、ファイルシステムレベルで4GBの連続した領域を即座に確保します。ddコマンドよりも高速です。

2. スワップファイルの権限設定
sudo chmod 600 /swapfile
  • chmod 600: ファイルのアクセス権限を設定
    • 6: 所有者(root)に読み取り(4) + 書き込み(2) = 6の権限
    • 0: グループメンバーには権限なし
    • 0: その他のユーザーには権限なし

セキュリティ上、スワップファイルには機密情報(メモリの内容)が含まれる可能性があるため、root以外はアクセスできないように制限します。

3. スワップ領域として初期化
sudo mkswap /swapfile
  • mkswap: ファイルやパーティションをスワップ領域として使用可能な形式にフォーマット
  • スワップヘッダー情報の書き込み
  • UUID(一意識別子)の生成

このコマンド実行後、ファイルがLinuxのスワップ形式として認識されるようになります。

4. スワップ領域の有効化
sudo swapon /swapfile
  • swapon: 指定したスワップ領域を即座に有効化
  • システムがメモリ不足時にこの領域を仮想メモリとして使用開始

この時点から、システムは物理メモリ4GB + スワップ4GB = 合計8GBのメモリ空間を利用可能になります。

5. スワップ設定の永続化(再起動後も有効にする)
grep -q "/swapfile" /etc/fstab || echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

この行は条件付きでfstabにエントリを追加する処理です:

fstabとは

コマンドの構成要素

前半部分:既存設定の確認

  • grep -q "/swapfile" /etc/fstab
    • /etc/fstab内に/swapfileという文字列が既に存在するか確認
    • -q: quiet(結果を表示しない、終了コードのみ返す)

中間部分:条件分岐

  • ||: 論理OR演算子
    • 左側のコマンド(grep)が失敗した場合(文字列が見つからない = 終了コード1)のみ右側を実行

後半部分:設定の追記

  • echo "/swapfile none swap sw 0 0"

    • fstabエントリの内容を出力
    • 各フィールドの意味:
    • /swapfile: マウント対象のファイルパス
    • none: マウントポイント(スワップなので「none」)
    • swap: ファイルシステムタイプ
    • sw: マウントオプション(スワップ用)
    • 0: dump設定(バックアップ不要)
    • 0: fsck順序(チェック不要)
  • sudo tee -a /etc/fstab
    • tee -a: 標準入力を画面表示しつつファイルに追記
    • /etc/fstab: システム起動時に自動マウントする設定ファイル

この実装の利点

  • 重複防止: 既にfstabに設定がある場合は重複追加を防ぐ
  • 安全性: 設定がない場合のみ追記する安全な実装
  • 冪等性: 何度実行しても同じ結果が得られる

メールサーバーでのスワップの重要性

メールサーバーは多くのプロセスが動作し、以下の処理でメモリを消費します:

  • スパムフィルタリング
  • ウイルススキャン
  • メールキューの処理
  • データベース操作

このスワップ領域は、一時的なメモリ使用量の増加に対する重要な保険となります。

確認コマンド

設定後の確認には以下のコマンドを使用できます:

# スワップ状態の確認
free -h

# スワップ詳細情報
swapon --show

# fstab設定の確認
cat /etc/fstab | grep swap