1143 字
6 分钟

解决三星 990 Pro SSD ext4 文件系统只读问题

问题背景#

三星 990 Pro SSD 的 Linux 系统上遇到了 ext4 文件系统突然变为只读(read-only)的问题,或者系统日志中出现掉盘现象,但硬件检测工具却没有报告任何错误,那么你可能遇到了三星 SSD 的一个已知问题。

这个问题的典型症状包括:

  • 文件系统突然变为只读模式
  • 无法写入任何数据
  • 系统日志中可能出现 I/O 错误
  • 使用 smartctl 等工具检查硬盘健康状态显示正常
  • 特别是固件版本为 4B2QJXD7 的三星 990 Pro 更容易出现此问题 或者之前的 版本。

具体表现为以下图片类似的症状,(重启服务器后症状消失,类似掉盘)

Ext4 只读问题

WARNING

在进行任何操作之前,请务必备份重要数据!虽然这个问题通常不会导致数据丢失,但安全起见还是要做好备份。

问题排查#

1. 检查文件系统状态#

首先确认文件系统是否真的变为只读:

Terminal window
# 查看挂载状态
mount | grep "ro,"
# 尝试创建测试文件
touch /path/to/mountpoint/test.txt

如果看到 Read-only file system 错误,说明文件系统确实变为只读了。

2. 查看系统日志#

检查系统日志以获取更多信息:

Terminal window
# 查看内核日志
dmesg | grep -i "error\|ext4\|nvme"
# 查看系统日志
journalctl -xe | grep -i "error\|ext4\|nvme"

3. 检查 SSD 信息#

查看 SSD 的型号和固件版本:

Terminal window
# 查看 NVMe 设备信息
sudo nvme list
# 查看详细信息
sudo nvme id-ctrl /dev/nvme0
# 使用 smartctl 查看
sudo smartctl -a /dev/nvme0

如果你的设备是三星 990 Pro,并且固件版本是 4B2QJXD7 或类似版本,那么很可能是遇到了三星 SSD 的电源管理 bug。

解决方案#

这个问题有两个主要的解决方案,建议先尝试方案二(内核参数修复),因为它更简单且立即生效。如果问题依然存在,再考虑更新固件。

方案一:更新 SSD 固件#

三星为 Windows 用户提供了 Samsung Magician 软件,但 Linux 用户可以使用三星提供的可启动 ISO 镜像来更新固件。

步骤 1:下载固件#

访问三星官方固件下载页面:

https://semiconductor.samsung.com/consumer-storage/support/tools/

找到适合你的 SSD 型号的最新固件 ISO 镜像并下载。

步骤 2:提取并运行固件更新工具#

你不需要刻录 CD 或制作启动 U 盘,可以直接在 Linux 系统中提取并运行:

Terminal window
# 下载 ISO 镜像(替换为实际的下载链接)
curl -OL https://semiconductor.samsung.com/.../firmware.iso
# 提取 initrd
bsdtar -xf firmware.iso initrd
# 提取 root 文件系统
bsdtar -xf initrd root
# 运行固件更新工具
sudo ./root/fumagician/fumagician

Upgrade Firmware 1

Upgrade Firmware 2

步骤 3:重启系统#

固件更新完成后,需要重启系统使更新生效:

Terminal window
sudo reboot

方案二:内核参数修复(推荐)#

这是一个更简单且经过验证的永久性解决方案。问题的根源是三星 SSD 的电源管理功能在 Linux 下存在兼容性问题,通过禁用 NVMe 电源状态管理可以彻底解决。

TIP

这个方案已经在多个受影响的系统上验证有效,是最推荐的解决方法。

步骤 1:编辑 GRUB 配置#

Terminal window
sudo nano /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,在引号内添加以下参数:

nvme_core.default_ps_max_latency_us=0

修改后的示例:

Terminal window
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=0"

步骤 2:更新 GRUB 配置#

Terminal window
# Debian/Ubuntu 系统
sudo update-grub
# RHEL/CentOS/Fedora 系统
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Arch Linux 系统
sudo grub-mkconfig -o /boot/grub/grub.cfg

步骤 3:重启系统#

Terminal window
sudo reboot

步骤 4:验证参数已生效#

重启后,验证内核参数是否已经生效:

Terminal window
cat /proc/cmdline | grep nvme_core

你应该能看到 nvme_core.default_ps_max_latency_us=0 出现在输出中。

image-20260121103343206

问题原因#

这个问题是三星 SSD 在 Linux 系统下的一个老问题的复现。多年来,不同型号的三星 SSD(包括 970 EVO、980 Pro 等)都曾出现过类似的问题。

根本原因是三星 SSD 的电源状态管理(Power State Management)功能与 Linux 内核的 NVMe 驱动存在兼容性问题。当 SSD 进入某些电源状态时,可能会导致 I/O 超时,进而触发文件系统的保护机制,将文件系统切换为只读模式以防止数据损坏。

通过设置 nvme_core.default_ps_max_latency_us=0,我们禁用了 NVMe 设备的自动电源状态切换(APST),强制 SSD 保持在高性能状态,从而避免了这个问题。

参考资料#

解决三星 990 Pro SSD ext4 文件系统只读问题
https://catcat.blog/2026/01/samsung-990-pro-ext4-readonly-fix
作者
猫猫博客
发布于
2026-01-21
许可协议
CC BY-NC-SA 4.0