作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

swapの設定をする


自宅サーバーがときどきメモリ不足になって落ちているときがあるので、何が原因かを突き止めようとしているのですが、原因がはっきりと良く分かりません。
cronの処理のどれかでメモリ不足に陥ってるような気がするのですが。

サーバーのメモリ容量は2GBありますが、swapを設定しないまま運用していたので、念のためswapを設定することにしました。
といっても、swapを作るだけのディスクパーティションの余裕がもう無いので、/tmp用に作っていたパーティションを潰して、そこにswapを作ります。
/tmp 領域はRAID1(mirror)で5GB作っていましたが、/(root)パーティション10GBの使用率が現在5%ほどで思ったより使ってなかったので、ここに/tmpも含める形にしちゃおうかと思います。

/tmp の5GB分を、例えば3GB+2GBという風に分けて、/tmp を3GB、swapを2GBという分け方にしたかったんだけど、これらのパーティション領域が1TBディスクの最後の方であり、なぜかパーティションをうまく作れなかった(というかext3でフォーマットできなかった)ので、あきらめました。
1TBというディスクサイズの制限なのか、ディスク最後の方はいろいろと制限があるのかどうか分かりませんが、ディスクの最後の方ですから、何らかのはみだし部分があったりするのかも知れません。
あまりうまく説明できませんが、同じ1TBでも、ハードディスクメーカーによって厳密に総容量は異なることがあるので、(1MB=1024KBとするか1000KBとするかなどの違いなんだと思う)、ディスクの最後の方をケチくさく利用するのはあまり得策ではないのかも知れません。
セクタとかシリンダとかを厳密に計算すれば、あと残り使えるサイズは分かるのかも知れませんが、あまり難しいことにハマりたくないのでパス。

それにしても、物理メモリ2GBでは十分じゃないんかなぁ…メモリ増やそうかなぁ…
gnomeデスクトップ環境も立ち上げてるので、物理メモリはもう少しあった方がいいのかも知れない。
来月からWebアクセスも増えそうな気がしてるし。

行った操作はだいたいこんな感じ。環境はdebian(sqeeze)。

1. /tmp(/dev/md4)を潰すので、RAID1を削除 (ディスク使用中だとdevice busyとなるので、サーバー再起動しました。)

mdadm –manage –stop /dev/md4
mdadm –manage –remove /dev/md4

2. /etc/mdadm/mdadm.conf のmd4の記述を削除(サーバー起動時にRAIDを組まないようにする)
3. /etc/fstab のmd4の記載を削除(サーバー起動時にRAIDをマウントしないようにする)
4. /tmp パーティション(/dev/sda6,/dev/sdb6)を削除(Delete)し、この部分にswap(82)を割り当てる。

cfdisk /dev/sda6
cfdisk /dev/sdb6

5. swapの作成

mkswap /dev/sda6
mkswap /dev/sdb6

6. swapをONする

swapon /dev/sda6
swapon /dev/sdb6

7. /etc/fstab にswapの設定を入れる

/dev/sda6 none swap sw 0 0
/dev/sdb6 none swap sw 0 0

メモ:
・swapパーティションはRAIDで冗長化したり、ストライピングで高速化することはあまり意味ないらしい。
複数のswap領域が存在すれば、カーネルの機能でうまく分散させて利用してくれるみたい。
・swap領域は512Mは少なくともあった方が良いみたい。物理メモリのハイバネーション用にも利用されるため。
とはいっても、必ずしも物理容量と同じサイズをswapで用意する必要はない。うまいことサイズ圧縮してくれるらしい。
・どうしてもswap用のパーティションを用意できない場合、swapファイルを用意して、それをswapとして利用する手がある。(参考)
・swapの使用状況はfreeコマンドで確認できる。

 

<参考>
玄箱のswapパーティション設定 – ksaitoの日記
    http://d.hatena.ne.jp/ksaito11/20070513
swapパーティションの作成 – MakiWiki
    http://www.makichan.jp/home/index.php?swap%A5%D1%A1%BC%A5%C6%A5%A3%A5%B7%A5%E7%A5%F3%A4%CE%BA%EE%C0%AE
Linux Hacks:Linuxのスワップ処理を最適化するためのヒント (1/4) – ITmedia エンタープライズ
    http://www.itmedia.co.jp/enterprise/articles/0712/10/news011.html
PC便利帳: Linux スワップファイルの追加
    http://tipspc.blogspot.com/2008/09/linux.html

関連記事


Linux debianでRAID(ミラーリング)構築。mdadmとpartedで
mdadmによるRAID (ミラーリング)構成手順です。ディスクが1台壊れたのでRAIDを組み直しました。環境はLinux Debian 9.11 (stretch) partedやmdadmコマンドで構築します。

Postfixメールサーバー:送信不可のユーザーを設定する
メールサーバーPostfixにて、送受信ができないユーザーを設定をする方法です。Linux、debian環境です。特定のメールアドレスを送受信不可にします。メールを許可しないLinuxユーザーを作るときに有効です。

Web開発・Web制作のツールや用語を初心者向けに大量紹介。これだけ知っておけば安心。
Webページ製作やWebのシステム開発ではいろんなツールやテクニック、用語を使いますが、全体像がなかなか掴みにくいと思ったので、初心者向けに用語をたくさんまとめました。これさえ押さえておけば業界の常識用語はだいたい網羅できると思います。

KVM仮想マシンをWebからアクセスできるKimchiをdebianにインストール
自宅サーバーにてKVMの仮想マシンを動かしていますが、外からでもリモートで操作できるようにkimchiを導入しました。 GitHub – kimchi-project/kimchi: An HTML5 man …

Linuxの権限について解説。setuidとかsetgidとかスティッキービットとか
setuidとかsetgidとかスティッキービットの解説です。Linuxのこれらの機能については考え方が難しいですが、setuidは「一般ユーザーがroot権限で動かすことができる仕組み」です。setgidはそのグループ版です。詳細なメカニズムを解説します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です