さとーC++ぶろぐ

アクセスカウンタ

zoom RSS Ubuntu 8.04 USBメモリインストールでの高速化(ホームディレクトリRAMディスク化)

<<   作成日時 : 2008/10/05 17:32   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 7 / トラックバック 1 / コメント 5

私はUbuntu 8.04 を8GBのUSBメモリにインストールして使っている。最近のUSBメモリは大容量でも安い。
うーむ遅い。固まる。特に書き込みをする場合は遅くて仕方ない。さらに言うと、しょっちゅう書き込むと寿命が縮む・・・。まともに使えないのでRAMディスクを活用することに。


※ここでいう方法は、USBメモリ専用のインストール方法ではなくてUSBメモリを普通のハードディスクとしてインストールした場合です。http://sato-si.at.webry.info/200810/article_2.html
 この設定をしてやるとFireFox等一部のソフトは ハードディスクで使うより速くなります。。。
 つまり,この手順は,ハードディスクで普通に使っている場合でも高速化の効果があります。

https://wiki.ubuntulinux.jp/UbuntuTips/UsbInstall/InstallUbuntuOnUsbMemory
で紹介があるUSBメモリへの専用インストールで行った場合は適用できません。というかデフォルトでそうなっているのかな?
RAMディスクにするには、tmpfs にマウントすればいいらしい。
とりあえずテンポラリディレクトリをRAMディスク化するには、
sudo gedit /etc/fstab



tmpfs /tmp tmpfs defaults 0 0

の行を追加。(defaults は defaults ですよ。ログインIDじゃないです)
これで /tmp は RAMディスクにする設定は完了。再起動で適用完了。

RAMディスクのデフォルトの容量は実メモリの半分までだそうな。ちなみに、RAMディスクの空き領域は実メモリからは消費されないので、たくさんあっても大丈夫。容量設定は特に変更しないほうが色々な環境で最適に動かせるのでデフォルトのままでいい。いや,変えたいというひとは:tmpfsの容量 設定方法

これだけでも、多少よくなりますが、ホームディレクトリに一時ファイルや一時的な設定を書き込むプログラムが多く普通に使う分には体感的にはあまり変わりません・・・。






で、ホームディレクトリのRAMディスク化ですが・・・。
手順は単純ですが、間違うと起動しなくなったり、ホームディレクトリのファイルや設定が消えてしまいます!!!。
テキストエディタの vi とか使えないとリカバリーモードで編集するので厳しいかも。

システムのアップグレード(たとえばUbuntu 8.04からUbuntu 8.10 にアップグレード)した場合,以下の設定が消えてしまう可能性があります。その場合は再度設定する必要があります。



ここでは,tmpfs によるRAMディスクと rsync によるファイルのコピーを使っています。rsyncは本来リモートとローカルのファイル・ディレクトリの同期プログラムですが,ローカル間でのコピーであっても利点があるので使っています。たとえば,可能な限り属性やオーナーを一致させるとか,シンボリックリンクファイルもそのままのディスク上のイメージとしてコピーするとか,更新のあったファイルのみコピーするなど,このRAMディスクとUSBメモリ上のファイルのコピーとしても最適だということが分かり,使っています。

以下の手順をする前に rsyncの使い方や挙動について,あらかじめ勉強・練習しておくことをおすすめします。
参照:http://www.infoscience.co.jp/technical/rsync/README.html
http://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html




再起動して ESCキーとか押して grubメニューを表示。
Ubuntu 8.04.1, kernel 2.6.24-19-generic (recovery mode)
の様な(recovery mode) で起動

出てきたメニューでDrop Root なんとかで root コンソールに移動

以下、 ログインユーザ名が default の場合です。 default を自分の環境のログインIDに置き換えてください。じゃないと正しく動きません。

まず、/home/default/ の内容をバックアップ(失敗すれば消えてしまうので、これは保険です。失敗した場合はこれを使って復旧してください。完了後は消してください。)
rsync -a /home/default/ /home/default-back

/home/default/default-back はバックアップ先ディレクトリ。この中に
default フォルダがバックアップされます。


つぎに /home/defaultを置く場所を用意し、その中にディレクトリを移動。

mkdir /home/org-default/
mv /home/default/ /home/org-default/

RAMディスク用領域確保
mkdir /home/default/

オーナーを調整(defaultはユーザIDなので環境に合わせて修正すること。)
chown -R default:default /home/default
chmod 755 /home/default


RAMディスクの割り当て設定
sudo vi /etc/fstab


以下の様な行を追加して保存。
tmpfs /home/default tmpfs defaults 0 0

 (defaults は defaults ですよ。ログインIDじゃないです /home/default のdefault はログインIDです。)


vi /etc/init.d/mountall.sh
で一番最後の付近の do_startから;;の行を複数追加。以下の様になる。(赤字部分を追加。)

case "$1" in
start|"")
do_start
/usr/bin/rsync -a /home/org-default/default/ /home/default/

;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3



reboot コマンドで再起動。



シャットダウン時にRAMディスクからUSBメモリに書き戻す方法。
RAMディスクだと電源消したら消えます。ホームディレクトリ内のファイルや設定が保存されません。保存されなくても困らない場合は不要ですが、自動で保存して欲しい場合は以下のコードを追加。

通常モードで起動。
起動後、ログインし
mount
コマンドで
tmpfs on /home/default type tmpfs (rw)
が含まれていることを確認すること。
なければ、内容が消えます(汗)
間違っていれば復旧してから。




FireFoxのブラウザキャッシュの消去
rm -f /home/default/.mozilla/firefox/48vravys.default/Cache/*

/home/default/.mozilla/firefox/
内に profiles.ini というファイルがあってその中に PATH=の値がかかれている。
この場合は 48vravys.default となっていた。defaultはおそらくログインIDなので ~/.mozilla/firefox/profiles.ini 見てちゃんと合わせること。


これは通常のログインですること。すでにramdiskで
正常に動いている状態で設定しなければなりません。正常に動いていない状態でこれを設定するとシャットダウン時に上書きされて消えてしまいます。
ホームディレクトリの内容を自動保存する必要がない場合は操作不要。

sudo vi /etc/init.d/umountfs

stop)
rm -f /home/default/.mozilla/firefox/48vravys.default/Cache/*
/usr/bin/rsync -a --delete /home/default /home/org-default

do_stop



以上でできます。

この設定をすれば、USBメモリでUbuntuを動かすのが単なるネタじゃなくて、実用レベルになります。


画像
ファイルシステムの内容。 /home/default が tmpfs つまり、RAMディスクになっている。現在のユーザ名と同じなのでホームディレクトリがRAMディスク化されている。


FireFoxなどのウェブブラウザのキャッシュファイルもホームディレクトリ内にあるのでブラウジングがかなり高速化されます。ただしブラウザキャッシュの容量を小さくしておかないとメモリを圧迫していきます(^^;ので必ず小さくしておきましょう。10MBとか20MB程度で十分でしょう。これで表示できないウェブサイトははまずありませんし,これでもハードディスクをつかうより高速です。

あと /var も書き換えを良く行うディレクトリなので,いくつかのディレクトリをRAMディスク化したほうがいいかな・・・。


たとえば,今から2分以内に更新された/var 内と /etc 内の ファイルの一覧を出すなら。
sudo find /var /etc -mmin -2 -print
で出ます。
これを時々実行して しょっちゅう書き換わっているファイルをチェックしておきます。
これらはRAMディスクにすべきファイルであることが分かります。もちろん方法はファイルによって違います。
ちなみに /var/run と /var/lock は最初から RAMディスクです。

特にログ系の書き込みが多いみたいです。ログはデータの書き換えではなくてデータの追加なのでフラッシュメモリの問題である書き換え回数の負担としては少ない方です。1回の書き込み量も少ないので速度の負担にはならないでしょう。ただログを大量に出す様ならログを出す量を減らすかログをストップするなどのカスタマイズが必要でしょう。

気になるならRAMディスク化してもよいと思いますが,突然電源が切れるなどで異常終了して保存されないなどの問題があります。これはログとしては良くないです。ほかにも,おかしな動作をしてコンピュータがかたまってしまい,強制的に電源を落とさなければならない。再起動後ログをチェックして原因を追求しようにも,電源を落としていてログが消えてしまい,原因追求の最大の手がかりであるログが消えてしまうのは深刻ですし,安心して使えません。また,クラッカーに侵入された痕跡とかを見つけることが出来なくなるかもしれない。

それでもログをRAMディスクにしたいならば,もっと簡単な方法があります:
ログ・ファイルをRAMに置いてシステム・パフォーマンスを改善する方法
http://sourceforge.jp/magazine/08/07/18/0047251
Ramlog というプロジェクトでしているそうです。


DHCPならば
/var/lib/dhcp3/ ディレクトリの中のファイルと /etc/resolv.conf が時々書き換わります。
書き込み量は少ないのですが回数がとても多いので注意が必要です。



あと,ファイルシステムを ext3 にしているなら,
Linux チューニング - Ext3 のパフォーマンスを最大化させる
http://www.drk7.jp/MT/archives/001407.html
をしてみると,若干良くなります。


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 7
なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
驚いた 驚いた
ナイス ナイス
面白い

トラックバック(1件)

タイトル (本文) ブログ名/日時
Ubuntuの高速化(ramdiskを活用)
【概要】ハードディスクよりも高速なramdiskを作って、その中にアクセスが頻繁にアクセスが発生するディレクトリを入れます。 ...続きを見る
りなぱそ
2009/07/17 21:23

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(5件)

内 容 ニックネーム/日時
おかげさまでfirefox快適です。しかし(オタクソフトの(^.^;)timidity++は依然として重いです。timidity++のRAMディスク化ってできるんでしょうか。できるとしたらどうやればいいのか
わかりやすく教えてくれないでしょうか。だめでしょうか。お願いします。
ヲタク
2009/02/18 15:22
Ramlogをインストールしたら、若干よくなりましたー。ありがとうございましたー。
ヲタク
2009/03/09 16:41
こちらの記事を参考にUbuntu9.10を高速化しようと思っているのですが、
9.10からetcの設定フォルダが変更され、/etc/init.d/mountall.shがなくなり、
umountfsファイルは残っているんですが、同じように書き込んでも効果がありません。
色々試したのですが、mountall.shについては、/etc/init/mountall.confの
10行目に
script
/usr/bin/rsync -a /home/org-default/default/ /home/default/
end script

てな感じに書くと解決はできたんですが、

umountfsの方はどこに書いたらいいのか、さっぱりわかりません。
大変恐縮ですが、どうしたらいいのかわかりますでしょうか?
saku
2009/12/23 20:48
追伸:後日、自己解決いたしました。

 どうも、ご迷惑をおかけしました。
saku
2010/01/07 14:40
最近、高速のUSBメモリにLinux Mint 18.1 Cinnamonを入れて遊んでます。
速度よりも書き換え回数の制限が気になっていましたが、このページを見て、これはいいや!と早速試してみました。
が、設定ファイルが様変わりしていて、ドつぼにハマってしまいました。
systemdをにわか勉強する羽目になりましたが、試行錯誤してどうにかこうにか正常に稼働するようになりました。
使い込んでないのでパフォーマンスはまだよく分かりませんが。

tmpfsってハイバネートするとどうなるんでしょうね?
aoyagi
2017/06/25 02:53

コメントする help

ニックネーム
URL(任意)
本 文
Ubuntu 8.04 USBメモリインストールでの高速化(ホームディレクトリRAMディスク化) さとーC++ぶろぐ/BIGLOBEウェブリブログ
文字サイズ:       閉じる