# Ramdisk (日本語)

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

- How to mount Ramdisk
- Ramdrive setup
- Official tmpfs documentation
- Official ramfs documentation

Category:

- File systems (日本語)