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"をマウントします。