無料Wikiサービス | デモページ
Linuxなどのメモ書き

スワップファイルの作成


1. 概要

Swapは通常スワップパーティションに対して行なうことが多いが、スワップファイル(ファイルシステム上の通常のファイル)に対しても行なえる。スワップファイルを作成してそこにSwapできるように設定する方法のメモ。

2. 手順

2.1 スワップファイルの作成

まずは空のスワップファイルを作成する。以下ではswapfileという名前の64MBの空ファイル(0 fill)を作成する。(bsはブロックサイズ、countはブロック数)
# dd if=/dev/zero of=swapfile bs=1024 count=65536
読み込んだブロック数は 65536+0
書き込んだブロック数は 65536+0

つぎに、スワップファイルをSwapで使えるように初期化する。

# /sbin/mkswap swapfile
Setting up swapspace version 1, size = 67104 kB

swapfileにスワップヘッダが書き込まれているのが確認できる。(以下、青時部分がシグネチャ)

# hexdump -xc  swapfile
0000000    a784    4acd    485e    1d4c    68b5    4142    243b    2a5f
0000000 204 247 315   J   ^   H   L 035 265   h   B   A   ;   $   _   *
0000010    0000    0000    0000    0000    0000    0000    0000    0000
0000010  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000400    0001    0000    3fff    0000    0000    0000    0000    0000
0000400 001  \0  \0  \0 377   ?  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000410    0000    0000    0000    0000    0000    0000    0000    0000
0000410  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000ff0    0000    0000    0000    5753    5041    5053    4341    3245
0000ff0  \0  \0  \0  \0  \0  \0   S   W   A   P   S   P   A   C   E   2
0001000    0000    0000    0000    0000    0000    0000    0000    0000
0001000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
4000000

2.2 スワップ領域として設定

作成したスワップファイルをスワップ領域に登録する。

# /sbin/swapon swapfile

スワップ領域は以下で確認できる。

# more /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda8                               partition       1052216 0       -1
/home/tomita/swapfile                   file            65528   0       -2

3. その他

スワップファイルではファイルシステム上のファイルであるため、ディスク上で連続ブロックとなっているとは限らない。デバイス上のページ境界内でブロックが非連続になっているとそのブロックはスワップ領域には使用されない。このため、作成したスワップファイルのサイズよりスワップ領域のサイズが小さくなることがある。Linuxはスワップをページ単位で行なっており、ページアウト先の領域もページ単位で用意することで処理を簡単にするためこのようになっている。

関連マニュアル

man mkswap
man swapon


最終更新 2007/03/17 17:23:44 - kztomita
(2007/03/17 15:49:17 作成)