File: mkswap.8

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (173 lines) | stat: -rw-r--r-- 8,205 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
.\" Copyright 1998 Andries E. Brouwer (aeb@cwi.nl)
.\"
.\" May be distributed under the GNU General Public License
.\" Rewritten for 2.1.117, aeb, 981010.
.\"
.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
.\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved.
.\" Translated Thu Aug 28 1997 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated & Modified Thu 7 Oct 1999 by NAKANO Takeo 
.\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo
.\" Updated & Modified Wed 14 Jun 2000 by NAKANO Takeo 
.\" Updated & Modified Wed May  5 00:29:28 JST 2004
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated & Modified Sat May  7 00:44:04 JST 2005 by Yuichi SATO
.\"
.TH MKSWAP 8 "25 March 1999" "Linux 2.2.4" "Linux Programmer's Manual"
.SH 名前
mkswap \- Linux のスワップ領域を準備する
.SH 書式
.BI "mkswap [\-c] [\-v" N "] [\-f] [\-p " PSZ "] [\-L " label "] " device  " [" size "]"
.SH 説明
.B mkswap
は Linux のスワップ領域をデバイス上またはファイル上に準備する。

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

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

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

.I PSZ
引き数は、用いるページサイズを指定する。
ほとんどの場合は指定しなくてもよい (というか指定するのは賢くない) が、
古い libc のあるバージョンはページサイズの値を間違えて返すことがあり、
.B mkswap
の動作をおかしくしてしまうことがある。これに伴う症状として、
.B swapon
が "no swap signature is found" といって失敗する。
.I 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 個であった)。
利用している領域は
.I /proc/swaps
ファイルで見ることができる (2.1.25 以降)。

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

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

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

.nf
.RS
# dd if=/dev/zero of=swapfile bs=1024 count=65536
.RE
.fi

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

.SH オプション
.TP
.B \-c
スワップ領域を作る前に、デバイスに対して不良ブロックのチェックを行う。
不良ブロックが見つかった場合は、そのカウント数を表示する。
.TP
.B \-f
強制する。馬鹿なコマンドでも実行する。
これを指定すると、ファイルまたはパーティションの実際の大きさよりも
大きなスワップファイルを作る動作ができてしまう。
SPARC ではスワップ領域を強制的に作成する。
このオプションを付けないと、
.B mkswap
は正しい SPARC のスーパーブロックを持ったデバイスには
v0 のスワップを作成しない。パーティションテーブルを
消してしまう可能性があるからである。
.TP
.BI "\-p " PSZ
用いるページサイズを指定する。
.TP
.BI "\-L " label
ラベルを指定し、そのラベルで swapon できるようにする。
(新しい形式のスワップ領域のみ。)
.TP
.B \-v0
古い形式のスワップ領域を作成する。
.TP
.B \-v1
新しい形式のスワップ領域を作成する。

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

.SH 関連項目
.BR fdisk (8),
.BR swapon (8)