「RAM ディスク」の版間の差分
細 |
(相違点なし)
|
2013年4月2日 (火) 16:03時点における版
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