FreeBSD: исправление Current_Pending_Sector
SMART мониторинг отрапортовал об ошибке на одном из дисков, включенных в ZFS пул. Надо лечить…
# smartctl -A /dev/ad6
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG TYPE RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 Pre-fail 0
196 Reallocated_Event_Count 0x0032 Old_age 0
197 Current_Pending_Sector 0x0022 Old_age 1
Для начала, можно запустить smartctl -t long тест и удостовериться в наличии ошибки на диске. В моем случае ошибка продолжала определяться.
# smartctl -l selftest /dev/ad6 === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LBA_of_first_error # 1 Extended offline Completed: read failure 10% 188735191
Для контроля, а заодно убедиться правильно ли считаются сектора, получаем еще одну ошибку чтения
# dd if=/dev/ad6 of=/dev/null bs=512 count=1 skip=188735191 dd: /dev/ad6: Input/output error 0+0 records in 0+0 records out 0 bytes transferred in 5.874599 secs (0 bytes/sec)
В логах тоже ошибка
Jan 27 02:37:43 stella kernel: ad6: FAILURE - READ_DMA \ status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=188735191
Соседние сектора читаются…
# dd if=/dev/ad6 of=/dev/null bs=512 count=1 skip=188735192 1+0 records in 1+0 records out 512 bytes transferred in 0.016165 secs (31673 bytes/sec)
Ок, лечим… Для начала, наступим на грабли
# dd of=/dev/ad6 if=/dev/zero bs=512 count=1 oseek=188735191 dd: /dev/ad6: Operation not permitted
Разрешить писать на примонтированный диск
# sysctl kern.geom.debugflags kern.geom.debugflags: 0 # sysctl kern.geom.debugflags=0x10 kern.geom.debugflags: 0 -> 16
После этого обнуляем сбойный сектор
# dd of=/dev/ad6 if=/dev/zero bs=512 count=1 oseek=188735191 1+0 records in 1+0 records out 512 bytes transferred in 0.000170 secs (3011899 bytes/sec)
Смотрим состояние SMART. Значение Current_Pending_Sector уже нулевое. Значение Reallocated_Sector_Ct не увеличилось. Можно считать, пронесло и пока диск менять не придется.
# smartctl -A /dev/ad6 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG TYPE UPDATED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 Pre-fail Always 0 196 Reallocated_Event_Count 0x0032 Old_age Always 0 197 Current_Pending_Sector 0x0022 Old_age Always 0
Для проверки целостности можно запустить zpool scrub и контрольный smartctl -t long тест…