Замръзване на Linux заради NVMe SSD е проблем, с който се сблъсках на два различни сървъра. Симптомите изглеждаха като хардуерен дефект или проблем с ядрото, но причината се оказа свързана с енергоспестяващите режими на NVMe устройството.
Как изглежда проблемът?
Системата работи напълно нормално:
- Уеб сайтовете са достъпни
- SSH връзките работят
- Натоварването е нормално
- Няма грешки в RAM паметта
След определен период от време обаче:
- SSH спира да отговаря
- Сайтовете стават недостъпни
- Ping понякога работи, понякога не
- Няма видимо високо CPU натоварване
- Единственият изход е принудителен рестарт
Най-лошото е, че проблемът се появява случайно и често е трудно да бъде възпроизведен.
Първоначалните подозрения
Когато подобен проблем се появи на Linux, обикновено започваме да търсим причината в:
- RAM паметта
- SSD диска
- Процесора
- Linux ядрото
- Захранването
- Драйверите
В моя случай обаче проблемът се появи на два напълно различни сървъра, което ме накара да търся по-задълбочено.
Истинската причина
След продължително разследване се оказа, че виновникът са енергоспестяващите режими на NVMe SSD устройствата.
Някои NVMe дискове и някои комбинации от BIOS, контролери и Linux ядра не работят коректно с най-агресивните режими за пестене на енергия.
В определени ситуации SSD устройството може да премине в дълбок енергоспестяващ режим и след това да не се събуди коректно.
Тъй като операционната система разчита постоянно на диска, резултатът често изглежда като пълен срив на машината.
Решението
Отворете GRUB конфигурацията:
sudo nano /etc/default/grub
Намерете реда:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
или подобен.
Добавете параметъра:
nvme_core.default_ps_max_latency_us=0
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvme_core.default_ps_max_latency_us=0"
Запазете файла.
След това изпълнете:
sudo update-grub
и рестартирайте системата:
sudo reboot
Какво прави този параметър?
Параметърът:
nvme_core.default_ps_max_latency_us=0
забранява използването на агресивните енергоспестяващи режими на NVMe устройството.
Това означава:
- Малко по-висока консумация на енергия
- По-стабилна работа
- По-малък риск от случайни замръзвания
За сървъри това почти винаги е разумен компромис.
Как да проверите дали параметърът е активен?
След рестарт:
cat /proc/cmdline
Трябва да видите:
nvme_core.default_ps_max_latency_us=0
в списъка с параметри на ядрото.
Резултатите
След добавянето на този параметър проблемът изчезна напълно и на двата сървъра.
Системите започнаха да работят стабилно без случайни замръзвания, прекъсвания на SSH връзките или недостъпни сайтове.
Кога този метод може да помогне?
Това решение си заслужава да бъде изпробвано ако:
- Използвате NVMe SSD диск
- Linux системата замръзва без причина
- Не откривате проблеми с RAM паметта
- Няма грешки в логовете (защото грешките не стигат до там)
- Проблемът се появява след периоди на ниска активност
Заключение
Ако вашият Linux сървър или работна станция страда от случайни замръзвания, не подценявайте възможността проблемът да е свързан с NVMe енергоспестяващите режими.
Добавянето на параметъра:
nvme_core.default_ps_max_latency_us=0
отнема по-малко от минута и в много случаи може да реши проблем, който иначе би ви коствал часове или дори дни диагностика.
Понякога най-трудните за откриване проблеми имат най-простите решения.
SSD дисковете се превърнаха в стандарт както за домашните компютри, така и за сървърите. Те са значително по-бързи от традиционните твърди дискове (HDD), но много потребители продължават да се питат:
Колко дълго живее един SSD диск и как можем да разберем кога започва да се износва?
Добрата новина е, че съвременните SSD дискове са много по-надеждни, отколкото бяха преди години. Още по-хубавото е, че под Linux можем лесно да следим тяхното здраве и да реагираме навреме при проблем.
Колко дълго живее един SSD диск?
За разлика от HDD дисковете, SSD устройствата нямат движещи се части. Вместо това използват NAND памет, която има ограничен брой цикли на запис.
Производителите обикновено посочват показател, наречен TBW (Terabytes Written).
Например:
- Samsung 990 PRO 4TB – до 2400 TBW
- Samsung 990 PRO 2TB – до 1200 TBW
- Samsung 990 PRO 1TB – до 600 TBW
Това означава, че дискът може да запише огромно количество данни преди да достигне проектния си лимит.
За повечето потребители и бизнес сайтове SSD дискът може да работи между 5 и 10 години, а често и повече.
Какво представлява SMART?
Повечето SSD дискове поддържат технологията SMART (Self-Monitoring, Analysis and Reporting Technology).
Тя събира информация за:
- Температурата на диска
- Общия обем записани данни
- Общия обем прочетени данни
- Износването на клетките
- Грешки при четене и запис
- Очаквания остатъчен живот
Под Linux можем да получим тази информация само с няколко команди.
Инсталиране на smartmontools
Ubuntu и Debian:
sudo apt update
sudo apt install smartmontools
Проверка дали услугата работи:
sudo systemctl status smartd
Как да проверим здравето на SSD диск?
Първо намираме устройството:
lsblk
След това:
sudo smartctl -a /dev/nvme0n1
или при SATA диск:
sudo smartctl -a /dev/sda
Командата ще покаже подробна информация за състоянието на устройството.
Най-важните показатели
Percentage Used
При NVMe дисковете:
Percentage Used: 5%
Това означава, че са използвани приблизително 5% от проектния живот на SSD диска.
Data Units Written
Показва колко данни са записани върху устройството от началото на експлоатацията му.
Temperature
Пример:
Temperature: 41°C
За повечето SSD устройства нормалните работни температури са между 30°C и 60°C.
Critical Warning
Ако виждате:
Critical Warning: 0
това е добър знак.
Ненулева стойност може да показва проблем.
Как да следим SSD диска автоматично?
Можете да създадете Bash скрипт, който ежедневно проверява състоянието на устройството.
Пример:
#!/bin/bash
SSD="/dev/nvme0n1"
HEALTH=$(smartctl -H $SSD | grep "PASSED")
if [ -z "$HEALTH" ]; then
echo "ВНИМАНИЕ: SSD дискът може да има проблем!" \
| mail -s "SSD Alert" admin@example.com
fi
Този скрипт може да се стартира автоматично чрез cron.
Кога трябва да сменим SSD диска?
Смяната е препоръчителна при:
- SMART предупреждения
- Постоянно високи температури
- Рязко увеличаване на грешките
- Износване над 80-90%
- Необичайно забавяне на работата
Важно е да се подчертае, че SSD дисковете рядко отказват внезапно без предварителни признаци.
Съвременните SSD дискове са изключително надеждни и могат да работят години наред без проблеми.
Най-добрият подход е да не чакате устройството да се повреди, а редовно да наблюдавате неговото състояние чрез SMART данните.
Под Linux това отнема само няколко секунди и може да ви спести загуба на ценни данни, престой на сървъра и неочаквани разходи.
Редовният мониторинг, добрата охлаждаща система и навременните резервни копия остават най-добрата защита за всеки SSD диск.
