はじめに

ノートPCなどを中心に、SSDが普及して来ましたが、SSDはHDDと違い、一定のパフォーマンスを維持するには、TRIMコマンドを使って不要となった領域を開放する必要があります。

このページでは、Linuxにおいて、SSDへのTRIMコマンドを発行を有効にする方法を説明します。

ドライブがTRIMコマンドに対応しているかの確認

まずはじめに、対象のディスクがTRIMコマンドに対応しているかを確認します。

ドライブがTRIMコマンドに対応しているかの確認
sudo hdparm -I /dev/sda | grep -i trim

TRIMコマンドに対応していると、何がしかが表示されます。
逆に、TRIMコマンドに対応していないと、何も表示されません。

上記の例では、一つ目のドライブ(/dev/sda)に対して確認をしています。
他のドライブの対応状況を確認したい場合は「sda」の部分を適宜変更して下さい。

ドライブがSSDとして認識されているかの確認

次に、ドライブがSSDとして認識されているかを確認します。

ドライブがSSDとして認識されているかの確認
cat /sys/block/sda/queue/rotational

「0」と表示されれば、SSDとして認識されています。
「1」と表示された場合は、SSDではなくHDDとして認識されています。

SSDとして認識されていない場合は、TRIMコマンドは使えないので諦めて下さい。
複数のSSDをRAIDで1つの論理ドライブにした場合などでは、この値は「0」ではなく「1」を返すようです。

TRIMコマンドの有効化

TRIMコマンドを有効にするには、「/etc/fstab」に以下のように記述します。

「/etc/fstab」への追記(discard)
UUID=xxxx   /           ext4    defaults,discard  0   1
UUID=xxxx   /           ext4    defaults,discard  0   1

追加するのは「discard」の部分です。
上記の通り記述すると、必要に応じてTRIMコマンドが適宜発行されるようになります。

ドライブのI/Oスケジューラの変更

必須ではないですが、ドライブのI/Oスケジューラを「noop」に変更することにより、パフォーマンスを上げることができます。

I/Oスケジューラの変更
echo 'block.sda.queue.scheduler=noop' >> /etc/sysctl.conf

「noop」は「何もしない=NO OPeration」の意味で、I/O処理は要求順に逐次実施されます。
HDDでは、読み込みと書き込みをそれぞれある程度まとめてから処理するスケジューリングが有効なのですが、SSDではその必要がないためです。

手動でのTRIM処理

どうしても手動でTRIM処理を行いたい場合には、以下の通りにします。

手動でのTRIM処理
fstrim -v /

上記の通りすると、ファイルシステム上で利用していないブロックに対してTRIMコマンドが発行されます。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まさにこれだ
5 (100%)

表示できるメッセージはありません。