
Ubuntu日本語フォーラム

ログインしていません。
こんにちは、初めて質問させていただきます。どうぞ宜しくお願いします。
表記の件ですが、現在PCに乗っている2GBのメモリから、1GB分だけRamdisk化したいと考えております。更にtmpファイルなどはそこに書き込む設定とし、ドライブへの書き込みを極力減らしたい(HDDではなくSSDを利用しているため、寿命が心配なのです)と思っています。
そこでネット上の情報を基に設定を行い、以前(7.10環境下)ではうまく作成できておりました。しかし8.04になってから同じ操作を行ってもうまく行かないのです。
現在の環境及び試した内容は以下の通りです。
PC:Asus Eee PC 4G-X
OS:eeeMint5.0(ubuntu8.04ベースのLinuxMintをeeepc向けに構成、日本語化したものと理解しています)
試した操作
$ sudo mkdir /mnt/ramdisk
$ sudo chmod 777 /mnt/ramdisk
$sudo gedit /boot/config-2.6.24-16-generic
開いたconfig~の中のCONFIG_BLK_DEV_RAM_SIZE=以下の数値を1048570に書き換え(*1)
$ sudo update-initramfs -uk all
$ sudo gedit /etc/rc.local
開いたrc.localの一番下、exit0の直前の行に以下を追記
mount -t tmpfs -o size=1g /dev/ram9 /mnt/ramdisk
更に以下の手順でテンポラリーファイルをRamdiskに移動させます。
$ sudo gedit /etc/fstab
開いたfstabの中に以下の3行を追記
tmps /var/log tmpfs defaults 0 0
tmps /tmp tmpfs defaults 0 0
tmps /var/tmp tmpfs defaults 0 0
最後に
$ sudo mount -a
$ sudo mkdir /var/log/apt(*2)
以上で再起動を行いました。再起動後dfコマンドでディスク使用状況を見ると
/dev/ram9 1048576 0 1048576 100% /mnt/ramdisk(*3)
という1行があるはず、と書かれていましたが見当たりません。表示は以下の通りです(使用量及び使用%は意味がないと思いますので割愛します。またsdb以下のドライブについても同様に割愛)。
Filesystem 1k-ブロック マウント位置
/dev/sda1 3842376 /
varrun 1033592 /var/run
varlock 1033592 /var/lock
udev 1033592 /dev
devshm 1033592 /dev/shm
lrm 1033592 /lib/modules/2.6.24-16-generic/volatile
tmpfs 1033592 /tmp
tmpfs 1033592 /var/tmp
tmpfs 1033592 /log
gvfs-fuse-daemnon 3842376 /home/(ユーザー名)/.gvfs
質問は以下の通りです。
①8.04でもRmdisk作成+tmpファイルの移動を成功させるためにはどうしたら良いのでしょうか。
②文中の*1と*3で微妙に数値が違う(1048576と1018570)のですが、これで正しいのでしょうか。複数サイトでこのように表記されていたのですが・・・。
③*2のコマンドは弾かれてしまい、見るとそのフォルダはすでに存在していましたが、これは無関係でしょうか。
④(ちょっと話が逸れますが)例えばFireFoxをRamdiskにコピーして使う場合、どういう手順で何をコピーすれば良いのでしょうか。
初心者サポートに書くべきか迷いましたが、特殊な環境でもあるため、こちらとさせていただきました。
長文になってしまいましたが、どうぞ宜しくお願いします。
オフライン
Ramdiskについてはつい先日話題にのぼりました。
http://forum.ubuntulinux.jp/viewtopic.php?id=365&p=5
続報がないのでどうなっているのか分かりませんが。
オフライン
tmpfs (ramfs) は基本的にはこんな感じで利用できるです。
mkdir ~/work sudo mount -t tmpfs none ~/work
後は, workディレクトリ以下に何か書き込めば, ソレは高速だけど電源を切ると内容が失われる事になるカモ。
んで, その領域は動的に管理されてて, たくさん使用すると主記憶からどんどん割り当てられていく, ことになるです。
リミットも指定でき, それが -o size=〜 の部分です。
Jaz による投稿:
試した操作
$ sudo mkdir /mnt/ramdisk
$ sudo chmod 777 /mnt/ramdisk
$sudo gedit /boot/config-2.6.24-16-generic
開いたconfig~の中のCONFIG_BLK_DEV_RAM_SIZE=以下の数値を1048570に書き換え(*1)
$ sudo update-initramfs -uk all
$ sudo gedit /etc/rc.local
開いたrc.localの一番下、exit0の直前の行に以下を追記
mount -t tmpfs -o size=1g /dev/ram9 /mnt/ramdisk
どこを参考にしたのか不明だけど …
○ マウントポイントをマウント前にモード変更してもダメカモ
○ CONFIG_BLK_DEV_RAM_SIZEって RAM-diskではないでしょーか ? ramfs(tmpfs) と RAM diskは別物です。
Jaz による投稿:
以上で再起動を行いました。再起動後dfコマンドでディスク使用状況を見ると
/dev/ram9 1048576 0 1048576 100% /mnt/ramdisk(*3)
という1行があるはず、と書かれていましたが見当たりません。表示は以下の通りです(使用量及び使用%は意味がないと思いますので割愛します。またsdb以下のドライブについても同様に割愛)。
Filesystem 1k-ブロック マウント位置
/dev/sda1 3842376 /
varrun 1033592 /var/run
varlock 1033592 /var/lock
udev 1033592 /dev
devshm 1033592 /dev/shm
lrm 1033592 /lib/modules/2.6.24-16-generic/volatile
tmpfs 1033592 /tmp
tmpfs 1033592 /var/tmp
tmpfs 1033592 /log
gvfs-fuse-daemnon 3842376 /home/(ユーザー名)/.gvfs
これ見ると, /tmp /var/tmpなどは tmpfsとしてちゃんとマウントされてるです。
/etc/fstabに記述しておけば, (そして内容が正しければ) マウントされるカモ。
でも, /mnt/ramdiskは手動でマウントしただけなので, 再起動すると消えてなくなります。
(マウントポイントは残ってるだろーけど)
Jaz による投稿:
④(ちょっと話が逸れますが)例えばFireFoxをRamdiskにコピーして使う場合、どういう手順で何をコピーすれば良いのでしょうか。
Firefoxのキャッシュについては, Firefoxの設定で行うことできるです。
Firefox自体を, てことであれば, Ubuntuからそれを分離するのもアレなので, Firefoxの zipファイルをダウンロードしておいて, それを展開・起動するスクリプトを作成って事になるんじゃないでしょーか。
Firefox起動時に tmpfsを用意・そこへ Firefox展開・実行する, みたいな。
(すでに展開済みならば起動するだけ, って条件判断付けて)
オフライン
先程帰宅したところです。返信が遅れ申し訳ありませんでした。
>anoirさん
過去ログは一通り目を通した気になっておりました。完全に私の見落としです。これからじっくり読んでみたいと思います。また重複する内容の投稿をしてしまったこと、お詫び致します。
>RxOrcaさん
「ramfs(tmpfs) と RAM diskは別物です。」という件、驚きました。つまり最初から考え違いをしていたわけですね。私の用途(SSDへの書き込みを極力減らしたい、データは再起動したときに消えても良い物しか書き込まない)であればtmpfsだけで十分ということですね。
ちょっと頭を整理してから、改めて手順を確認させて下さい。anoirさんに頂いたリンク先とRxOrcaさんの返信を基に、少し勉強してきます。
まずは有難うございました。
オフライン
おはようございます。
改めて色々見直した結果、やはりtmpfsだけで十分に思えてきました。そこで上記のような変更は一旦破棄した上で、改めて以下の様に設定しました。
$ sudo mkdir /mnt/ramdisk
$ sudo mount -t tmpfs -o size=1g /dev/shm /mnt/ramdisk
$ sudo gedit /etc/fstab
以下4行をfstabの最後に追記
/dev/shm /mnt/ramdisk tmpfs,size=1g 0 0
tmps /var/log tmpfs defaults 0 0
tmps /tmp tmpfs defaults 0 0
tmps /var/tmp tmpfs defaults 0 0
しかしdfコマンドの結果は全く変わりません。
/dev/shm 1048576 0 1048576 100% /mnt/ramdisk
・・・となるものと期待していたのですが・・・
まだ何か勘違いか凡ミスがあるようです。ご教示頂ければ幸いです。
オフライン
どのような結果を期待するか, ってことと同時に, 現在の結果が記されていないと何がおかしいとか指摘できないカモです。
Jaz による投稿:
しかしdfコマンドの結果は全く変わりません。
/dev/shm 1048576 0 1048576 100% /mnt/ramdisk
・・・となるものと期待していたのですが・・・
サイズが違うのならその指定カモだし, すでに使用してるのなら使用サイズは 0じゃないだろーし。
(未使用で使用率 100%てのも変だけど)
オフライン
RxOrcaさん、今晩は。コメント有難うございます。
ちょっと分かりにくい書き方になっていたようで申し訳ありません。3回目の投稿時でもdfコマンドの結果は1回目と全く同じだったというつもりでした。
その後自分なりに、fstabファイル内の書き込み位置がおかしいのではと考え、修正しました。fstabファイルの中身を以下そのまま記します。
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /log tmpfs defaults 0 0
# /dev/sda1
UUID=f377eec2-f65b-4251-a39e-6dcd8287ad68 / ext2 relatime,errors=remount-ro 0 1
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/shm /mnt/ramdisk tmpfs,size=1g 0 0
つまりtmpfsで始まる3行を中ほどに、/dev/shmで始まる行を最後にしたわけです。するとdfコマンドの結果が以下の様に変わりました。
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 3842376 2291744 1355444 63% /
varrun 1033576 220 1033356 1% /var/run
varlock 1033576 0 1033576 0% /var/lock
udev 1033576 56 1033520 1% /dev
devshm 1033576 12 1033564 1% /dev/shm
lrm 1033576 38176 995400 4% /lib/modules/2.6.24-18-generic/volatile
tmpfs 1033576 24 1033552 1% /tmp
tmpfs 1033576 0 1033576 0% /var/tmp
tmpfs 1033576 0 1033576 0% /log
gvfs-fuse-daemon 3842376 2291744 1355444 63% /home/(ユーザー名)/.gvfs
以前には見られなかったdevshmで始まる行が中央付近に出てきました。カーネルのバージョンアップは無関係だと思いますが・・・これで成功(tmpファイルなどは自動的にRAMに書き込まれSSDには行かない)なのでしょうか?プログラムをコピーして起動させるには/dev/shmに放り込むのでしょうか(それとも/mnt/ramdisk?)?
調べたのと同じ結果にならないので、逆に混乱してまいりました・・・・。
お騒がせ&長文、本当に申し訳ありません。
今しばらく、宜しくお願い致します。
オフライン
Jaz による投稿:
fstabファイルの中身を以下そのまま記します。
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /log tmpfs defaults 0 0
# /dev/sda1
UUID=f377eec2-f65b-4251-a39e-6dcd8287ad68 / ext2 relatime,errors=remount-ro 0 1
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/shm /mnt/ramdisk tmpfs,size=1g 0 0
fstabのコメントのトコに書いてある様に, ここには (スペースやタブで区切った) 6つの項目を指定するです。
最初の 4つは mountコマンドで指定する内容そのままですね (順番は別として)。
<type> … これは -t で指定してたブツです。
<options> … これは -o で指定してたブツです。
よく内容を確認してみると分かるカモです。
Jaz による投稿:
以前には見られなかったdevshmで始まる行が中央付近に出てきました。カーネルのバージョンアップは無関係だと思いますが・・・これで成功(tmpファイルなどは自動的にRAMに書き込まれSSDには行かない)なのでしょうか?プログラムをコピーして起動させるには/dev/shmに放り込むのでしょうか(それとも/mnt/ramdisk?)?
/dev/shmの共有メモリーは以前からあったはずです。最初の投稿の中央付近にもあるですね。
んで, 普通に, 内容が毎回消えてよいものは /tmp以下に作成するだけで構わないカモです。
どうしても, それとは別に確保したい場合はホームディレクトリ以下に作成するのが便利カモ。
(途中で送信してしまったので, 続き …)
SSDが /dev/sda1になってるなら, /tmpへの書き込み等は SSDには影響与えないはずです。
最後の編集者: RxOrca (2008-06-14 09:16:59)
オフライン
RxOrcaさん、何度も申し訳ありません。ご教示有難うございました。
/dev/shmの件は仰るとおりで、単なる見落としでした。汗顔の至りです・・・。
さて、再起動の度に中身が消えても構わないところから、RxOrcaさんに伺ったようにtmpfsの設定のみで行くのが良さそうです。fstabの追記だけで済みそうですね。
整理して以下の様な記述にしました。
tmps /var/log tmpfs defaults,size=1g 0 0
tmps /tmp tmpfs defaults,size=1g 0 0
tmps /var/tmp tmpfs defaults,size=1g 0 0
tmps /home/(ユーザー名)/Ramdisk tmpfs defaults,size=1g 0 0
これだけに絞りました。再起動してdfコマンドを使うと
tmpfs 1033576 24 1033552 1% /tmp
tmpfs 1033576 0 1033576 0% /var/tmp
tmpfs 1033576 0 1033576 0% /log
tmpfs 1033576 0 1033576 0% /home/(ユーザー名)/Ramdisk
の4行がきちんと表示されましたので、これだけで良さそうですね。
(/dev/shm /mnt/ramdisk tmpfs,size=1g 0 0 ←この1行は意味がなかったみたいですね)
とりあえずこれで、しばらく様子を見ながら使っていくことにします。
色々ご指南有難うございました。
オフライン
うまくいってよかったですね。
http://debian.fam.cx/index.php?Software%2FInit#content_1_4
に
>/var/tmp も tmpfs としてマウントしたいと思うかもしれませんが、これは、 FHS に違反するので推奨されません。
などという記述を見つけました。参考までに。
オフライン
mizunoさん、ありがとうございます。
/var/tmpはマウントしない方が、との記載、興味深く読ませて頂きました。再起動時に読みに行くことがあると捉えれば良いのでしょうか(Windosでは良くありますが)。再起動を要求されるようなインストールでエラーが出るとか?
とりあえず今のところエラーは出ていないので、トラブルがあれば一時的に切る、というつもりでおります。
それから/etc/fstabにもう一行追加しました。
tmpfs /var/cache/apt/archives tmpfs defaults,size=1g 0 0
まだ慣れない分、色々ソフトを試用しては消し、とやっているものですから・・・。
これだけだときちんと機能しないので、/etc/rc.localにも一行追加です。
mkdir /var/cache/apt/archives/partial
これこそエラーが出そうな気もしますが、システムに被害ということは無さそうなので・・当分様子を見ていきます。
どうも有難うございました!
オフライン