3.235.228.219

Использование инструментов командной строки NVMe для проверки работоспособности флэш-памяти NVMe

Использование инструментов командной строки NVMe для проверки работоспособности флэш-памяти NVMe

В этом сообщении блога я рассмотрю типы информации о состоянии флэш-памяти NVMe, которую вы можете получить с помощью инструментов командной строки NVMe.

Проверить работоспособность диска SATA очень просто. Будь то твердотельный накопитель или более старый вращающийся накопитель, вы можете использовать команду smartctl, чтобы получить обширную информацию о производительности и состоянии устройства. В качестве примера:

root@blinky:/var/lib/mysql# smartctl -A /dev/sda
 
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-62-generic] (local build)
 
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
 
 
 
=== START OF READ SMART DATA SECTION ===
 
SMART Attributes Data Structure revision number: 16
 
Vendor Specific SMART Attributes with Thresholds:
 
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
 
 1 Raw_Read_Error_Rate     0x002f   100   100   000    Pre-fail  Always       -       0
 
 5 Reallocated_Sector_Ct   0x0032   100   100   010    Old_age   Always       -       0
 
 9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       41
 
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       2
 
171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
 
172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
 
173 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       1
 
174 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
 
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
 
184 End-to-End_Error        0x0032   100   100   000    Old_age   Always       -       0
 
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
 
194 Temperature_Celsius     0x0022   065   059   000    Old_age   Always       -       35 (Min/Max 21/41)
 
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
 
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
 
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
 
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
 
202 Unknown_SSD_Attribute   0x0030   100   100   001    Old_age   Offline      -       0
 
206 Unknown_SSD_Attribute   0x000e   100   100   000    Old_age   Always       -       0
 
246 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       145599393
 
247 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       4550280
 
248 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       582524
 
180 Unused_Rsvd_Blk_Cnt_Tot 0x0033   000   000   000    Pre-fail  Always       -       1260
 
210 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0

Хотя smartctl может не знать всех интеллектуальных значений, зависящих от поставщика, обычно вы можете Google модель диска вместе с «интеллектуальными атрибутами» и найти такие документы, как this , чтобы получить дополнительные сведения.

Проверка работоспособности флэш-памяти NVMe

Если вы перейдете на флеш-хранилище нового поколения на базе NVMe, smartctl больше не будет работать - по крайней мере, он не будет работать для пакетов, доступных для Ubuntu 16.04 (то, что я использую). Похоже, скоро появится поддержка NVMe в Smartmontools , и было бы здорово получить единый инструмент, поддерживающий как SATA, так и NVMe флеш-хранилище.

А пока вы можете использовать инструмент nvme , доступный в пакете nvme-cli. Он предоставляет некоторую базовую информацию для устройств NVMe.

Чтобы получить информацию об установленных устройствах NVMe:

root@alex:~# nvme list
 
Node             SN                   Model                                    Version  Namespace Usage                      Format           FW Rev
 
---------------- -------------------- ---------------------------------------- -------- --------- -------------------------- ---------------- --------
 
/dev/nvme0n1     S3EVNCAHB01861F      Samsung SSD 960 PRO 1TB                  1.2      1         689.63  GB /   1.02  TB    512   B +  0 B   1B6QCXP7

Чтобы получить информацию SMART:

root@alex:~# nvme smart-log /dev/nvme0
 
Smart Log for NVME device:nvme0 namespace-id:ffffffff
 
critical_warning                    : 0
 
temperature                         : 34 C
 
available_spare                     : 100%
 
available_spare_threshold           : 10%
 
percentage_used                     : 0%
 
data_units_read                     : 3,465,389
 
data_units_written                  : 9,014,689
 
host_read_commands                  : 89,719,366
 
host_write_commands                 : 134,671,295
 
controller_busy_time                : 310
 
power_cycles                        : 11
 
power_on_hours                      : 21
 
unsafe_shutdowns                    : 8
 
media_errors                        : 0
 
num_err_log_entries                 : 1
 
Warning Temperature Time            : 0
 
Critical Composite Temperature Time : 0
 
Temperature Sensor 1                : 34 C
 
Temperature Sensor 2                : 47 C
 
Temperature Sensor 3                : 0 C
 
Temperature Sensor 4                : 0 C
 
Temperature Sensor 5                : 0 C
 
Temperature Sensor 6                : 0 C

Для получения дополнительной информации SMART (не все устройства ее поддерживают):

root@ts140i:/home/pz/workloads/1m# nvme smart-log-add /dev/nvme0
 
Additional Smart Log for NVME device:nvme0 namespace-id:ffffffff
 
key                               normalized raw
 
program_fail_count              : 100%       0
 
erase_fail_count                : 100%       0
 
wear_leveling                   :  62%       min: 1114, max: 1161, avg: 1134
 
end_to_end_error_detection_count: 100%       0
 
crc_error_count                 : 100%       0
 
timed_workload_media_wear       : 100%       37.941%
 
timed_workload_host_reads       : 100%       51%
 
timed_workload_timer            : 100%       446008 min
 
thermal_throttle_status         : 100%       0%, cnt: 0
 
retry_buffer_overflow_count     : 100%       0
 
pll_lock_loss_count             : 100%       0
 
nand_bytes_written              : 100%       sectors: 16185227
 
host_bytes_written              : 100%       sectors: 6405605

Часть этой информации говорит сама за себя, а часть - нет. Посмотрев документ спецификации NVMe, я прочитал некоторые данные:

Доступные запасные части . Содержит нормализованный процент (от 0 до 100%) оставшейся доступной свободной емкости.

Доступный запасной порог . Когда доступная резервная мощность падает ниже порога, указанного в этом поле, может произойти асинхронное завершение события. Значение указывается в виде нормализованного процента (от 0 до 100%). (Примечание: я не совсем уверен, в чем практический смысл «асинхронного завершения события», но похоже, что этого следует избегать!)

Используемый процент . Содержит определенную поставщиком оценку процента срока службы подсистемы NVM, основанную на фактическом использовании и прогнозах производителя относительно срока службы NVM. (Примечание: число может быть больше 100%, если вы используете хранилище дольше запланированного срока.)

Считанные единицы данных / Записанные единицы данных . Это количество 512-байтовых блоков данных, которые читаются / записываются, но измеряется необычным способом. Первое значение соответствует 1000 из 512-байтовых блоков. Таким образом, вы можете умножить это значение на 512000, чтобы получить значение в байтах. Он не включает доступ к метаданным.

Команды чтения / записи хоста . Количество выданных команд соответствующего типа. Используя это значение, а также значение ниже, вы можете вычислить средний размер ввода-вывода для «физических» операций чтения и записи..

Время загрузки контроллера . Время в минутах, когда контроллер был занят обслуживанием команд. Это можно использовать для измерения долгосрочных тенденций загрузки хранилища..

Небезопасные выключения. Сколько раз произошло отключение питания без отправки уведомления об отключении. В зависимости от используемого устройства NVMe небезопасное завершение работы может привести к повреждению пользовательских данных..

Время предупреждения о температуре / Время критической температуры . Время в минутах, когда устройство сработало при превышении допустимой или критической температуры. Должны быть нули.

Wear_Leveling . Это показывает, сколько из расчетного срока службы ячейки было использовано, а также минимальное / максимальное / среднее количество записей для разных ячеек. В этом случае, похоже, что ячейки рассчитаны на 1800 операций записи, и в среднем было использовано около 1100

Изнашивание носителя при временной нагрузке . Носитель изнашивается текущей «рабочей нагрузкой». Это устройство позволяет измерять некоторую статистику с момента их сброса (так называемая «рабочая нагрузка») в дополнение к отображению значений срока службы устройства..

Узел синхронизированной рабочей нагрузки читает . Процент операций ввода-вывода, которые были прочитаны (с момента сброса таймера рабочей нагрузки).

Состояние теплового дросселя . Это показывает, было ли дросселирование устройства из-за перегрева, и когда в прошлом были события дросселирования..

Записано байтов NAND. Байты, записанные в ячейки NAND. Для этого устройства единица измерения отображается в значениях 32 МБ. Для других устройств может быть иначе.

Записано байтов хоста . Байты, записанные в хранилище NVMe из системы. Это устройство также имеет размер 32 МБ. Масштаб этих значений не очень важен, поскольку они наиболее полезны для определения увеличения записи вашей рабочей нагрузки. Это соотношение измеряется при записи в NAND и записи в HOST. В этом примере коэффициент усиления записи (WAF) равен 16185227/6405605 = 2,53 .

Как видите, инструменты командной строки NVMe предоставляют много полезной информации для понимания состояния и производительности устройств NVMe. Вам не нужно использовать инструменты, зависящие от поставщика (например, isdct).