SSDに関する設定

提供: mechanical Wiki
ナビゲーションに移動 検索に移動

環境

ソフトウェア バージョン
Debian stretch (2016.3.21時点)

TRIM

fstrimがサポートしているファイルシステムについては、定期的なfstrim実行でTRIMする。 マウントオプションにdiscardを付けるという手もあるが、おすすめされていない。 たぶん、書き込むごとにTRIMが発行されてレスポンスが悪くなる、とかだと思う。

Debian stretchのutil-linuxには、週次でfstrimするためのsystemdファイルが用意されている。 以下の手順で有効化する。

sudo cp /usr/share/doc/util-linux/examples/fstrim.{service,timer} /etc/systemd/system
sudo systemctl enable fstrim.timer

fstrim.servicefstrimのコマンドラインが書かれており、オプションをいじれる。 -vを付けると、動いたときの詳細がログに残る。

ExecStart=/sbin/fstrim -av

vfatなパーティションやswapはfstrimが効かないので、discardを使う。

UUID=XXXX-XXXX        /boot/efi        vfat        discard,umask=0077        0    1
UUID=XXXXXXXX-...     none             swap        sw,discard                0    0

I/Oスケジューラ

SSDのデバイスだけnoopにする。 どのブロックにアクセスしてもシーク時間一定なので、noopでOK。 udevのルールを作る。(例えば/etc/udev/rules.d/60-ssd-scheduler.rulesといったファイルを作る)

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"

/sys/block/sdX/queue/rotational0だとSSDなので、queue/schedulernoopにする。

参考文献