Linux(Ubuntu 18、カーネル4.15)デスクトップをM2nvmeディスクから起動しています。
週に一度、真夜中頃にクラッシュします。 /var/log/syslog.*から出力される関連ログファイルは以下のとおりです。
7月16日00:00:00rabbitcruncher systemd [1]:未使用のブロックの破棄を開始しています...
7月16日00:00:00rabbitcruncherカーネル:[559644.954267] nvme 0000:41:00.0:AMD-Vi:イベントログ[IO_PAGE_FAULTドメイン= 0x0014アドレス= 0x0000000000000000フラグ= 0x0000]
7月16日00:00:00rabbitcruncherカーネル:[559644.975805] nvme nvme0:非同期イベント結果000010300
7月16日00:00:30rabbitcruncherカーネル:[559675.338834] nvme nvme0:コントローラーがダウンしています。リセットされます:CSTS = 0x3、PCI_STATUS = 0x1010
7月16日00:00:31rabbitcruncherカーネル:[559675.621182] nvme 0000:41:00.0:AMD-Vi:イベントログ[IO_PAGE_FAULTドメイン= 0x0014アドレス= 0x0000000000000000フラグ= 0x0000]
7月16日00:01:01rabbitcruncherカーネル:[559706.346300] nvme nvme0:コントローラーがダウンしています。リセットされます:CSTS = 0x3、PCI_STATUS = 0x1010
7月16日00:01:01rabbitcruncherカーネル:[559706.378641] nvme nvme0:名前空間の識別に失敗しました
7月16日13:39:24rabbitcruncher systemd-fsck [962]:/ dev/nvme0n1p1:12ファイル、1186/130812クラスター
7月16日13:39:24rabbitcruncherカーネル:[1.052853] nvme nvme0:pci関数0000:41:00.0
7月16日13:39:24rabbitcruncherカーネル:[1.285806] nvme0n1:p1 p2
7月16日13:39:24rabbitcruncherカーネル:[5.036910] EXT4-fs(nvme0n1p2):順序データモードでマウントされたファイルシステム。オプション:(null)
7月16日13:39:24rabbitcruncherカーネル:[5.318742] EXT4-fs(nvme0n1p2):再マウント。オプション:errors = remount-ro
「未使用のブロックを破棄する」とは、Linuxがfstrimを実行しようとしていることを意味することを理解しています。ただし、systemctlを使用してfstrimを無効にしましたが、それでも発生します。
systemctl status fstrim.service
●fstrim.service-未使用のブロックを破棄します
ロード済み:ロード済み(/lib/systemd/system/fstrim.service;静的;ベンダープリセット:有効)
アクティブ:非アクティブ(デッド)
私はこの問題を解決するために何をすべきか途方に暮れています。誰かアドバイスをいただけますか?
あなたのUbuntuはkvm
仮想マシン内で AMD-Vi
したがって、fstrim
を実行しないでください。
fstrim
サービスはtimer
で実行されるため、root
:
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
あなたの問題はこれに関連しているようです one _fstrim.timer
_によってTRIMmingがトリガーされるたびにクラッシュを説明します。最近のカーネルの問題のようですが、AMDでは_iommu=soft
_で回避できます(NVMEのベストプラクティスに従って、処方箋を見つけました ここ 原因に関する詳細はあまりありません) SSD、M.2 NVMEディスクで_fstrim.timer
_を再度有効にできるようになりました。
私は(私が思うに)Intelで同じ問題に噛まれました-私はそれを報告しました ここ -私が問題を回避した方法と一緒に(_intel_iommu=pt
_、これは_iommu=soft
_)。
問題がIOMMUに関係していると決心した後、私はその動作を変更する方法を探し始めました。それが私が発見した方法です ここ PCIパススルー用にホストを構成するためのベストプラクティスに関するRedHatドキュメント-ややわずかに関連する問題-私にとっては問題を解決する_intel_iommu=pt
_に言及しています。
私は現在、そのような設定の副作用があるとしても、それを認識していません。