#topicpath

** SSDとLinux [#s7ba1d10]
*** SSD の選択について [#g15b233e]
+ 大量のデータを読み書きする場合~
1セルの電子量の状態を1ビットでなく3ビット記録できる TLC(Triple Level Cell) が推奨される。~
~ 
*** カーネルなどについて [#led2413b]
+ 3.9 以上~
*** カーネル・パーティションについて [#led2413b]
+ バージョン 3.9 以上~
SSD キャッシングが使える。ただし、これは、SSDをハードディスクのキャッシュとして使うものであるので、~
SSD の寿命を伸ばすことは関係なさそうだ。~
~
+ 最新のファームウエアを使うこと~
 sudo smartctl -a /dev/sda
などで確かめる。~
~
+ I/O スケジューラ~
Linux カーネル 2.6.10 から、デバイス毎スケジューラを切り替えることが出きるようになった。通常、ハードディスクの場合には、データが~
分散して書かれているために、ヘッドの移動などを考慮して最適化した方がアクセスが早くなる。SSD の場合には、そのような心配はない。そこ~
SSD の場合には、スケジューラを[[用いない(noopにする)のがいいという議論>http://d.hatena.ne.jp/yohei-a/20131005/1380980124]]と、[[deadlineにするのがいいという議論>https://wiki.debian.org/SSDOptimization#Low-Latency_IO-Scheduler]]とがある。~
劇的な違いはなく、寿命も関係なさそうだ。~
~
+ パーティション~
4kB のページサイズを考慮してパーティションを分けなければならない。[[このページ>https://wiki.debian.org/SSDOptimization#Partitions_and_Alignment]]によるとwheezy でパーティションを分けるなら意識しなくてもいいようだ。~
~
*** swapについて [#h3d19f8f]
+ swap 領域をSSDに作らない。~
メモリを多めにする、ということ。決まった仕事しかしないだろうので、あらかじめ見当をつけるべき。~
~
+ ハイバネーションなどのために swap を作るときは、できるだけ swap を起こさないようにする。~
/etc/sysctl.conf に次のように書き加える。
 vm.swappiness = 0
メモリがいっぱいになるまでスワップしなくなる。(cf. [[Wikipedia>http://ja.wikipedia.org/wiki/Swappiness]])~
~
*** ファイルシステムについて [#l8c75d8f]
+ 永続的な記憶領域に btrfs を使う。~
最も先進的である btrfs は、SSD に対する配慮があるらしい。詳しくは、例えば [[ArchLinuxのBtrfsの解説>https://wiki.archlinux.org/index.php/Btrfs_(%E6%97%A5%E6%9C%AC%E8%AA%9E)]]を見れば良い。~
~
+ マウント時にアクセス記録(atime)を記録しないようにする。~
オプションに noatime を追加する。ただし、ls -a などで最終アクセス記録を参照できなくなる(多分。)。~
例:
 /dev/sda1 / ext4 noatime,errors=remount-ro 0 0
~
+ SSDの空き領域を開放する TRIM を自動で実行する。~
オプションに discard を加える。btrfs, ext4 で有効。TRIMについては[[2011年の記事がこちら>http://www.dosv.jp/other/1005/18.htm]]にある。~
例:
 /dev/sda1 / ext4 noatime,discard,errors=remount-ro 0 0
~
ただし、ファイルシステムがいっぱいに近くなったときに有効かも、という話であって、[[TRIM は不要だという議論>http://www.spinics.net/lists/raid/msg40916.html]]もある。~
また、あらかじめ領域を余分に 15% ほどとっている SSD があるようだ。[[そういう場合には TRIM は不要であるという議論>http://www.spinics.net/lists/raid/msg40866.html]]がある。。~
~
+ 一時的な記憶領域に tmpfs を使う。~
RAM の一部をファイルシステムにするのが tmpfs である。指定したサイズは最大値であり、空いている部分は普通に~
メインメモリとして利用される。設定方法は二つある。~
++ /etc/fstab に設定する方法~
この方法は、次に書く設定方法よりも優先的に設定される。例えば、/etc/fstab に次のように書き加えると /tmp が tmpfs になる。~
例:
 tmpfs   /tmp    tmpfs   defaults,size=512m      0       0
~
++ /etc/default/tmpfs (squeeze までは /etc/default/rcS ) に設定する方法~
wheezy になって変わったところなので、[[それなりのドキュメント>https://www.debian.org/releases/stable/kfreebsd-i386/release-notes/ch-whats-new.ja.html#tmpfs-filesystems]]を参照すること。~
wheezy になって変わったところなので、[[それなりのドキュメント>https://www.debian.org/releases/stable/kfreebsd-i386/release-notes/ch-whats-new.ja.html#tmpfs-filesystems]]を参照すること。[[この記事>http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?TIPS%2FLinux%2F056#r53e3d50]]も具体的な設定として参考になる。~
~
※ tmpfs に書き出しておいて、ときどき、SSD に同期(シンクロナイズ)する、つまり、定期的に SSD に書き出すのも推奨される。~
  そのためのツールとして、[[anything-sync-daemon>https://github.com/graysky2/anything-sync-daemon]] とか [[goanysync>https://github.com/wor/goanysync]] がある。~
~
*** キャッシュの書き込み [#ncb01590]

+ メモリ上にキャッシュされた書き込みは、定期的にディスクに書き込まれます。その時間を確かめるには
 cat /proc/sys/vm/dirty_writeback_centisecs 
とします。単位は1/100秒なので、500 と表示されたら、5秒ごとに書き込むということのようです。これを長くすると、ファイルに再度変更があった場合にまとめて書き込まれます。
/etc/sysctl.conf に以下の行を追加します。
 vm.dirty_writeback_centisecs = 1500
~
*** cron で動いているプログラム [#b6e3013b]
+ mlocate~
mlocate は locate コマンドでファイルを探すためのデータベースを cron で作っています。使わなければパッケージごと削除しましょう。~
~
~
** リンク集 [#eea8caf8]
- [[Ubuntu LinuxでSSDの寿命を延ばすための設定/おいぬま日報>http://blog.lampetty.net/blog_ja/index.php/archives/299]]
- [[TIPS/Linux/056>http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?TIPS/Linux/056]]
- [[Debian SSD Optimization>https://wiki.debian.org/SSDOptimization]]


トップ   新規 検索 最終更新   ヘルプ   最終更新のRSS