我不知道如何在全新的系统中识别我的 NVMe 磁盘。
无论我使用哪个发行版,dmesg 输出都是相同的:(Live CD)
xubuntu@xubuntu:~$ dmesg | grep -i nvme
[ 5.007954] nvme nvme0: pci function 0000:08:00.0
[ 5.008077] nvme nvme1: pci function 0000:09:00.0
[ 5.224407] nvme nvme0: missing or invalid SUBNQN field.
[ 5.224413] nvme nvme1: missing or invalid SUBNQN field.
[ 5.496248] nvme1n1: detected capacity change from 240057409536 to 0
[ 5.612128] nvme nvme1: failed to set APST feature (-19)
[ 5.660221] nvme0n1: detected capacity change from 240057409536 to 0
[ 5.896172] nvme nvme0: failed to set APST feature (-19)
[ 13.921911] Modules linked in: snd_hda_codec_hdmi cmac bnep arc4 snd_hda_codec_realtek iwlmvm edac_mce_amd snd_hda_codec_generic kvm snd_hda_intel mac80211 snd_hda_codec snd_hda_core irqbypass snd_hwdep snd_pcm crct10dif_pclmul btusb crc32_pclmul ghash_clmulni_intel btrtl btbcm pcbc btintel snd_seq_midi bluetooth snd_seq_midi_event iwlwifi snd_rawmidi aesni_intel aes_x86_64 snd_seq crypto_simd joydev input_leds glue_helper cryptd cfg80211 ecdh_generic snd_seq_device snd_timer snd soundcore ccp wmi_bmof k10temp shpchp mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 overlay nls_utf8 isofs dm_mirror dm_region_hash dm_log uas usb_storage hid_generic usbhid hid nouveau mxm_wmi video ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops igb drm dca i2c_piix4 nvme
[ 13.921933] i2c_algo_bit ahci ptp nvme_core pps_core libahci gpio_amdpt wmi gpio_generic
我能找到的唯一实例invalid SUBNQN field
是原始 C 源代码中的文字错误。
驱动器为 XPG SX8200 PCIe NVMe Gen3x4,主板为 Asrock x399 Taichi + 1900X TR
答案1
我最近刚刚将 SX8200 添加到现有系统(安装在 SATA SSD 上),但无法正确识别新驱动器。我在 X399 Taichi 上有一个非常相似的设置,并且在 dmesg 中看到了相同的错误。我使用的是 Ubuntu 18.04.1,内核为 4.15.0-36-generic。
我不知道是否有适当的修复方法,但我能够使用与某些三星驱动器相同的解决方法来解决一些错误。您可以尝试在内核启动命令行中添加以下参数:
nvme_core.default_ps_max_latency_us=0
据我了解,这将禁用 APST,这是一项省电功能。我没有尝试使用更大的值,也许你可以避免错误并仍然获得一些效率,但我还没有使用它。
在此解决方法之后,我仍然遇到其他错误,但 APST 错误消失了,驱动器似乎可以工作。我能够挂载它并读取文件(我之前在 Windows 中将其格式化为 NTFS)。
答案2
这可能是由内核/NVMe 固件中的类似错误造成的: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1803692
首先尝试更新 SSD / NVMe 的固件。对于那些遇到英特尔驱动器问题的人,这里有一个快速指南:
使用英特尔 SSD 数据中心工具 (DCT) 进行固件更新 https://downloadcenter.intel.com/search?keyword=SSD+Firmware+Update+Tool
# Download and install DCT
wget https://downloadmirror.intel.com/28999/eng/Intel_SSD_Data_Center_Tool_3.0.20_Linux.zip -O /tmp/Intel_SSD_Data_Center_Tool_3.0.20_Linux.zip
unzip -d /tmp /tmp/Intel_SSD_Data_Center_Tool_3.0.20_Linux.zip
sudo dpkg -i /tmp/isdct_3.0.20-1_amd64.deb
# show drive data
isdct show -intelssd
# update 1st drive
isdct load -intelssd 0
reboot
# update second drive
isdct load -intelssd 1
答案3
此处出现类似错误,但驱动器似乎工作正常。发现这也证实了作为参考https://forums.gentoo.org/viewtopic-t-1106388-start-0.html