Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       swapon, swapoff - ファイル/デバイスへのスワップを開始/停止する

書式

       #include <unistd.h>
       #include <sys/swap.h>

       int swapon(const char *path, int swapflags);
       int swapoff(const char *path);

説明

       swapon()     は    path   で指定されたファイルやブロックデバイスにスワップ領域を設定する。
       swapoff()  は path で指定されたファイルやブロックデバイスへのスワップを停止する。

       swapon() の swapflags 引数に SWAP_FLAG_PREFER フラグが指定された場合、  新しいスワップ領域
       はデフォルトよりも高い優先度を持つ。 優先度は以下のように変換されて swapflags に指定する。

            (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

       SWAP_FLAG_DISCARD フラグが swapon() の swapflags 引数に指定された場合、 スワップデバイスが
       破棄 (discard) 操作や trim 操作をサポートしている場合には、 解放されたスワップページは再利
       用される前に破棄される  (これにより、SSD (Solid State Device) によっては性能が向上すること
       があるが、 たいていは性能の向上はない)。 「注意」も参照のこと。

       これらの関数は特権プロセス (CAP_SYS_ADMIN ケーパビリティ (capability) を持つプロセス) のみ
       が使用できる。

   優先度
       それぞれのスワップ領域は高 (high) と低 (low) のどちらかの優先度を持つ。 デフォルトの優先度
       は低である。 低い優先度の領域において、新しい領域は古い領域よりさらに低い 優先度を持つ。

       swapflags が設定されたものは全て高い優先度となり、デフォルトよりも高い優先度を持つ。  使用
       者はそれらに負でない値が指定できる。 大きな数字は高い優先度を意味する。

       高い優先度の領域から順にスワップページとして使用される。  より低い優先度の領域を使用する前
       により高い優先度の 領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、 使える中で一番高
       い優先度であれば、それらのページは間で ラウンドロビン方式で配分される。

       Linux  1.3.6  において、カーネルは通常はこれらの規則に従っている。  しかし例外も存在してい
       る。

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

       EBUSY  (swapon()  において) 指定された path が既にスワップ領域として使用されている。

       EINVAL ファイル path は存在するが、通常のファイルもブロックデバイスも参照していない。

       EINVAL (swapon())    指定されたパスが有効なスワップの署名    (signature)    を含んでいない
              か、tmpfs(5) のようなインメモリーファイルシステム上にある。

       EINVAL (Linux 3.4 以降)
              (swapon()) swapflags に無効なフラグ値が指定された。

       EINVAL (swapoff()) path が現在スワップ領域ではない。

       ENFILE オープンされたファイルの総数がシステム全体の上限に達していた。

       ENOENT ファイル path が存在しない。

       ENOMEM スワップを開始するのに十分なメモリーがシステムにない。

       EPERM  使用者が  CAP_SYS_ADMIN  ケーパビリティを持っていない。  もしくは、最大数のスワップ
              ファイルがすでに使用されている (下記の「注意」の節を参照)。

準拠

       これらの関数は Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。  二番目
       の swapflags 引数は Linux 1.3.2 から導入された。

注意

       パーティションやパスは mkswap(8)  によって準備されていなければならない。

       使用できるスワップファイルの数には上限があり、その上限は カーネル定数 MAX_SWAPFILES で定義
       される。 MAX_SWAPFILES の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では  32
       である。  カーネル 2.6.18 以降では、カーネルが CONFIG_MIGRATION オプションを有効にして作成
       された場合、 この上限が 2 少ない値 (つまり 30)  となる  (このカーネルでは、  mbind(2)   と
       migrate_pages(2) のページマイグレーション機能用にスワップテーブルのエントリーが 二つ予約さ
       れる)。 カーネル 2.6.32 以降では、カーネルが CONFIG_MEMORY_FAILURE  オプションを有効にして
       作成された場合、 この上限がさらに 1 少ない値となる。

       スワップページの破棄は、カーネル     2.6.29     で導入され、その後カーネル    2.6.36    で
       SWAP_FLAG_DISCARD フラグが指定された場合にだけ実行されるようになったが、  今でも、このフラ
       グビットが指定されていない場合であっても、 swapon が呼び出された際にスワップ領域全体の破棄
       が行われる。

関連項目

       mkswap(8), swapoff(8), swapon(8)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。