Ubuntu で SSD を使う
この記事では、Ubuntu 24.04 環境でSSDをマウントし、最適な設定を行うための基本的な手順と注意点について解説します。Ubuntu 24.04ではSSDに対する基本的な最適化が適用済みですが、いくつかの設定を確認・調整することで、より快適に利用できます。
SSDのマウントと基本的な考え方
SSDを使用する際も、パーティション作成、ファイルシステム(一般的にEXT4が推奨されます)によるフォーマット、マウントという基本的な手順は、従来のハードディスクドライブと同様です。 ただし、SSDの性能を最大限に引き出し、寿命を延ばすためには、特にTRIM機能とマウントオプションについて正しく理解し設定することが重要です。
SSDに対してデフラグ(デフラグメンテーション)を実行することは、効果がないだけでなく、不要な書き込みを発生させ寿命を縮めるため、絶対に避けてください。
TRIM機能について
TRIMは、OSがファイルシステムからファイルを削除した際に、そのファイルが使用していたブロックが不要になったことをSSDコントローラに通知する仕組みです。これにより、SSDは内部で効率的にデータ配置の最適化(ガベージコレクション)を行い、書き込み速度の低下を防ぎ、SSD自体の寿命を延ばす効果が期待できる重要な機能です。
TRIMを有効にする方法には、主に以下の2種類があります。
- バッチTRIM (推奨): `fstrim`コマンドをタイマーで定期的に実行する方法。
- オンラインTRIM: マウントオプションで`discard`を指定する方法。
Ubuntu 24.04では、次に説明するバッチTRIMがデフォルトで有効になっています。
推奨されるTRIM設定: `fstrim.timer` (バッチTRIM)
Ubuntu 24.04を含む近年のバージョンでは、`fstrim`コマンドを定期的に実行する`fstrim.timer`サービスがデフォルトで有効になっています。これは通常、週に一度、システムがアイドル状態のときにまとめてTRIMコマンドを送信する方式(バッチTRIM)です。
この方法は、ファイル削除の都度TRIMを実行するオンラインTRIM(`discard`オプション)と比較して、システムへの瞬間的な負荷が少なく、多くの環境で効率的とされています。そのため、特別な理由がない限り、Ubuntu 24.04ではデフォルトの`fstrim.timer`を使用することが推奨されます。`fstrim.timer`が有効であれば、`/etc/fstab`で`discard`オプションを指定する必要はありません。
なお、より頻繁なTRIM実行を希望する場合、設定を変更して`fstrim.timer`を日次(毎日)実行にすることも可能です(通常は週次で十分です)。
オンラインTRIM (`discard`オプション) について
`/etc/fstab`で`discard`オプションを指定すると、ファイル削除時に即座にTRIMコマンドがSSDへ送信されます(オンラインTRIM)。しかし、この方法はSSDやシステムによってはパフォーマンスに悪影響を与える可能性があり、現在では一般的に推奨されません。
もし特定の理由でオンラインTRIMを使用したい場合は、`/etc/fstab`に`discard`オプションを記述します。ただし、その場合は必ずデフォルトで有効になっている`fstrim.timer`を無効化してください。両方を有効にするとTRIMが過剰に実行される可能性があります。
`fstrim.timer`を無効化するコマンド:
sudo systemctl disable fstrim.timer
sudo systemctl stop fstrim.timer
推奨される `/etc/fstab` 設定例
システムの起動時にSSDを自動マウントするための`/etc/fstab`の記述例です。ここでは、デフォルトの`fstrim.timer`を使用することを前提とし、SSDへの不要な書き込みを減らす`noatime`オプションを追加しています。
#
/dev/sdb1 /mnt/my_ssd ext4 defaults,noatime 0 2
- `/dev/sdb1`: 対象となるSSDのパーティションデバイス名(環境に合わせて変更してください)。`lsblk`コマンドなどで確認できます。
- `/mnt/my_ssd`: マウントポイントのディレクトリ(事前に`sudo mkdir /mnt/my_ssd`などで作成しておく必要があります)。
- `ext4`: ファイルシステムのタイプ。
- `defaults,noatime`: マウントオプション。
- `defaults`: 標準的なオプション群(`rw`, `suid`, `dev`, `exec`, `auto`, `nouser`, `async`)を指定します。これには`relatime`(近年アクセス時刻の更新を抑制するオプション)が含まれることが多いです。
- `noatime`: ファイルやディレクトリへのアクセス時刻(atime)の更新を完全に無効にします。これによりSSDへの書き込み頻度が減り、パフォーマンス向上と寿命延長に繋がります。`relatime`よりも効果が高いですが、アクセス時刻に依存する一部の古いアプリケーション(例: muttなどの一部メールクライアント)で問題が発生する可能性はゼロではありません(通常は問題ありません)。
- `0`: dumpオプション(ファイルシステムのバックアップに関する設定。通常は0)。
- `2`: fsck(ファイルシステムチェック)の順序。ルートファイルシステム(/)以外は通常2を指定します(ルートは1)。
注意: もし前述の通り`discard`オプションを使用する場合は、`/etc/fstab`のオプション部分を`defaults,noatime,discard`のように記述し、かつ`fstrim.timer`を無効化してください。