2005/03/18(金)swap領域の確保しなおし

2005/03/18 5:00 PC(Linux)
障害対応なので純粋なログ形式で。

spamassassinを使っていると凄まじく重くなっていた問題。原因は物理メモリを使い切ったことなのだが、にしてもこんなに重くなるのは挙動不審だと思ったら、どうやらスワップが設定されていないらしい。

スワップ領域の確認
# free
             total       used       free     shared    buffers     cached
Mem:        124552     110944      13608          0       3608      20852
-/+ buffers/cache:      86484      38068
Swap:            0          0          0
おいおいおいおい!
swapを0にしたことはないぞ。

別の方法で確認。
# cat /proc/meminfo
MemTotal:       124552 kB
MemFree:         13584 kB
Buffers:          3636 kB
Cached:          20856 kB
SwapCached:          0 kB
Active:          45332 kB
Inactive:         4764 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       124552 kB
LowFree:         13584 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               4 kB
Writeback:           0 kB
Mapped:          31944 kB
Slab:            50476 kB
Committed_AS:   115528 kB
PageTables:       1096 kB
VmallocTotal:   909276 kB
VmallocUsed:       724 kB
VmallocChunk:   908552 kB
# cat /proc/swaps
#
やっぱり動いていない。

起動設定を確認。
# cat /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/hda1       /               ext2    errors=remount-ro       0       1
/dev/hda2       none            swap    sw                      0       0
proc            /proc           proc    defaults                0       0
/dev/fd0        /floppy         auto    user,noauto             0       0
/dev/cdrom      /cdrom          iso9660 ro,user,noauto          0       0
おかしいな。やはり起動設定(fstab)には書かれているし、インストール後にswapの確認をした記憶がある。HDDを入れ替えたときになんかやっちゃったか。
# fdisk /dev/hda

コマンド (m でヘルプ): p

ディスク /dev/hda: ヘッド 16, セクタ 63, シリンダ 77520
ユニット = シリンダ数 of 1008 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hda1   *         1     73504  37045858+  83  Linux
領域 1 はシリンダ境界で終わっていません:
     物理=(1023, 254, 63) (1023, 15, 63) であるべきです
/dev/hda2         73504     75592   1052257+  83  Linux
領域 2 はシリンダ境界で終わっていません:
     物理=(1023, 254, 63) (1023, 15, 63) であるべきです
/dev/hda3         75592     77520    971932+  82  Linux スワップ
領域 3 はシリンダ境界で終わっていません:
     物理=(1023, 254, 63) (1023, 15, 63) であるべきです
ビンゴ。パーティションがおかしいっつね。うちは色々な理由(ウソ)があってswap以外パーティション切らないでやっているが、hda2は切った記憶がない。サイズも中途半端だし、こいつはなんだろう。

マウント確認。どうでもいいけど、mountって打つとPC-8001を思い出す。
# mount
/dev/hda1 on / type ext2 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
sysfs on /sys type sysfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
マウントされてない。

確認のためにマウントして覗いてみる。
# mkdir /mnt/hda2
# mount -r -t ext2 /dev/hda2 /mnt/hda2
# ls -alF /mnt/hda2/
合計 56
drwxr-xr-x    3 root     root         4096  4月 19  2003 ./
drwxr-xr-x    3 root     root         4096  3月 17 20:45 ../
drwxr-xr-x    2 root     root        49152  4月 19  2003 lost+found/

debian:/mnt/hda2/lost+found# ls -alF
合計 52
drwxr-xr-x    2 root     root        49152  4月 19  2003 ./
drwxr-xr-x    3 root     root         4096  4月 19  2003 ../
使われていないよう。hda2パーティション消そう。Linux上でhda3->hda2への差し替え方法が無いか調べてみたけど、なんか怖いことが書いてある情報しか出てこなかったのと今回は時間がないのでPartitionExpertで強引に切り直す。fdiskもようわからんし。

hda2消去、hda1をhda1+hda2まで拡張する。で処理時間3分強。swapがデバイスID:hda3のままなのでいったん消去して確保し直す。PartitionExpertはlinuxのデバイスIDが確認できるところがすばらしいが、変更できるとなおいいのにな。

再起動
# free
             total       used       free     shared    buffers     cached
Mem:        124552     115604       8948          0       2668      40500
-/+ buffers/cache:      72436      52116
Swap:       971924          0     971924
いよし。

[参考サイト]
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html
http://www.glasscom.com/tone/linux/SysManage/Disk.htm
http://www.a-yu.com/opt/fdisk.html
http://x68000.q-e-d.net/~68user/unix/pickup?mount
OK キャンセル 確認 その他