CentOS6でRAMディスクを作成してSQLiteDBファイルを配置する

sqlite.dbファイルとか置こうと思い、RAMディスクを作成。

説明しよう。RAMディスクとはメモリ上に作成した保存領域である。HDDと同じようにデータの保存が可能だが、メモリは揮発性なので、当然メモリ 上に作った保存領域も揮発性となり、マシンを落とすと保存領域に入れておいたデータは消えてしまう。RAMディスクのデータは儚い。だけどアクセス速度は HDDとは比べ物にならないくらいクソ速いので、一般的にはテンポラリデータの置き場所とかに使われたりする。テンポラリデータはいきなり消えたとして もそんなに問題ないし。

上記コマンドだけで一応RAMディスク作成終了だが、これだと再起動でマウントも解除されてしまうので、/etc/fstabに記述する事で、起動時に再マウントされる。

あとは /mnt/ram/ 以下にsqlite.dbを置けば、アクセス速度が半端ないDBの完成だが、これだと再起動するとsqlite.dbファイルは儚く消えてしまう。そこで、マスターDBファイルはHDD内に置いておき、INSERT, UPDATE文はマスターに、SELECT文の実行はRAMディスク内のDBファイルにして、定期的にHDD内のDBファイルをRAMディスク内に複製する。起動時には /mnt/ram/ 内にコピーして配置するようにスクリプトでも書いておけばいい。という事で書いたスクリプトはこちら。

/etc/fstab より先に /etc/rc.d/rc.local が実行される仕様であればこの方法はとてもマズかったのだが、どうやらCentOS6では /etc/fstab の方が優先して実行されるらしい。

再起動してみたが、特に問題なくDBファイルがRAMディスク上に複製されていた。あとはバックアップをどうするかが問題だな~。

追記

CentOS7でやってみたら、起動時にコマンドが全然実行されない。何故なんだと何回もテストしているうちに、/etc/rc.d/rc.local に実行権限が付与されていない事に気付く。何故CentOS7はデフォルトで権限付与してないのだろう??

追記2

rc.localに記述したコマンドは、当然rootユーザーで実行されるので、そのコマンドで作成・コピーされたファイルは当然root所有者になってしまうという。突然読み込み専用になっていたので焦ってしまった。再度修正。

これで、指定ユーザーが所有者となってコピー出来る。やったね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする