はじめに
データをディスクではなくメモリ上に配置することで高速な読み込みを可能にする「RAMディスク」をRHEL環境で作成及び削除する手順を説明します。
環境情報
- Red Hat EnterPrise Linux Server 7.6
メモリ容量の事前確認
同環境では meminfoにてー全体のメモリ容量及び空きメモリ容量が確認できます。
# cat /proc/meminfo | head -n 3 MemTotal: 12304096 kB MemFree: 6937368 kB MemAvailable: 11579856 kB
MemTotal以外の部分の数値はリアルタイムで変動します。
# cat /proc/meminfo | head -n 3 MemTotal: 12304096 kB MemFree: 6937220 kB MemAvailable: 11579708 kB
同情報でメモリの空き具合を確認し、影響ない範囲で割り当てます。
RAMディスクを作成する
以下コマンドで100MBのRAMディスクが作成できます。
# mount -t tmpfs -o size=100M tmpfs /tmp/hoge
ただし、事前に同ディレクトリがない場合は以下エラーとなります。
mount: mount point /tmp/hoge does not exist
また、-t
の後に指定するのはタイプなので打ち間違えをするとエラーとなりますが
mount: unknown filesystem type 'tmpts'
後者はファイルシステム名なので任意につけることも可能です。
# mount -t tmpfs -o size=100M hoge /tmp/hoge
tmpfsというファイルシステム名で生成できれば以下のように確認できます。
# df Filesystem 1K-blocks Used Available Use% Mounted on ... tmpfs 102400 0 102400 0% /var/hoge
同情報は以下のファイルの中身を読みだしているので実体は下記のように管理されています。
# cat /etc/mtab ... tmpfs /var/hoge tmpfs rw,relatime,size=102400k 0 0
RAMディスクを削除する
fstabに記載がない場合はリブート時に自動的に削除されます。
リブート時を待たずに明示的に削除する場合は以下で削除可能です。
# umount /var/hoge
同じく/etc/mtabからは削除されています。
削除時にファイルがあってもumountで削除できますが、再度mountしてもファイルはなくなっている点はご注意ください。
また、再起動時に自動的に同ファイルシステムを作成したい場合はfstabに下記を追記します。
tmpfs /var/hoge tmpfs defaults,size=102400k 0 0
この最後の0はバックアップ対象に含めない&起動時のfsckのチェック対象から外すという意味となります。ただし中のファイル群は削除されてしまうことには変わりありません。
終わりに
RAMディスクの作成手順でした。プログラムの高速化を行う上で、同ファイルシステムを利用することで達成させる手法もあるので覚えておくと役立つと思います。