# CHAPTER 13: インメモリ・データベース・システムのセットアップ

ramdiskはディスク上のファイルシステムのように見えますが、 コンピュータシステムのメモリの一部です。 このファイルシステム上のデータは、物理的なディスクがもたらすアクセスの ペナルティを持っていません。ペナルティとは潜在的にあるディスクの回転や ディスクヘッドによるシークです。 この機能をサポートするシステム上において、 インメモリ・データベース・システムとして Empressを使うことができ、 データベースを作成し、コンフィグレーションなしに データベースを操作することができます。

インメモリ・ファイルシステムを作成するためにルート権限が必要です。 "ramdisk"のコンフィグレーションはシステムにより異なります。 本章では、Linux、Solaris オペレーティングシステムの上の"ramdisk"のコンフィグレーションの例を提供します。 オペレーティング・システムのバージョンにより、異なることがあるかもしれませんので 注意してください。

- Linux

  ※　以下の例は古いカーネルでの設定例ですので参考程度に参照してください。
  現在(2003/07) のLinux カーネル 2.4 では tmpfs をサポートしています。

  Linux はカーネルをコンパイルするか、あるいはローディング可能なモジュールとして "ramdisk"をサポートしています。 このドキュメントの例では現在のlinuxカーネル(この記述の時の2.0.33)を基に 記述されています。 より古いカーネル、1.3.48の以降のカーネルは、コンパイルした"ramdisk"のサポート をしています。 カーネル 1.3.48以前は "ramdisk"ドライバーは異なり、異なったセットアップをする 必要があります。

  カーネル・サポート:

    "ramdisk"をサポートするカーネルのコンパイルのために カーネルコンフィグレーションの質問に`y`と答えます。

           RAM disk support (CONFIG_BLK_DEV_RAM) [M/n/y/?]

  モジュール・サポート:

    "ramdisk"モジュールを作成するために カーネルコンフィグレーションの質問に`M`と答えます。

           RAM disk support (CONFIG_BLK_DEV_RAM) [M/n/y/?]

    そのモジュールは以下のコマンドでローディングすることができます。

           insmod rd.o

  /dev エントリ:

    システムが"ramdisk"のためのデバイスファイル`/dev/ram`を持っていない場合、 このデバイスはメジャー番号を`0`で、デバイス番号と一致するマイナー番号を 持ちます。

    たとえば、`/dev/ram1`を作成するためにはこのコマンドを使います。

           mknod /dev/ram1 b 0 1

    16までの異なる"ramdisk" をこのように作成することが可能です。 (`/dev/ram0` から `/dev/ram15`). これ以上必要な場合、 "ramdisk"ドライバのソースコードは 255の"ramdisk"まで許可するために変更することができます。 この編集するためのファイルはLinux ソースツリーの `drivers/block/rd.c` です。

  スペースのアロケート:

    Linuxの"ramdisk"ドライバはより多く必要なスペースを取得するたびに動的に成長します。 したがって、必要なものすべてをスペースに割り付けることは デバイスに必要なスペースの量を書き込むことです。 `dd`コマンドを利用することがこれを行う簡単な方法です。 例:

           dd if=/dev/zero of=/dev/ram0 bs=1k count=4k

    このコマンドにより、 /dev/ram0 に4MBのスペースを確保します。

  ファイルシステムの作成:

    アロケートされた "ramdisk"上に 以下のコマンドにより、Linux ファイルシステムを作成します。

           mke2fs -vm0 /dev/ram0

    これにより新しいファイルシステムは、マウントが可能になり、 使用する準備ができたことになります。

  ファイルシステムのセーブ:

    システムのシャットダウンの前にセーブするため、または 複製を作成するために ファイルシステムのコピーをするには、 単にアンマウントされたシステムに `dd`コマンドを使いファイルシステムのイメージを 作成します。 コマンドは以下になります。

          dd if=/dev/ram0 of=ram0.image bs=1k count=4k

    これは`/dev/ram0`ファイルシステムを`ram0.image`へのダンプします。 ファイルシステムへリストアするためには、単に"ramdisk"へ`dd`コマンドで戻し、 マウントするだけです。

           dd if=ram0.image of=/dev/ram0 bs=1k count=4k

  Linux は RedHatや Debian, Slackware やその他多くのディストリビューションがあります。 それぞれカーネルおよびモジュールのセットアップは異なり、 "ramdisk"は利用できるできないは、これを決定するべきシステム管理者の責任になります。

  カーネルに"ramdisk"をコンパイルしたシステムにおいて、 以下が行う必要のあることになります。

         dd if=/dev/zero of=/dev/ram0 bs=1k count=4k
         mke2fs -vm0 /dev/ram0
         mount /dev/ram0 /mnt/ramdisk

  これらのステップのすべてルート権限を要求します。 したがって、システム管理者はこれらに関係しなければならないでしょう。

  ※参考: Linux 2.4 tmpfs

      従来のramdiskはブロック・デバイスで、実際に使用する前に何らかのmkfsコマンドが必要ですが、
      tmpfsはブロック・デバイスではなくファイルシステムであるため、
      マウントするだけで使用できます。
      以下のコマンドで "ramdisk"をマウントできます。

      # mount tmpfs /dev/shm -t tmpfs -o size=32m

- Solaris:

  Solaris の "ramdisk"は、特別な `tmpfs`ファイルシステムをマウントすることで作成します。 コマンドは:

         mount -F tmpfs -o size=32M swap /mnt/ramdisk/

  マウントポイントが`/mnt/ramdisk`で 32 Mbの "ramdisk"をマウントします。