USBブートのLinux(Ubuntu/Debian)でTRIMをする方法

USBブートのLinux(Ubuntu/Debian)でTRIMをする方法

LinuxといえばUSBメモリや外付けSSDにインストールをして持ち歩いている方もいると思いますが
使用をしているうちに重くなるという経験はないでしょうか?

私の場合にもUSBメモリにインストールしたLinuxがどんどん重たくなる経験をしたのですが
どうやらこれはTRIMを実行することで一発解決をする事が可能なようです。

まずはUSBメモリ(外付けSSD)がTRIMに対応をしているかチェック

sudo hdparm -I /dev/sdx | grep -i trim

上記のコマンドを打ち込んで(sdxの部分は適宜書き換えてください)
「Data Set Management TRIM supported 」
というように表示をされればオッケーです。

表示されない場合には、残念ながらUSBメモリや外付けSSD自体が
TRIMに対応していないのでTRIMは出来ません
買い換えるしか解決策はなさそうです。

そもそもTRIMに対応しているUSBメモリなんて存在するの?

読者の中にはTRIMといえばSSDの話であって
USBメモリにはTRIMという機能が備わっていないと指摘する方もいると思います。

実は最近の超高速USBメモリは、中身がSSDになっているのでTRIMをする事が可能となっています。

具体的には下記の機種です。(筆者が実際に購入をしてTRIM可能なことを確認済)

他にもSDCZ80という機種もTRIMに対応しています。
以降はUSBメモリ本体がSSDに対応していることを前提として話をすすめていきます。

普通にTRIMをすることは出来ない

筆者が最初に試したのは、「SSD TRIM Linux」などで必ずHITする

sudo fstrim -v /

というコマンドを打ち込むというものでしたが
最初の調査でTRIMをサポートしていると表示されたにもかかわらず
コマンドを打ち込むと
「the discard operation is not supported」と表示されてTRIMに失敗してしまいました。

どうやらUSBメモリ(外付けSSD)でTRIMをするにはひと工夫が必要なようです。

手動でTRIMという荒業が必要・・・らしい

途方にくれて検索を続けていると、下記のような神記事を発見

SSD on USB 3.0 3.1 with TRIM support: Windows & Linux

With the default kernel, the fstrim linux command is not supported on USB devices. So by default in Ubuntu you do not have the automatic TRIM of your USB SSD. However, you can manually trim (or possibly setting up a cron job) by using the wiper.sh script located in

デフォルトのカーネルでは、fstrim linuxコマンドはUSBデバイスではサポートされていません。 したがって、Ubuntuのデフォルトでは、あなたのUSB SSDの自動TRIMを持っていません。 ただし、次の場所にあるwiper.shスクリプトを使用して、手動でTRIM(または場合によってはcronジョブの設定)することもできます。

>デフォルトのカーネルでは、fstrim linuxコマンドはUSBデバイスではサポートされていません。

なんだってー!!!
そうです、実はデフォルトのカーネルではUSBデバイスでTRIMをサポートすることを想定していないようなのです。
という訳で手動でTRIMをする方法を見てみましょう。

手動でTRIMをする方法(自己責任でお願いします)

早速先程の記事に従って手動でのTRIMに挑戦をしてみましょう!!

まずは「hdparm」をインストールします、aptでインストールしてください。

インストールが完了すると
「/usr/share/doc/hdparm/wiper」の配下に「wiper.sh.gz」というファイルが作成されているので
そいつを解凍して中にある「wiper.sh」を取り出しましょう。

あとは取り出したスクリプトを手動で動かすことでTRIMが可能です。

sudo ./wiper.sh /dev/sdXX --commit

一応上記のサイトに注意書きがあったので
サイトが404になってしまったとき用にこちらにも引用をしておきます。

where you must replace sdXX with the partitions on your USB SSD (e.g sdb1, check the correct one via Disks application). Just run this command once a week. However, it is not necessary but it is advisable to execute that command on the unmounted partitions, then via a live system if you have installed and started Ubuntu directly from the SSD on USB.

ここでは、sdXXをUSB SSD上のパーティション(たとえば、sdb1、ディスクアプリケーション経由で正しいものをチェック)で置き換える必要があります。 このコマンドは1週間に1回だけ実行してください。 ただし、必ずしも必要ではありませんが、USB上のSSDから直接Ubuntuをインストールして起動している場合は、マウントされていないパーティション上でそのコマンドを実行し、次にライブシステム経由でコマンドを実行することをお勧めします。

みなさんも是非ノロノロになった
USB(外付けSSD)上のLinuxをTRIMして爆速化してみてください!!
(もちろん実行は自己責任でお願いします)