三星 M2 NVME 每天只在 linux 上进入只读状态,而不是在 Windows 上

Luc*_*lla 6 upgrade partitioning ssd disk fsck

我有一台 Razer Blade Stealth 2016。我安装的第一个 Ubuntu 是 Ubuntu 17.04,使用 2 周后出现此错误。之后,我安装了 16.04并使用了几个月没有任何问题,直到今天产生了同样的错误。我认为这与 ubuntu 更新有关,因为我最近做了一个,今天又做了一个,就在这个问题之前。不过也有可能是巧合。

(我什至做了一些压力测试,通过多次下载 100 多 GB 的数据,并且我的磁盘几乎已满,并且在 16.04 没有更新的情况下我没有遇到这些错误)

在我手动运行 fsck 后,它解决了问题,但一段时间后再次发生。

更新:

它又发生了(17.10.1 全新安装,从我开始这篇文章的那天起我就没有使用任何更新。我注意到了这个问题,因为我试图将我的一个虚拟机保存到磁盘中,它说我的磁盘是只读的.然后我跑了:

lz@lz:/var/log$ touch something
touch: cannot touch 'something': Read-only file system


lz@lz:/var/log$ cat syslog
Jan 29 01:07:39 lz kernel: [62984.375393] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0


lz@lz:/var/log$ dmesg
[62984.375393] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.377374] Aborting journal on device nvme0n1p2-8.
[62984.379343] EXT4-fs (nvme0n1p2): Remounting filesystem read-only
[62984.379516] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.381486] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.383484] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.385469] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.387278] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.389262] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.391252] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[62984.393341] EXT4-fs error (device nvme0n1p2): ext4_find_entry:1442: inode #26607929: comm updatedb.mlocat: checksumming directory block 0
[63285.618078] audit: type=1400 audit(1517195560.393:63): apparmor="DENIED" operation="capable" profile="/usr/sbin/cupsd" pid=22495 comm="cupsd" capability=12  capname="net_admin"
Run Code Online (Sandbox Code Playgroud)

然后我重新启动并做了fsck /dev/nvm...。它问了我很多 inode,我都回答“是”,然后它就停止了。

https://imgur.com/a/cfbPD(这张照片显示了整个输出,但不是很明显) https://imgur.com/a/VFoPB(这个更好,但它减少了一点输出)

这是整个过程的视频:https : //photos.app.goo.gl/8ZHF3Un1BOsRwjaz1

我将按照以下答案的建议应用微码补丁,但我认为这与问题无关,因为这发生在崩溃和幽灵之前的几个月。我什至从未安装过微码更新。

我仍然认为这与我在帖子中描述的问题有关。有人可以给我详细说明它是否已修复,在哪些内核中已修复?我该怎么办?

无论如何,我只是应用了建议的添加更正

nvme_core.default_ps_max_latency_us=5500
Run Code Online (Sandbox Code Playgroud)

到引导参数。去看看系统如何处理它。

更新:每次我安装新系统时,它都会运行良好,直到我决定使用软件更新程序!然后它进入只读模式:(

我试过了nvme_core.default_ps_max_latency_us=250,但没有用

更新:当我安装 Windows 时,一切似乎都正常。甚至基准测试都说一切正常

更新 (03/10/2019)

我仍然有这个问题。它每天发生一次,但在大量使用 ssd 时会发生很多。

我尝试使用全新的三星 960 EVO 2156gb SSD,但问题仍然存在,因此与 SSD 本身无关。然而,我犯了一个错误,买了一个相同品牌和相关型号的产品。我没有测试非三星 SSD。

两种 SSD 在 Windows 上都可以完美运行。我什至做了很多基准测试,这给他们带来了很大的压力。没问题。

我尝试了 ubuntu 16、18、19、Debian 10、Linux Mint。都给同样的问题。有人可以帮我找到问题的根源吗?我在这台电脑上花了很多钱,但没钱买新的。

我现在的 grub 文件:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

Win*_*nix 2

Intel Microcode 2018-01-08 破坏部分系统

2018 年初,当世界著名的 Meltdown 和 Spectre 安全漏洞被公布时,供应商纷纷介入修复。据 Ubuntu 称,当2018 年 1 月 8 日微代码更新破坏了一些系统时,英特尔要求他们降级到较旧的微代码。


列出您当前的微码版本

要查找您当前的微代码版本,请使用:

$ apt list --installed | grep intel-microcode

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

intel-microcode/now 3.20170707.1~ubuntu16.04.0 amd64 [installed,upgradable to: 3.20180108.0+really20170707ubuntu16.04.1]
Run Code Online (Sandbox Code Playgroud)

就我而言,未2018-01-08使用英特尔微码更新,而是使用原始版本。当 Meltdown 补丁发布时,错误开始出现在 2018 年 1 月 4 日的定期更新中。从那时起,我拒绝了所有自动更新,转而手动安装新的主线内核。这就是为什么我有较旧的原始微代码。2017-07-07


降级 Ubuntu 14.04、16.04 和 17.10 的微代码

如果您正在运行2018-01-08Intel Microcode,则必须将其升级到 2018 年 1 月 22 日发布的版本。

可以通过将系统更新到以下软件包版本来纠正该问题:

Ubuntu 17.10:

Ubuntu 16.04 LTS:

Ubuntu 14.04 LTS:

要更新您的系统,请按照以下说明操作: https: //wiki.ubuntu.com/Security/Upgrades

标准系统更新后,您需要重新启动计算机以进行所有必要的更改。

重复上一节中的步骤以检查您的英特尔微码版本

从终端安装微代码

要从终端安装微码而不通过 Ubuntu GUI 设置面板,请使用:

sudo apt update
sudo apt install intel-microcode
Run Code Online (Sandbox Code Playgroud)