LinuxでSSDのTrimコマンドを有効にする方法
LinuxでSSDのTrimコマンドを有効にする方法について気になったのでメモ。
ついでにスケジューラを変更してチューニングする方法も記載しておきます。
説明の対象はCentOS 6.xです。
TrimコマンドのLinux側サポートはKernel 2.6.33からで、CentOSの場合6系からとなります。
(カーネルは2.6.32ですが、バックポートが有るため有効となっているとの事)
又、ファイルシステムとしてext4を利用の場合のみ利用可能となります。
まず、ドライブがSSDとして認識されているかを確認します。
$ cat /sys/block/sda/queue/rotational 0
値の意味は下記の通り。
状態 | 値 |
---|---|
SSDとして認識 | 0 |
HDDとして認識 | 1 |
0の場合、SSDとして認識されている。
尚、RAIDカード経由でSSDを接続した場合、SSDを直接扱えないのでTrimは使えない。
SSDとして認識されているとして、LinuxでSSDのTrimコマンドを有効にするには、mountのオプションとしてdiscardを指定すると有効になる。
$ sudo mount /dev/sda[0-9] /mnt -t ext4 -o discard
上記設定を起動時に有効にするには、/etc/fstab に記載しておく。
UUID=xxxx / ext4 defaults,discard 0 1 UUID=xxxx /var ext4 defaults,discard 0 2
I/Oスケジューラの変更
Trimコマンド有効かのついでにI/Oスケジューラも変更しておくと良い。
尚、I/Oスケジューラの変更に関してはRAIDカードを使用してSSDを使用している場合でも有効。
$ cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq]
デフォルトのスケジューラはcfqスケジューラとなっている。
CFQスケジューラは次のような特性を持っている。
CFQ はプロセス毎の I/O キューを持ち、極力公平なスケジューリングをしようとします。これにより従来の Linux カーネルで見られた「バックグラウンドで I/O 処理が行われているとレスポンスが悪くなる」という現象を抑えています。 CFQ はどのような環境でも比較的良好な性能を示すオールラウンドプレイヤー的な性質を持っているようです。
これに対して、SSDのような高速なデバイスを扱う場合は、noopスケジューラを使うと良いとの事。
noop スケジューラはその名の通り、何もしないスケジューラです。入出力インタフェースや周辺機器自身がハードウェアレベルで高度な処理を行う場合 (インテリジェントな RAID コントローラなど) や、非常に性能が良い場合 (半導体ディスクなど) は、カーネルはむしろ何もしないほうがシステム負荷が軽減できるという場合があります。 noop スケジューラはこのような場合に指定します。普通のパソコンでは noop スケジューラを指定すると性能が落ちるでしょう。
$ sudo su - # echo "noop" > /sys/block/sda/queue/scheduler
起動時に有効にするには、/etc/sysctl.conf に記載しておく。
block.sda.queue.scheduler=noop
以上、ご参考になれば幸いです。
Intel SSD 520 Series(Cherryville) 480GB 2.5inch Reseller BOX SSDSC2CW480A3K5
- 出版社/メーカー: インテル
- 発売日: 2012/02/07
- メディア: Personal Computers
- この商品を含むブログを見る