xenial (8) mkswap.8.gz

Provided by: manpages-ja_0.5.0.0.20140515+dfsg-2_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)