RAM ディスク

提供: ArchWiki
2015年1月12日 (月) 20:45時点におけるKusakata (トーク | 投稿記録)による版 (1版 をインポートしました)
ナビゲーションに移動 検索に移動

RAM ディスクは RAM の一部を利用したディスクです。多くのディストリビューションでは /dev/ram を利用しますが、Archでは /dev/ram がないので /etc/fstab を使って RAM ディスクを作成します。RAM ディスクを使用するにあたって覚えなくてはならないことは、RAM ディスクは RAM 上にあるため揮発性であることです。RAM ディスク上のデータは PC を止めたり電源を失うと全て失われます。したがって、もしデータを保存したい時は RAM ディスクからハードディスクに保存する必要があります。

なぜ RAM ディスクを使うのか?

RAM ディスクは RAM 上にあるので、往来のファイルシステムより非常に高速です。つまり、ファイルを高速に処理したいとき、RAM ディスクを使うことはベストの選択になりえます。参考に、/tmp や Firefox プロファイル などでの利用が人気があります。

RAM ディスクの作り方

RAM ディスクをマウントされたファイルシステムとして扱うことで RAM ディスクを作ることができます。デバイスファイルに任意の名前 (ここでは "none") をつけて:

mount -t ramfs none /path/to/location

RAM ディスクを常駐させたいときは、場所を決めて /etc/fstab に次のように加えて下さい:

none     /path/to/location     ramfs  defaults   0     0

余分な RAM をあまり多く持っていない時は、'ramfs' の代わりに 'tmpfs' を使うことが推奨されています。tmpfs は RAM 容量が尽き始めた時にスワップを使いますが、ramfs は使いません。勿論、スワップを食べることは RAM のパフォーマンスの利点を失いますが、余分な RAM を多く持ってないなら意味があります。

利用サンプル

/tmp、/var/cache/pacman、/var/lib/pacman を RAM に置くために編集するファイルは /etc/fstab、/etc/rc.local、/etc/rc.local.shutdown で、シャットダウンする前にディスクに同期させます。トピックに関係のないファイルの一部はスペースを節約するために削除されました。

/etc/fstab:

none        /tmp         ramfs   defaults              0 0
none        /mnt/ramdisk ramfs   defaults              0 0

/etc/rc.local:

chmod 777 /tmp
touch /etc/ramdisk.sh

/bin/cat - >> /etc/ramdisk.sh << EOT
#!/bin/sh

cd /var/ && /bin/tar cf abs.tar abs/
cd /var/cache/ && /bin/tar cf pacman.tar pacman/
cd /var/lib/ && /bin/tar cf pacman.tar pacman/

/bin/mkdir /mnt/ramdisk/var/
/bin/mkdir /mnt/ramdisk/var/cache/
/bin/mkdir /mnt/ramdisk/var/lib/

/bin/mv /var/abs /mnt/ramdisk/var && /bin/ln -s /mnt/ramdisk/var/abs /var/abs
/bin/mv /var/cache/pacman /mnt/ramdisk/var/cache &&  /bin/ln -s /mnt/ramdisk/var/lib/pacman /var/lib/pacman
/bin/mv /var/lib/pacman /mnt/ramdisk/var/lib && /bin/ln -s /mnt/ramdisk/var/cache/pacman /var/cache/pacman

/bin/ln -s /tmp /mnt/ramdisk/tmp
/bin/chmod 777 /mnt/ramdisk/tmp
EOT

/etc/ramdisk.sh &

/etc/rc.local.shutdown:

echo "Saving contents of ramdisk to harddrive"
rm /var/abs
rm /var/cache/pacman
rm /var/lib/pacman
mv /mnt/ramdisk/var/abs /var
mv /mnt/ramdisk/var/cache/pacman /var/cache
mv /mnt/ramdisk/var/lib/pacman /var/lib

Useful links