[Linux] RAMディスクを使ってファイルアクセスを高速化

Linux
この記事は約3分で読めます。

※当サイトはアフィリエイトからの広告収入で運営されており、広告が表示される場合があります。

前書き

補助記憶装置(ストレージ)は SSD が普及したことによりストレージの読み書き速度は劇的に改善されましたが、まだまだメインメモリ(DRAM)に比べて遅く、多くのシステムでボトルネックとなっています。

そこで DRAM上に RAMディスク を作り、その中で作業すると非常に快適になります。たとえばウェブブラウザが普段ストレージ上に保存しているキャッシュファイルを RAMディスク 内に移動することでウェブブラウジングの高速化を期待できます。動画や画像ファイルを RAMディスク上で編集することでシームレスに作業することもできます。

さらに PCの電源か切れるとキャッシュファイルは消滅するので、保存しておく必要のない一時データを扱う上でもプライバシー上好ましいと思われます。

今回は tmpfs を用いて RAM ディスクを作成します。tmpfs は一時的にファイルを保存しておくスペースを作成できるファイルシステムで主に物理メモリ上に領域が確保する目的で使われています。

tmpfs を利用するには systemdfstab にマウントポイントを記述する2つの方法があります。

各マウントポイントのファイルシステムを確認する

df コマンドで tmpfs ファイルシステムを利用しているマウントポイントの確認を行います。

# df -h | grep tmpfs
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         4.0M     0  4.0M    0% /dev
tmpfs             16G  424M   16G    3% /dev/shm
tmpfs            6.3G  9.6M  6.3G    1% /run
tmpfs             16G  109M   16G    1% /tmp
tmpfs            3.2G  148K  3.2G    1% /run/user/1000

/dev/shm/tmp が大量の容量を予約確保していることがわかります。

昨今はこれらのマウントポイントは systemd で管理されているので /etc/fstab に記述されていません。

systemd

systemd を採用しているディストリビューションは最初から /tmp 、いわゆる一時期ファイルを保管するディレクトリが tmpfs としてマウントされていることがおおいです。これをそのまま活用するのが一番楽です。

また、systemd によるマウントを解除するには以下のコマンドを使います。

# systemctl mask tmp.mount

fstab

fstab にマウントポイントを新たに登録し、それをRAMディスクとして活用します。

$ sudo nano /etc/fstab

ユーザのキャッシュディレクトリ(.cache)を直接マウントしてしまいます。

tmpfs  /home/ユーザ/.cache  tmpfs
noatime,nodev,nosuid,size=2G  0  0

[マウントポイント] [ディレクトリ] [タイプ] [オプション] [Dump ユーティリティの有無] [fsckファイルシステムチェックの優先順位] の順で記述します。

size= の後に割り当てる容量を記述します。 メガバイトには M、ギガバイトには G を後述します。上記の場合、メモリ容量のうち2GBを RAM ディスクに割り当てています。割当容量が少ないと、ブラウザがクラッシュしたり、極端に動画が重くなるので注意しましよう。

ブラウザのキャッシュをRAMディスクに

Linux では Firefox など例外はあるものの、ほとんどのブラウザのキャッシュファイルは /home/ユーザ名/.cache 内に格納されます。

おわり

コメント