nvme fstrimがLinuxでクラッシュし、systemctlを無効にしても役に立ちません。

nvme fstrimがLinuxでクラッシュし、systemctlを無効にしても役に立ちません。

M2 nvmeディスクから起動したLinux(Ubuntu 18、カーネル4.15)デスクトップがあります。

週に一度、真夜中に衝突が発生します。 /var/log/syslog.*の関連ログファイルの出力は次のとおりです。

Jul 16 00:00:00rabbitcruncher systemd[1]: 未使用のチャンクを捨て始めます。

7月16日 00:00:00 Rabbitcruncher カーネル: [559644.954267] nvme 0000:41:00.0: AMD-Vi: ロギングイベント [IO_PAGE_FAULT ドメイン=0x0014 アドレス=0x0000000000

7月16日 00:00:00rabbitcruncher カーネル: [559644.975805] nvme nvme0: 非同期イベント結果 00010300

7月16日 00:00:30rabbitcruncher カーネル: [559675.338834] nvme nvme0: コントローラがリセットされます。 CSTS=0x3、PCI_STATUS=0x1010

7月16日 00:00:31 Rabbitcruncher カーネル: [559675.621182] nvme 0000:41:00.0: AMD-Vi: ロギングイベント [IO_PAGE_FAULT ドメイン=0x0014 アドレス=0x0000000000

7月16日 00:01:01 Rabbitcruncher カーネル: [559706.346300] nvme nvme0: コントローラがリセットされます。 CSTS=0x3、PCI_STATUS=0x1010

Jul 16 00:01:01 Rabbitcruncher カーネル: [559706.378641] nvme nvme0: 名前空間を識別できませんでした。

7月16日 13:39:24 Rabbitcruncher systemd-fsck[962]: /dev/nvme0n1p1: 12ファイル、1186/130812クラスタ

7月16日 13:39:24 Rabbitcruncher カーネル: [1.052853] nvme nvme0: pci 機能 0000:41:00.0

7月16日 13:39:24 Rabbitcruncher カーネル: [1.285806] nvme0n1: p1 p2

7月16日 13:39:24rabbitcruncher カーネル: [5.036910] EXT4-fs(nvme0n1p2): ソートされたデータモードを使用してマウントされたファイルシステム。オプション:(空)

7月16日 13:39:24rabbitcruncher カーネル: [5.318742] EXT4-fs(nvme0n1p2): 再インストールします。選択: エラー=remount-ro

「使用しないブロックを破棄する」とは、Linuxがfstrimを実行しようとしていることを意味することを理解しています。しかし、私はsystemctlを使ってfstrimを無効にしましたが、それでも起こります!

systemctl 状態 fstrim.service

● fstrim.service - 未使用のブロックを破棄します。

ロード済み:ロード済み(/lib/systemd/system/fstrim.service;静的;ベンダーデフォルト:有効)

アクティブ:非アクティブ(死)

この問題を解決する方法がわかりません。誰でもアドバイスできますか?

答え1

あなたのUbuntukvm仮想マシンで実行AMD-Viしたがって、実行しないでくださいfstrim

サービスは以下fstrimに基づいて実行されます。timerroot

rm /var/lib/systemd/timers/stamp-fstrim.timer
systemctl stop fstrim.service fstrim.timer
systemctl disable fstrim.service fstrim.timer
systemctl mask fstrim.service fstrim.timer

答え2

あなたの問題はこれに関連しているようです一つTRIMmingがトリガされるたびに発生する競合を説明しますfstrim.timer。これはAMDでバイパスできる最近のカーネル問題のようですiommu=soft(処方箋を見つけました)。ここ理由の詳細はありません) - NVME SSDのベストプラクティスに従って、fstrim.timerM.2 NVMEディスクを再度有効にできるようになりました。

私はIntelでも同じ問題に遭遇したと思います。 - 報告しました。ここ- そして、この問題をどのように回避できますか(intel_iommu=ptIntelと同じiommu=soft)。

問題がIOMMUに関連していることを確認した後、動作を変更する方法を見つけ始めました。ここPCIパススルーのためのホスト構成に関するベストプラクティスに関するRed Hatのドキュメントで、これに触れてintel_iommu=pt問題を解決しました。

私は現在この設定の副作用(存在する場合)を知りません。

関連情報