Ramdisk (日本語)

From ArchWiki
Revision as of 14:59, 4 December 2012 by Kynikos.bot (Talk | contribs) (wikify some external links, use https for archlinux.org)

Jump to: navigation, search

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

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

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

RAMディスクの作り方

RAMディスクを作るために、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