断片/SSDとLinux
をテンプレートにして作成
[
トップ
] [
新規
| |
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
** SSDとLinux [#s7ba1d10]
※ 近年 SSD が安くなった。そこで [[DN2820FYKH>../DN282...
書き込み回数が有限であるようなデバイス上でシステム...
以下では、主として Debian GNU/Linux (wheezy) を想...
*** SSD の選択について [#g15b233e]
+ 大量のデータを読み書きする場合~
1セルの電子量の状態を1ビットでなく3ビット記録できる TL...
~
*** カーネル・パーティションについて [#led2413b]
+ バージョン 3.9 以上~
SSD キャッシングが使える。ただし、これは、SSDをハードディ...
SSD の寿命を伸ばすことは関係なさそうだ。~
~
+ 最新のファームウエアを使うこと~
sudo smartctl -a /dev/sda
などで確かめる。(なお、smartctl コマンドは smarmontools ...
~
+ I/O スケジューラ~
Linux カーネル 2.6.10 から、デバイス毎にスケジューラを切...
ディスクの場合には、データが分散して書かれているために、...
が早くなる。SSD の場合には、そのような心配はない。その場...
[[(noopにする)のがいいという議論>http://d.hatena.ne.jp/yo...
noop の方がちょっと早いけど、大きなファイルの転送中とかは...
設定の確認(SSDが sda のとき):
cat /sys/block/sda/queue/scheduler
noop, deadline, cfq のうち、設定されているものが [ ] でハ...
設定例(SSDが sda のとき): sysfsutils パッケージも導入して...
block/sda/queue/scheduler = deadline
~
+ パーティション~
4kB のページサイズを考慮してパーティションを分けなければ...
ションを分けるなら意識しなくてもいいようだ。~
~
*** swapについて [#h3d19f8f]
+ swap 領域をSSDに作らない。~
メモリを多めにする、ということ。決まった仕事しかしないだ...
ノートパソコンでハイバネーション(休止)するなら致し方ない...
~
+ ハイバネーションなどのために swap を作るときは、できる...
/etc/sysctl.conf に次のように書き加える。
vm.swappiness = 0
メモリがいっぱいになるまでスワップしなくなる。(cf. [[Wiki...
~
*** ファイルシステムについて [#l8c75d8f]
+ 永続的な記憶領域に btrfs か ext4 を使う。~
最も先進的である btrfs は、SSD に対する配慮があるらしい。...
システムである。詳しくは、例えば [[ArchLinuxのBtrfsの解説...
~
+ マウント時にアクセス記録(atime)を記録しないようにする。~
オプションに noatime を追加する。ただし、ls -a などで最終...
例:
/dev/sda1 / ext4 noatime,errors=remount-ro 0 0
※ relatime にする可能性もある。しかし、読んだ時刻の更新...
~
+ SSDの空き領域を開放する TRIM を自動で実行する。~
オプションに discard を加える。btrfs, ext4 で有効。TRIMに...
例:
/dev/sda1 / ext4 noatime,discard,errors=remount-ro 0 0
~
ただし、ファイルシステムがいっぱいに近くなったときに有効...
もある。また、あらかじめ領域を余分に 15% ほどとっている S...
[[TRIM は不要であるという議論>http://www.spinics.net/list...
~
+ 一時的な記憶領域に tmpfs を使う。~
++ tmpfs とは~
RAM の一部をファイルシステムにするのが tmpfs である。指定...
メインメモリとして利用される。~
~
++ tmpfs を使うべきもの~
システムが終了すると同時に消えていいファイルは tmpfs でよ...
--- ロックファイル~
あるソフトが起動している時に、同時に複数起動しないように...
時は、新規の起動を制限する、といったこと等が行われる。そ...
了する度になくなっていい。~
--- /tmp~
だいたい大丈夫。再起動しても /tmp の内容が保持されるべき...
--- /home~
ユーザー利用領域なのでよくない。しかし、ときどき、SSD に...
に書き出すのも推奨される。詳しくは書かないが、そのための...
[[goanysync>https://github.com/wor/goanysync]] がある。~
--- /var/log~
基本的にシステムのログは残すべきである。しかし頻繁にファ...
そこで、起動時に tmpfs に移し、停止時に SSD に書き込む試...
~
++ tmpfs の設定方法
+++ /etc/fstab に設定する方法~
この方法は、次に書く設定方法よりも優先的に設定される。例...
/tmp が tmpfs になる。~
例:
tmpfs /tmp tmpfs defaults,size=512m 0 0
~
+++ /etc/default/tmpfs (squeeze までは /etc/default/rcS )...
wheezy になって変わったところなので、[[それなりのドキュメ...
~
設定例:
RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes
TMPFS_SIZE=10%
TMP_SIZE=70%
※ TMPFS_SIZE は tmpfs のサイズの最大値を示している。TMP...
メモリ量に対する比率で示している。 ~
~
++ log について~
システムの記録(log)は、ほとんど /var/log に記録される。と...
の観点から適切でない。そこで、/var/log を tmpfs にする試...
こで、起動時に /var/log を tmpfs に移動し、シャットダウン...
--- 解説ページ~
[[A transient /var/log>http://www.debian-administration.o...
--- スクリプト~
[[ここ(上述のページからリンクが張られている)>http://www.d...
4,5 行目に次の記述を加える。
# Required-Start:
# Required-Stop:
また、必要に応じて SIZE の部分を書きかえる。~
※ このスクリプトは root で動かすため、その中身を特によく...
~
--- 起動時・終了時に自動的に実行するための設定例~
mv transientlog /etc/init.d/
chown root.root /etc/init.d/transientlog
chmod a+x /etc/init.d/transientlog
insserv transientlog
update-rc.d transientlog start 00 2 3 4 5 . stop 99 0 1 ...
~
*** キャッシュの書き込み [#ncb01590]
+ キャッシュの書き込み頻度を減らす。~
メモリ上にキャッシュされた書き込みは、定期的にディスクに...
cat /proc/sys/vm/dirty_writeback_centisecs
とする。単位は1/100秒なので、500 と表示されたら、5秒ごと...
/etc/sysctl.conf に以下の行を書き加える。
vm.dirty_writeback_centisecs = 1500
※ 原因不明でうまく設定できない。なぜか 6000(60秒)になる。
~
*** cron で動いているプログラム [#b6e3013b]
+ 探し方~
/etc/cron.d /etc/cron.hourly /etc/cron.daily 等を探す。~
~
+ 消してもよさそうなプログラム
-- mlocate~
mlocate は locate コマンドでファイルを探すためのデータベ...
(データベースを使わなくても十分早くファイルを探せる。)~
~
~
** リンク集 [#eea8caf8]
- [[Ubuntu LinuxでSSDの寿命を延ばすための設定/おいぬま日...
- [[TIPS/Linux/056>http://mizupc8.bio.mie-u.ac.jp/pukiw...
- [[Debian SSD Optimization>https://wiki.debian.org/SSDOp...
- [[Btrfs - Arch Linux>https://wiki.archlinux.org/index.p...
- [[A transient /var/log>http://www.debian-administration...
終了行:
#topicpath
** SSDとLinux [#s7ba1d10]
※ 近年 SSD が安くなった。そこで [[DN2820FYKH>../DN282...
書き込み回数が有限であるようなデバイス上でシステム...
以下では、主として Debian GNU/Linux (wheezy) を想...
*** SSD の選択について [#g15b233e]
+ 大量のデータを読み書きする場合~
1セルの電子量の状態を1ビットでなく3ビット記録できる TL...
~
*** カーネル・パーティションについて [#led2413b]
+ バージョン 3.9 以上~
SSD キャッシングが使える。ただし、これは、SSDをハードディ...
SSD の寿命を伸ばすことは関係なさそうだ。~
~
+ 最新のファームウエアを使うこと~
sudo smartctl -a /dev/sda
などで確かめる。(なお、smartctl コマンドは smarmontools ...
~
+ I/O スケジューラ~
Linux カーネル 2.6.10 から、デバイス毎にスケジューラを切...
ディスクの場合には、データが分散して書かれているために、...
が早くなる。SSD の場合には、そのような心配はない。その場...
[[(noopにする)のがいいという議論>http://d.hatena.ne.jp/yo...
noop の方がちょっと早いけど、大きなファイルの転送中とかは...
設定の確認(SSDが sda のとき):
cat /sys/block/sda/queue/scheduler
noop, deadline, cfq のうち、設定されているものが [ ] でハ...
設定例(SSDが sda のとき): sysfsutils パッケージも導入して...
block/sda/queue/scheduler = deadline
~
+ パーティション~
4kB のページサイズを考慮してパーティションを分けなければ...
ションを分けるなら意識しなくてもいいようだ。~
~
*** swapについて [#h3d19f8f]
+ swap 領域をSSDに作らない。~
メモリを多めにする、ということ。決まった仕事しかしないだ...
ノートパソコンでハイバネーション(休止)するなら致し方ない...
~
+ ハイバネーションなどのために swap を作るときは、できる...
/etc/sysctl.conf に次のように書き加える。
vm.swappiness = 0
メモリがいっぱいになるまでスワップしなくなる。(cf. [[Wiki...
~
*** ファイルシステムについて [#l8c75d8f]
+ 永続的な記憶領域に btrfs か ext4 を使う。~
最も先進的である btrfs は、SSD に対する配慮があるらしい。...
システムである。詳しくは、例えば [[ArchLinuxのBtrfsの解説...
~
+ マウント時にアクセス記録(atime)を記録しないようにする。~
オプションに noatime を追加する。ただし、ls -a などで最終...
例:
/dev/sda1 / ext4 noatime,errors=remount-ro 0 0
※ relatime にする可能性もある。しかし、読んだ時刻の更新...
~
+ SSDの空き領域を開放する TRIM を自動で実行する。~
オプションに discard を加える。btrfs, ext4 で有効。TRIMに...
例:
/dev/sda1 / ext4 noatime,discard,errors=remount-ro 0 0
~
ただし、ファイルシステムがいっぱいに近くなったときに有効...
もある。また、あらかじめ領域を余分に 15% ほどとっている S...
[[TRIM は不要であるという議論>http://www.spinics.net/list...
~
+ 一時的な記憶領域に tmpfs を使う。~
++ tmpfs とは~
RAM の一部をファイルシステムにするのが tmpfs である。指定...
メインメモリとして利用される。~
~
++ tmpfs を使うべきもの~
システムが終了すると同時に消えていいファイルは tmpfs でよ...
--- ロックファイル~
あるソフトが起動している時に、同時に複数起動しないように...
時は、新規の起動を制限する、といったこと等が行われる。そ...
了する度になくなっていい。~
--- /tmp~
だいたい大丈夫。再起動しても /tmp の内容が保持されるべき...
--- /home~
ユーザー利用領域なのでよくない。しかし、ときどき、SSD に...
に書き出すのも推奨される。詳しくは書かないが、そのための...
[[goanysync>https://github.com/wor/goanysync]] がある。~
--- /var/log~
基本的にシステムのログは残すべきである。しかし頻繁にファ...
そこで、起動時に tmpfs に移し、停止時に SSD に書き込む試...
~
++ tmpfs の設定方法
+++ /etc/fstab に設定する方法~
この方法は、次に書く設定方法よりも優先的に設定される。例...
/tmp が tmpfs になる。~
例:
tmpfs /tmp tmpfs defaults,size=512m 0 0
~
+++ /etc/default/tmpfs (squeeze までは /etc/default/rcS )...
wheezy になって変わったところなので、[[それなりのドキュメ...
~
設定例:
RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes
TMPFS_SIZE=10%
TMP_SIZE=70%
※ TMPFS_SIZE は tmpfs のサイズの最大値を示している。TMP...
メモリ量に対する比率で示している。 ~
~
++ log について~
システムの記録(log)は、ほとんど /var/log に記録される。と...
の観点から適切でない。そこで、/var/log を tmpfs にする試...
こで、起動時に /var/log を tmpfs に移動し、シャットダウン...
--- 解説ページ~
[[A transient /var/log>http://www.debian-administration.o...
--- スクリプト~
[[ここ(上述のページからリンクが張られている)>http://www.d...
4,5 行目に次の記述を加える。
# Required-Start:
# Required-Stop:
また、必要に応じて SIZE の部分を書きかえる。~
※ このスクリプトは root で動かすため、その中身を特によく...
~
--- 起動時・終了時に自動的に実行するための設定例~
mv transientlog /etc/init.d/
chown root.root /etc/init.d/transientlog
chmod a+x /etc/init.d/transientlog
insserv transientlog
update-rc.d transientlog start 00 2 3 4 5 . stop 99 0 1 ...
~
*** キャッシュの書き込み [#ncb01590]
+ キャッシュの書き込み頻度を減らす。~
メモリ上にキャッシュされた書き込みは、定期的にディスクに...
cat /proc/sys/vm/dirty_writeback_centisecs
とする。単位は1/100秒なので、500 と表示されたら、5秒ごと...
/etc/sysctl.conf に以下の行を書き加える。
vm.dirty_writeback_centisecs = 1500
※ 原因不明でうまく設定できない。なぜか 6000(60秒)になる。
~
*** cron で動いているプログラム [#b6e3013b]
+ 探し方~
/etc/cron.d /etc/cron.hourly /etc/cron.daily 等を探す。~
~
+ 消してもよさそうなプログラム
-- mlocate~
mlocate は locate コマンドでファイルを探すためのデータベ...
(データベースを使わなくても十分早くファイルを探せる。)~
~
~
** リンク集 [#eea8caf8]
- [[Ubuntu LinuxでSSDの寿命を延ばすための設定/おいぬま日...
- [[TIPS/Linux/056>http://mizupc8.bio.mie-u.ac.jp/pukiw...
- [[Debian SSD Optimization>https://wiki.debian.org/SSDOp...
- [[Btrfs - Arch Linux>https://wiki.archlinux.org/index.p...
- [[A transient /var/log>http://www.debian-administration...
ページ名: