web-dev-qa-db-ja.com

Ubuntu 18.04インストールでTRIMは有効になっていますか?

14.10以降、毎週TRIMがデフォルトで有効になっていることを知っています。ソース: TRIMを有効にする方法 しかし、Sudo nano /etc/cron.weekly/fstrimを実行すると空のファイルが返されます。また、tail -n1 /etc/cron.weekly/fstrimは、このファイルが存在しないことを示します。

lsblk -Dを実行すると、DISC-GRANおよびDISC-MAXのゼロ以外の値が返されるため、SSDでTRIMがサポートされます。毎週のTRIMはSSDで実際に有効になっていますか?

Kingston SSDを使用しています

33
m.umar

Trim(discard)は、18.04でデフォルトで毎週実行するように有効になっています。

これは、CRONではなくsystemdを介して管理されるsystemctlサービスです。

fstrimは、破棄操作をサポートするデバイスにマウントされたすべてのファイルシステムで実行するように設定されています。

表示fstrim.timer status

$ systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
   Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
   Active: active (waiting) since Thu 2018-07-05 05:45:11 BST; 4h 42min ago
  Trigger: Mon 2018-07-09 00:00:00 BST; 3 days left
     Docs: man:fstrim

fstrim.timerの開始/停止/再起動
(起動ステータスは変更しません)

$ Sudo systemctl [start/stop/restart] fstrim.timer

fstrim.timerの有効化/無効化
(スタートアップへの追加/スタートアップからの削除、現在のアクティブなステータスは変更しません)

$ Sudo systemctl [enable/disable] fstrim.timer

表示fstrim.timer configuration

$ systemctl cat fstrim.timer
# /lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

表示fstrim.service configuration

$ systemctl cat fstrim.service
# /lib/systemd/system/fstrim.service
[Unit]
Description=Discard unused blocks

[Service]
Type=oneshot
ExecStart=/sbin/fstrim -av

:ExecStart =/sbin/fstrim -av
どこ:
-a、破棄操作をサポートするデバイスにマウントされているすべてのファイルシステムをトリミングします。
-v、詳細な実行。潜在的な破棄のために、ファイルシステムからブロックスタックを介してデバイスに渡されたバイト数を出力します。

関連する表示systemdジャーナルエントリ

$ journalctl -u fstrim.timer
Jul 04 14:18:41 user-laptop systemd[1]: Started Discard unused blocks once a week.
Jul 04 21:59:26 user-laptop systemd[1]: Stopped Discard unused blocks once a week.
etc...

$ journalctl -u fstrim.service
Jun 25 10:59:44 user-laptop systemd[1]: Starting Discard unused blocks...
Jun 25 10:59:48 user-laptop fstrim[955]: /: 92.5 GiB (99335237632 bytes) trimmed
Jun 25 10:59:48 user-laptop systemd[1]: Started Discard unused blocks.
-- Reboot --
Jul 02 04:27:41 user-laptop systemd[1]: Starting Discard unused blocks...
Jul 02 04:27:46 user-laptop fstrim[1032]: /: 92.3 GiB (99150807040 bytes) trimmed
Jul 02 04:27:46 user-laptop systemd[1]: Started Discard unused blocks.
etc...
51
Broadsworde

編集:コメントを読んでください、この答えは2つのメカニズムを混ぜています!

古い答え

@Broadswordeの答えを完成させるために追加する必要がある重要なポイントがあります。

私のラップトップでは、すべてのタイマーとサービスが有効になっていますが、fstrimログエントリがありませんでした(のみ:starting… stopping… reboot… starting…など)。

足りないステップ

マークファイルシステムをdiscardableとする必要があるかもしれません。ファイルシステムが破棄可能としてマークされていない場合、トリムはそれをスキップします[1]。

ファイルシステムを破棄可能としてマークするには、2つのオプションがあります。

1.オプション:tune2fs

Sudo tune2fs -o discard /dev/mapper/ubuntu--vg-root

これにより、破棄オプションがext4デバイスのデフォルトとして設定されます。暗号化を使用しない場合は、代わりに/dev/sdaを試してください。

2.オプション:/etc/fstab

既存のマウントオプションにオプションdiscardを追加または追加してください。たとえば、次のようなものです。

/dev/mapper/ubuntu--vg-root / ext4 discard,relatime,errors=remount-ro 0 1

この後のみ、タイマーサービスはreally何かをします。

脚注

  • [1]実際には、デバイスはTRIM操作をサポートする必要があります。しかし、Linuxでは、これはファイルシステムフラグです。それでも、ファイルシステムが実行されているデバイスは、TRIM操作をサポートする必要があります。デバイスがサポートしているかどうかを確認するには、Sudo hdparm -I /dev/sda | grep -i TRIMを使用します。
2
Ben