说明:也许是个性化的硬件问题,不一定具有代表性。Matebook16s原装的硬盘也是同样的问题。
问题表现:在安装有致钛PC005-1TB硬盘的Matebook16s-2022(i5-12500H)中,UOS v20 1070/Deepin v23 RC2(Linux Kernel 6.6.25-amd64-desktop-hwe)在睡眠唤醒之后,硬盘掉盘。由于目前更换到UOS下工作,所以没有在Deepin v23 正式版中测试。 解决方法:在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT参数中,添加 nvme_core.default_ps_max_latency_us=2000,让硬盘不处于P4状态(深度省电状态)。 参考链接: https://wiki.archlinux.org/title/Solid_state_drive/NVMe https://www.tekbyte.net/fixing-nvme-ssd-problems-on-linux
nvme_core.default_ps_max_latency_us=2000
以下是致钛PC005硬盘支持的电源状态
sudo smartctl -c /dev/nvme0n1 | grep -A7 "Supported Power States" Supported Power States St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat 0 + 9.00W - - 0 0 0 0 0 0 1 + 4.60W - - 1 1 1 1 0 0 2 + 3.80W - - 2 2 2 2 0 0 3 - 0.0450W - - 3 3 3 3 2000 2000 4 - 0.0040W - - 4 4 4 4 15000 15000
脚本:
#!/bin/bash # 问题:在安装有致钛PC005-1TB硬盘的Matebook16s-2022中,UOS v20 1070/Deepin v23 RC2(Linux Kernel 6.6.25-amd64-desktop-hwe)在睡眠唤醒之后,硬盘掉盘。 # 该脚本在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT参数中,添加nvme_core.default_ps_max_latency_us=2000,让硬盘不处于P4状态(深度省电状态)。 # 参考链接: # https://wiki.archlinux.org/title/Solid_state_drive/NVMe # https://www.tekbyte.net/fixing-nvme-ssd-problems-on-linux # 以下是致钛PC005硬盘支持的电源状态 # sudo smartctl -c /dev/nvme0n1 | grep -A7 "Supported Power States" # # Supported Power States # St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat # 0 + 9.00W - - 0 0 0 0 0 0 # 1 + 4.60W - - 1 1 1 1 0 0 # 2 + 3.80W - - 2 2 2 2 0 0 # 3 - 0.0450W - - 3 3 3 3 2000 2000 # 4 - 0.0040W - - 4 4 4 4 15000 15000 echo "matebook16s解决NVME硬盘睡眠唤醒掉盘的问题-root.sh" # 检查脚本是否以sudo权限执行 if [ "$EUID" -ne 0 ]; then echo "请以sudo权限执行此脚本" exit 1 fi # 检查系统中是否存在NVMe硬盘 NVME_DISKS=$(ls /dev/nvme*n1 2> /dev/null) if [ -z "$NVME_DISKS" ]; then echo "系统中不存在NVMe硬盘,退出" exit 1 fi # 显示每个NVMe硬盘的信息 for DISK in $NVME_DISKS; do echo -e "\033[35m硬盘信息:$DISK\033[0m" sudo smartctl -c $DISK | grep -A7 "Supported Power States" done # 读取GRUB_CMDLINE_LINUX_DEFAULT的值 GRUB_CMDLINE=$(grep -oP '^GRUB_CMDLINE_LINUX_DEFAULT="\K[^"]+' /etc/default/grub) # 检查nvme_core.default_ps_max_latency_us参数是否存在 if [[ $GRUB_CMDLINE =~ nvme_core.default_ps_max_latency_us=([0-9]+) ]]; then # 如果存在,检查其值是否为2000 if [ ${BASH_REMATCH[1]} == 2000 ]; then echo "nvme_core.default_ps_max_latency_us=2000" echo "grub参数已正确设置,无需调整..." exit 0 else echo "当前参数nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]},将其改为2000" # 替换参数值 GRUB_CMDLINE=${GRUB_CMDLINE//nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]}/nvme_core.default_ps_max_latency_us=2000} # 更新/etc/default/grub文件 sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub # 更新grub配置 sudo grub-mkconfig -o /boot/grub/grub.cfg echo "请重启系统,来让参数生效..." fi else echo "参数nvme_core.default_ps_max_latency_us=2000不存在,添加该参数" # 备份grub文件 sudo cp /etc/default/grub /etc/default/grub.bak echo "已备份原始grub文件为grub.bak" # 添加参数 GRUB_CMDLINE="$GRUB_CMDLINE nvme_core.default_ps_max_latency_us=2000" # 更新/etc/default/grub文件 sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub # 更新grub配置 sudo grub-mkconfig -o /boot/grub/grub.cfg echo "请重启系统,来让参数生效...." fi
No replies yet
Popular Ranking
Popular Events
说明:也许是个性化的硬件问题,不一定具有代表性。Matebook16s原装的硬盘也是同样的问题。
问题表现:在安装有致钛PC005-1TB硬盘的Matebook16s-2022(i5-12500H)中,UOS v20 1070/Deepin v23 RC2(Linux Kernel 6.6.25-amd64-desktop-hwe)在睡眠唤醒之后,硬盘掉盘。由于目前更换到UOS下工作,所以没有在Deepin v23 正式版中测试。
解决方法:在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT参数中,添加
nvme_core.default_ps_max_latency_us=2000
,让硬盘不处于P4状态(深度省电状态)。参考链接:
https://wiki.archlinux.org/title/Solid_state_drive/NVMe
https://www.tekbyte.net/fixing-nvme-ssd-problems-on-linux
以下是致钛PC005硬盘支持的电源状态
脚本: