Скрипт который следит за здоровьем eMMC диска вашего устройства и оповещает о проблемах.
Ликбез:
Существует три основных параметра характеризующие здоровье диска eMMC flash:
eMMC Pre EOL information [EXT_CSD_PRE_EOL_INFO]
eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]
eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]
Параметр eMMC Pre EOL information [EXT_CSD_PRE_EOL_INFO]
указывает на текущее состояние износа eMMC-памяти и прогнозируемый конец её срока службы (End of Life, EOL). Этот параметр считывается из расширенного регистра конфигурации eMMC (EXT_CSD) и помогает оценить, когда устройство может выйти из строя из-за износа ячеек памяти.
Возможные значения (согласно спецификации JEDEC):
0x01
(Normal)
- Устройство находится в нормальном состоянии, ресурс износа не исчерпан.
- Это значение указывает, что eMMC работает в штатном режиме.
0x02
(Warning)
Устройство приближается к концу срока службы (EOL).
Обычно это означает, что осталось менее 10-20% ресурса.
Рекомендуется начать планирование замены накопителя.
0x03
(Urgent)
Критическое состояние: ресурс eMMC почти исчерпан.
Устройство может выйти из строя в любой момент.
Необходимо срочно заменить накопитель.
Как проверить значение Pre EOL Info?
cat /sys/class/mmc_host/mmc?/mmc?:*/pre_eol_info
Пример вывода:
cat /sys/class/mmc_host/mmc?/mmc?:*/pre_eol_info
0x01
Важные нюансы:
- Производитель может менять интерпретацию значений. Например, некоторые устройства могут использовать
0x01
для "нормального" состояния, а 0x0A
для "предупреждения". Всегда сверяйтесь с документацией конкретного eMMC.
- Связь с другими параметрами. Значение Pre EOL Info часто коррелирует с:
Device Life Time
(поле EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A/B
), которое показывает общий износ.
- SMART-атрибутами (если поддерживаются), такими как
Percentage Used Endurance Indicator
.
Рекомендации:
- Если значение
0x02
или 0x03
— регулярно сохраняйте резервные копии данных и планируйте замену eMMC.
- Для мониторинга используйте скрипты, которые автоматически проверяют Pre EOL Info и отправляют уведомления (например, через
cron
).
Параметры eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A] и eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]
предоставляют информацию об износе eMMC-памяти и оценке оставшегося срока её службы.
Что означают эти параметры?
Life Time Estimation A
Оценивает износ для типичного сценария использования (например, смешанные операции чтения/записи).
Life Time Estimation B
Оценивает износ для худшего сценария (например, интенсивная запись данных).
Оба параметра показывают, сколько процентов ресурса eMMC осталось, но с учётом разных условий нагрузки.
Возможные значения (согласно спецификации JEDEC):
Значения представлены в шестнадцатеричном формате и соответствуют диапазонам износа:
| Значение | Описание |
| --------------- | ---------------- |
| 0x01
| 100% ресурса | (новое устройство)
| 0x02
| 90-100% ресурса |
| 0x03
| 80-90% ресурса |
| 0x04
| 70-80% ресурса |
| 0x05
| 60-70% ресурса |
| 0x06
| 50-60% ресурса |
| 0x07
| 40-50% ресурса |
| 0x08
| 30-40% ресурса |
| 0x09
| 20-30% ресурса |
| 0x0A
| 10-20% ресурса | (критический износ)
Например, значение 0x05
для Life Time Estimation A означает, что осталось 60-70% ресурса при типичной нагрузке.
Как проверить эти параметры?
cat /sys/class/mmc_host/mmc?/mmc?:*/life_time
0x01 0x01
Первое значение это параметр Life Time Estimation A а второе Life Time Estimation B
Важные нюансы:
Разница между A и B:
- A — более оптимистичная оценка для стандартных сценариев.
- B — пессимистичная оценка для интенсивной записи (например, серверы, IoT-устройства с частой записью данных).
Производители могут менять интерпретацию:
Связь с Pre EOL Info:
Скрипт проверяет только параметр eMMC Pre EOL information
как наиболее важный.
Если лично Вам интересно смотреть и процент износа диска тоже, можете реализовать это.
Оповещение в Telegram происходит по следующему алгоритму:
- При поступлении команды
emmc
telegram-боту выполнится считывание параметра eMMC Pre EOL information
и осуществится его вывод.
- С интервалом каждые 4 часа выполняется считывание параметра
eMMC Pre EOL information
и осуществляется вывод только если параметр имеет значение Warning или Critical.
Возможные значения вывода:
eMMC Pre EOL information: Normal
- Устройство находится в нормальном состоянии, ресурс износа не исчерпан.
- Это значение указывает, что eMMC работает в штатном режиме.
eMMC Pre EOL information: Warning
- Устройство приближается к концу срока службы (EOL).
- Обычно это означает, что осталось менее 10-20% ресурса.
- Рекомендуется начать планирование замены накопителя.
eMMC Pre EOL information: Critical
- Критическое состояние: ресурс eMMC почти исчерпан.
- Устройство может выйти из строя в любой момент.
- Необходимо срочно заменить накопитель.
Код автоматизации:
{
"actions": [
{
"command": "#Скрипт вычисления eMMC Pre EOL information\npre_eol_info=$(cat /sys/class/mmc_host/mmc?/mmc?:*/pre_eol_info)\n\n\ncase $pre_eol_info in\n\n\t0x01)\n\tvalue=Normal\n\t;;\n\n\t0x02)\n\tvalue=Warning\n\t;;\n\n\t0x03)\n\tvalue=Critical\n\t;;\n\n\t*)\n\tvalue=unknow\n\t;;\nesac\n\n\nprintf \"eMMC Pre EOL information: ${value}\"",
"timeout": 30,
"type": "shell"
},
{
"type": "condition",
"conditions": [
{
"type": "pattern",
"pattern": "{{shellOutput}}",
"equals": "eMMC Pre EOL information: Normal"
}
],
"then": [
{
"type": "telegram",
"message": "✅ {{shellOutput}}",
"file": "",
"photo": "",
"keyboard": "",
"chats": null,
"silent": false,
"triggerName": "telegram"
}
],
"else": [
{
"type": "telegram",
"message": "⚠️ {{shellOutput}}",
"file": "",
"photo": "",
"keyboard": "",
"chats": null,
"silent": false
}
]
}
],
"restart": false,
"triggers": [
{
"interval": 240,
"type": "interval"
},
{
"message": "emmc",
"name": "telegram",
"type": "telegram",
"chats": null
}
],
"conditions": []
}
Файл для импорта автоматизации: