Top/断片/SSDとLinux

SSDとLinux

SSD の選択について

  1. 大量のデータを読み書きする場合
    1セルの電子量の状態を1ビットでなく3ビット記録できる TLC(Triple Level Cell) が推奨される。

カーネル・パーティションについて

  1. バージョン 3.9 以上
    SSD キャッシングが使える。ただし、これは、SSDをハードディスクのキャッシュとして使うものであるので、
    SSD の寿命を伸ばすことは関係なさそうだ。

  2. 最新のファームウエアを使うこと
    sudo smartctl -a /dev/sda
    などで確かめる。

  3. I/O スケジューラ
    Linux カーネル 2.6.10 から、デバイス毎スケジューラを切り替えることが出きるようになった。通常、ハードディスクの場合には、データが
    分散して書かれているために、ヘッドの移動などを考慮して最適化した方がアクセスが早くなる。SSD の場合には、そのような心配はない。そこ
    SSD の場合には、スケジューラを用いない(noopにする)のがいいという議論と、deadlineにするのがいいという議論とがある。
    劇的な違いはなく、寿命も関係なさそうだ。

  4. パーティション
    4kB のページサイズを考慮してパーティションを分けなければならない。このページによるとwheezy でパーティションを分けるなら意識しなくてもいいようだ。

swapについて

  1. swap 領域をSSDに作らない。
    メモリを多めにする、ということ。決まった仕事しかしないだろうので、あらかじめ見当をつけるべき。

  2. ハイバネーションなどのために swap を作るときは、できるだけ swap を起こさないようにする。
    /etc/sysctl.conf に次のように書き加える。
    vm.swappiness = 0
    メモリがいっぱいになるまでスワップしなくなる。(cf. Wikipedia)

ファイルシステムについて

  1. 永続的な記憶領域に btrfs を使う。
    最も先進的である btrfs は、SSD に対する配慮があるらしい。詳しくは、例えば ArchLinuxのBtrfsの解説を見れば良い。

  2. マウント時にアクセス記録(atime)を記録しないようにする。
    オプションに noatime を追加する。ただし、ls -a などで最終アクセス記録を参照できなくなる(多分。)。
    例:
    /dev/sda1 / ext4 noatime,errors=remount-ro 0 0

  3. SSDの空き領域を開放する TRIM を自動で実行する。
    オプションに discard を加える。btrfs, ext4 で有効。TRIMについては2011年の記事がこちらにある。
    例:
    /dev/sda1 / ext4 noatime,discard,errors=remount-ro 0 0

    ただし、ファイルシステムがいっぱいに近くなったときに有効かも、という話であって、TRIM は不要だという議論もある。
    また、あらかじめ領域を余分に 15% ほどとっている SSD があるようだ。そういう場合には TRIM は不要であるという議論がある。。

  4. 一時的な記憶領域に tmpfs を使う。
    RAM の一部をファイルシステムにするのが tmpfs である。指定したサイズは最大値であり、空いている部分は普通に
    メインメモリとして利用される。設定方法は二つある。
    1. /etc/fstab に設定する方法
      この方法は、次に書く設定方法よりも優先的に設定される。例えば、/etc/fstab に次のように書き加えると /tmp が tmpfs になる。
      例:
      tmpfs   /tmp    tmpfs   defaults,size=512m      0       0

    2. /etc/default/tmpfs (squeeze までは /etc/default/rcS ) に設定する方法
      wheezy になって変わったところなので、それなりのドキュメントを参照すること。この記事も具体的な設定として参考になる。

      ※ tmpfs に書き出しておいて、ときどき、SSD に同期(シンクロナイズ)する、つまり、定期的に SSD に書き出すのも推奨される。
        そのためのツールとして、anything-sync-daemon とか goanysync がある。

キャッシュの書き込み

  1. メモリ上にキャッシュされた書き込みは、定期的にディスクに書き込まれます。その時間を確かめるには
    cat /proc/sys/vm/dirty_writeback_centisecs 
    とします。単位は1/100秒なので、500 と表示されたら、5秒ごとに書き込むということのようです。これを長くすると、ファイルに再度変更があった場合にまとめて書き込まれます。 /etc/sysctl.conf に以下の行を追加します。
    vm.dirty_writeback_centisecs = 1500

cron で動いているプログラム

  1. mlocate
    mlocate は locate コマンドでファイルを探すためのデータベースを cron で作っています。使わなければパッケージごと削除しましょう。


リンク集


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