スワップファイルの作成
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 mkswapman swapon