Armadilloフォーラム

RAMエリアへのファイル作成について

hakaru_plus

2018年3月20日 16時51分

いつもお世話になっております。山下と申します。

複数のプロセスから、1つのファイルをアクセスすることで、プロセス間のデータ共有を実現する予定です。
ファイルの内容を保存する必要はないので、RAMエリア上にファイルを作成する予定ですが、
ファイルの作成ディレクトリを、デフォルトで存在する「/dev/shm」ディレクトリと、
RAMディスクをマウントさせた「/ramdisk」ディレクトリ(sudo mount -t tmpfs -o size=1m tmpfs /ramdisk/ を実行)の、
どちらを使用するのが一般的でしょうか?

また、Armadilloの起動時~電源OFF時まで、上記RAMエリアは存在していてほしいので、
/etc/fstab の末尾に、「tmpfs ramdisk tmpfs size=32m 0 0」を追記したのですが、
Armadilloを再起動させても、自動でRAMディスクへのマウントが出来ませんでした。
追記文が間違っているのでしょうか?

以上、アドバイス よろしくお願いします。

コメント

at_syunya.ohshio

2018年3月20日 18時59分

大塩です。

> 複数のプロセスから、1つのファイルをアクセスすることで、プロセス間のデータ共有を実現する予定です。
> ファイルの内容を保存する必要はないので、RAMエリア上にファイルを作成する予定ですが、
> ファイルの作成ディレクトリを、デフォルトで存在する「/dev/shm」ディレクトリと、
> RAMディスクをマウントさせた「/ramdisk」ディレクトリ(sudo mount -t tmpfs -o size=1m tmpfs /ramdisk/ を実行)の、
> どちらを使用するのが一般的でしょうか?

一般的にはtmpfsの「/dev/shm」を使用するかと思われます。
ramfsとtmpfsの違いについて、そのファイルが使用された場合に次のような特徴を持ちます。
・ramfs:指定サイズ分を必ず確保し、他から使用できないようにする
・tmpfs:指定サイズは確保するが、他から使用が可能
例としてOSメモリが不足した場合、書き込みを停止したくない場合はramfs、余っているメモリを他に使用させたい場合はtmpfsを使用します。
一般的には余裕をもって多めにサイズ確保し、メモリの無駄が無いtmpfsを使用します。

> また、Armadilloの起動時~電源OFF時まで、上記RAMエリアは存在していてほしいので、
> /etc/fstab の末尾に、「tmpfs ramdisk tmpfs size=32m 0 0」を追記したのですが、
> Armadilloを再起動させても、自動でRAMディスクへのマウントが出来ませんでした。
> 追記文が間違っているのでしょうか?

fstabを使用する際、第二引数には「実態の存在する絶対パス」を指定する必要があります。
今回の場合ですと、第二引数は「ramdisk」ですがこれは絶対パスではないため、「/ramdisk」とする必要があります。
また「実態」が存在していることが前提のため、「/ramdisk」は予め存在しているか確認してください。

fstabについての詳しい情報は「man fstab」で閲覧できるmanページを参考にしてください。

また、テストする際は「mount -a」等でfstabに定義した内容がマウントができるため便利です。
こちらも「man mount」で閲覧できるmanページを参考にしてください。