※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら
Home > 未分類 > RAMディスクとサーバフリーズ

RAMディスクとサーバフリーズ  

2008/4/11 金曜日 12:14:35

サーバがフリーズしました。ご迷惑おかけしました。姜子牙です。
カーネルパニックだとかそんなチャチな代物ではなく、コンソールに何かを入力してもなんの応答もない状態にまで陥らせた手順をここに奉納したいと思います。

何をしようとしたのかと言うとサーバにRAMディスクを作成しようとしたのです。

RAMディスクとは?という方のためにWikiへのリンクを・・・ないですね。さらっと書けば、メインメモリ上にファイルを置けるようにするという技術・手法です。

通常ファイルを出力する先はHDDなどのディスク上(正確にはファイルシステム上)になるわけですがシビアな状況だとディスクのI/O速度じゃ間に合わない速さでファイルを読み書きしたいなんて場合が起こりえます。そんなときにメインメモリ上にファイルを置ける領域(ファイルシステム)の作成を行うのです。

そんな状況あるの?と言われると私が知っているのは、マルチプロセスプログラムくらいしか知らないです。5,6個のプログラムから共通のフラグなどを変更したり参照したりするときに使ったくらいでしょうか。(ディスク上で行うと、フラグの変更参照処理でやたら詰まるようになって全体の処理が遅くなったので使った)

RAMディスクの特性上、メインメモリの一部を使用するため、そのサイズを大幅に取るとメインメモリとして使用できる領域が
減ってしまいます。アプリ開発者としては処理速度向上に一役買う技術ですが、乱用は避けた方が良いです。

詳しい手順は下記。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/274useramdisk.html

さて、本題としてサーバをフリーズさせたその手順とはサーバが持っているメインメモリを遥かに超える量のRAMディスクを取ろうとしたのです。数MBオーバーとかそんなチャチな代物ではなく、「512GB」の容量取ろうとしちゃったんですね。メインメモリとSWAP足しても容量が足りてないです。

何を間違えたのかと言うと、lilo.confやgrub.confで指定する以下の部分(@IT引用)

ramdisk_size=65536

これ実はByte単位ではなく、Block単位(よくわからない場合、1=1024Byte=1KBと考えてください)なんですね。で、何も考えず

ramdisk_size=536870912

と指定し、Rebootし、mke2fsでファイルシステム作成するとinode作成のカウンタが途中でピタリと止まり、コンソールが一切応答なしという事態に・・・。

アンチパターンにすらならないものですが、みなさんもご注意を。

[のび](*゚Д゚) < 「なんかうちで更新してるファイルが変なんだけどサーバ設定合ってます?」
[姜子牙](;’-') < 「な、なに?」

はい、行ってきます。

姜子牙 未分類

  1. No comments yet.
  1. No trackbacks yet.