Ubuntu で SSD を使う

この記事では、Ubuntu 24.04 LTS および 26.04 LTS で SSD をマウントし、設定を確認・調整する手順を説明します。これらのバージョンでは SSD 向けの基本的な設定は済んでおり、TRIM とマウントオプションを確認することが中心になります。

SSD のマウントと基本的な考え方

SSD でも、パーティションの作成、ファイルシステム(EXT4 が一般的)でのフォーマット、マウントという手順はハードディスクドライブと同じです。SSD の性能と寿命に関わるのは、TRIM とマウントオプションの設定です。

SSD ではデフラグ(デフラグメンテーション)を実行しないでください。SSD はデータの物理的な配置による読み書き速度の差がないため効果がなく、書き込みが増えるだけです。Ubuntu は SSD に対して自動デフラグを行いません。手動で e4defrag などを実行しないようにします。

TRIM 機能について

TRIM は、ファイルが削除されて不要になったブロックを OS が SSD コントローラに通知する仕組みです。SSD はこの情報をもとに内部のガベージコレクションを効率よく行えるため、書き込み速度の低下と書き込み回数の増加を抑えられます。

TRIM の実行方式は 2 種類あります。

Ubuntu 24.04 LTS および 26.04 LTS では、バッチ TRIM が既定で有効です。

既定の TRIM 設定: fstrim.timer(バッチ TRIM)

Ubuntu 24.04 LTS および 26.04 LTS では、fstrim を週に 1 回実行する fstrim.timer既定で有効です。対象は /etc/fstab に記載されたマウント済みファイルシステムです。

有効かどうかは、次のコマンドで確認します。ターミナルを開き、次のコマンドを実行してください。

systemctl status fstrim.timer
systemctl list-timers fstrim.timer

無効になっている場合は、ターミナルを開き、次のコマンドを実行して有効化します。

sudo systemctl enable --now fstrim.timer

手動で今すぐ TRIM を実行して結果を確認する場合は、ターミナルを開き、次のコマンドを実行します。

sudo fstrim -av

週 1 回より頻繁に実行したい場合は、タイマーの設定を変更します。ターミナルを開き、次のコマンドを実行してください。エディタが開いたら、以下の内容を記述して保存します。

sudo systemctl edit fstrim.timer
[Timer]
OnCalendar=
OnCalendar=daily

保存後、ターミナルで次のコマンドを実行して設定を反映します。

sudo systemctl daemon-reload
sudo systemctl restart fstrim.timer

オンライン TRIM(discard オプション)について

/etc/fstabdiscard を指定すると、ファイル削除のたびに TRIM コマンドが送られます。この方式は削除処理のたびに待ち時間が発生するため、書き込みが多い環境では性能が低下することがあります。EXT4 では、TRIM を非同期で発行する discard=async を指定することでこの影響を抑えられます。

オンライン TRIM を使う場合は、fstrim.timer を無効化します。ターミナルを開き、次のコマンドを実行してください。

sudo systemctl disable --now fstrim.timer

/etc/fstab の設定例

システム起動時に SSD を自動マウントする /etc/fstab の記述例です。fstrim.timer を使う前提で、書き込みを減らす noatime を指定しています。

まず、マウントポイントを作成します。ターミナルを開き、次のコマンドを実行してください。

sudo mkdir -p /mnt/my_ssd

次に、対象パーティションのデバイス名と UUID を確認します。ターミナルを開き、次のコマンドを実行してください。

lsblk -f
sudo blkid

確認した UUID を使い、/etc/fstab に次の 1 行を追加します。デバイス名はディスクの接続順で変わることがあるため、UUID で指定します。

# <file system> <mount point> <type> <options> <dump> <pass>
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/my_ssd ext4 defaults,noatime 0 2

オンライン TRIM を使う場合は、オプション部分を defaults,noatime,discard=async と記述し、fstrim.timer を無効化します。

記述後、設定に誤りがないか確認します。ターミナルを開き、次のコマンドを実行してください。エラーが表示されなければ、記述は正しく解釈されています。

sudo mount -a
findmnt /mnt/my_ssd