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

名前

       mkswap - Linux のスワップ領域を準備する

書式

       mkswap [-c] [-vN] [-f] [-p PSZ] [-L label] device [size]

説明

       mkswap は Linux のスワップ領域をデバイス上またはファイル上に準備する。

       (スワップ領域を準備した後にこの領域の利用を開始するには、  swapon コマンドを用いる必要があ
       る。通常スワップ領域は /etc/fstab にリストされ、起動スクリプトに記述されている  swapon  -a
       コマンドによって、起動時から利用できるようになっている。)

       引き数  device は通常はディスクパーティション (/dev/hda4/dev/sdb7 のようなもの) である
       が、ファイルを指定することもできる。 Linux カーネルはパーティション ID を参照しないが、 イ
       ンストールスクリプトの多くでは、パーティション形式が  16 進の 82 (LINUX_SWAP) となっている
       ものをスワップパーティション とみなしている。 (警告: Solaris もこの形式を使う。 Solaris の
       パーティションを破壊しないように注意すること。)

       size  パラメータは不要であるが、過去との互換性のために残してある。 (スワップ領域にしたいサ
       イズを 1024 バイトブロック単位で指定する。  このパラメータが省略されると、  mkswap  はパー
       ティション全体を用いる。 このパラメータは指定しないほうが賢い。タイプミスをすると ディスク
       を壊してしまう。)

       PSZ 引き数は、用いるページサイズを指定する。 ほとんどの場合は指定しなくてもよい  (というか
       指定するのは賢くない)  が、 古い libc のあるバージョンはページサイズの値を間違えて返すこと
       があり、 mkswap の動作をおかしくしてしまうことがある。これに伴う症状として、 swapon が "no
       swap  signature  is found" といって失敗する。 PSZ に与える通常の値は 4096 または 8192 であ
       る。

       Linux  はスワップ領域として  2  つの形式を認識する。古い形式と新しい形式  とである。これら
       は、スワップ領域先頭ページの末尾      10      バイトに      よって区別される。古い形式では
       `SWAP_SPACE'、新しい形式では `SWAPSPACE2' がそれぞれサインとなる。

       古い形式では、先頭ページの残りの部分はビットマップであり、 1  ビットがスワップ領域で利用で
       きるそれぞれのページに対応する。  先頭のページはこのビットマップを保持するので、先頭ビット
       は 0 である。 また最後の 10 バイトはサインになっている。したがってページサイズを S  とすれ
       ば、古い形式のスワップ領域は最大で    8*(S-10)-1    ページをスワップに用いることができる。
       S=4096 (i386 の値) ならば、利用できる領域の最大値は 133890048 バイト (ほぼ 128  MiB)  であ
       り、 残りの部分は無駄となる。 alpha と sparc64 では S=8192 なので、最大値は 535560992 バイ
       ト (ほぼ 512 MiB) となる。

       古い形式では、このビットマップページの大部分を無駄にしていることになる。  なぜならマップ中
       のビット 0 は、不良ブロックかスワップ領域の境界後にある ブロックを示すためのものだからであ
       る。スワップ領域のサイズは簡単な計算  で求まる値に制限されるかわり、不良ブロックがあればリ
       ストするのが簡単に なっている。しかし不良ブロックがたくさんあるような領域をスワップに した
       い人など誰もいないだろう (筆者は 1 つの不良ブロックでさえ  許したくない)。  新しい形式のス
       ワップ領域では、これはもっとしかるべく扱われている。  利用できるスワップ領域の最大値は、現
       在ではアーキテクチャ依存である。 i386, PPC, m68k, ARM では約 2GiB、 sparc では 1GiB、 mips
       では 512MiB, alpha では 128GiB, sparc64 では 3TiB である。

       2.1.117 以前のカーネルでは、 1 ページあたり 1 バイトを割り当てていたが、 現在では 2 バイト
       を割り当てている。したがって 2 GiB の スワップ領域には  2  MiB  のカーネルメモリが必要とな
       る。

       現時点では、  Linux は 32 個のスワップ領域を持つことができる (Linux 2.4.10 より前は 8 個で
       あった)。 利用している領域は /proc/swaps ファイルで見ることができる (2.1.25 以降)。

       mkswap では 10 ページより小さい領域を作ることはできない。

       使っているマシンのページサイズがわからない場合は、"cat /proc/cpuinfo" によって調べることが
       できるかもしれない。 (できないかもしれない - このファイルの内容はアーキテクチャと カーネル
       のバージョンに依存しているので。)

       スワップファイルを作成する場合は、 mkswap による初期化を行う前に、ファイルを作成しておく必
       要がある。 この目的には、以下のようなコマンドを用いれば良い:

              # dd if=/dev/zero of=swapfile bs=1024 count=65536

       スワップファイルには "hole" (未確保の領域) が存在してはならないことに 注意せよ (したがって
       ファイルを作成する際に cp(1) を使ってはならない)。

オプション

       -c     スワップ領域を作る前に、デバイスに対して不良ブロックのチェックを行う。 不良ブロック
              が見つかった場合は、そのカウント数を表示する。

       -f     強制する。馬鹿なコマンドでも実行する。 これを指定すると、ファイルまたはパーティショ
              ンの実際の大きさよりも 大きなスワップファイルを作る動作ができてしまう。 SPARC  では
              スワップ領域を強制的に作成する。 このオプションを付けないと、 mkswap は正しい SPARC
              のスーパーブロックを持ったデバイスには  v0   のスワップを作成しない。パーティション
              テーブルを 消してしまう可能性があるからである。

       -p PSZ 用いるページサイズを指定する。

       -L label
              ラベルを指定し、そのラベルで  swapon できるようにする。 (新しい形式のスワップ領域の
              み。)

       -v0    古い形式のスワップ領域を作成する。

       -v1    新しい形式のスワップ領域を作成する。

       -v オプションを省略して mkswap を実行すると、 デフォルトでは新しい形式を作成する。しかし使
       用中のカーネルが  2.1.117  より古い場合 (あるいは PAGE_SIZE が 2048 より小さい場合) には、
       古い形式で作成する。 新しい形式のヘッダは、最初のブロックには書き込まない。 したがってブー
       トローダやディスクラベルを置く場合にはこちらが望ましい。 2.0 と 2.2 のカーネルを両方用いる
       必要がある場合は、 スワップ領域を作成する際には -v0 オプションを用いること。

関連項目

       fdisk(8), swapon(8)