🐹 CentOS 7: ВосстанавливаСм Π±ΠΈΡ‚Ρ‹Π΅ сСктора Π½Π° дискС. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° smartmontools. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° smartctl. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° dd.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.
2. Π”ΠΈΠ°Π³Π½ΠΎΠ· ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ.
3. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.
4. Π Π°Π±ΠΎΡ‚Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ счСтчика.
5. НулСвоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
6. Бпособ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
7. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹ источников ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.


1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π–ΠΈΠ²Π΅ΡˆΡŒ Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ своСй ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Тизнью систСмного администратора ΠΈ Ρ‚ΡƒΡ‚ Ρ‚Π΅Π±Π΅ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΎΡ‚ сСрвСра Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ интСрСсныС письма…

ΠŸΠΎΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΈΠ΅…

Π—Π°Ρ‚Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ…

Π›Π°Π΄Π½ΠΎ, ΡˆΡƒΡ‡Ρƒ, Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠ» сСрвСр, ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° ΠΈ всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π½ΠΎ Π±ΠΈΡ‚Ρ‹Π΅ сСктора Ρ‚Π°ΠΊ просто Π½Π΅ чинятся.

Если ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ чтСния  этого диска, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ интСрСсныС строки ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ диска.

2. Π”ΠΈΠ°Π³Π½ΠΎΠ· ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ.

На Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ сущСствуСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² S.M.A.R.T.  

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ спутники Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с мСханичСскими ТСсткими дисками — ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ счётчики Current_Pending_Sector ΠΈ Offline_Uncorrectable.

Из всСго ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ½ΠΈ:

# sudo smartctl -A -f brief /dev/sde | grep -e 196 -e 197 -e 198 -e ID

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· счСтчиков.

  • Current Pending Sector.

Π’ счётчикС Current_Pending_Sector ΡƒΠΊΠ°Π·Π°Π½ΠΎ число сСкторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ диск Π½Π΅ смог ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ критичСская ошибка Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ Π½Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π½ΠΎ Π½Π΅ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ для этих сСкторов Ρƒ диска Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π². ΠŸΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи Π² эти сСкторы ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° диска сдСлаСт Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сСкторами ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ подразумСваСтся, находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ физичСской части диски.

  • Offline Uncorrectable Sector Count.

Π’ счётчикС Offline_Uncorrectable ΡƒΠΊΠ°Π·Π°Π½ΠΎ число сСкторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ диск Π½Π΅ смог Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, прСдусмотрСнных ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ.

Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° этого счётчика отличаСтся ΠΎΡ‚ производитСля ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ оптимистично ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ эти сСктора всё ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ сСкторам, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ счётчикС. Π’ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС Π²Ρ‹ смоТСтС ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с диска, Π·Π°Ρ‚Π΅ΠΌ спокойно Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ. Π’ совсСм ΠΏΠ»ΠΎΡ…ΠΎΠΌ случаС Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с диском.

  • Reallocated Event Count.

Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ Reallocated_Event_Count Ρ‚ΠΎΠΆΠ΅ прСдставляСт для нас интСрСс. Π’ этом счётчикС ΡƒΠΊΠ°Π·Π°Π½ΠΎ число сСкторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅. Если Π² этом счётчикС Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… счётчиках всё ΠΏΠΎ нулям, Ρ‚ΠΎ это Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с диском ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ описанным Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Для ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ дисков нСнулСвая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π² этом счётчикС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΌΠΈΠ½ΡƒΠ΅ΠΌΡƒΡŽ ΠΊΠΎΠ½Ρ‡ΠΈΠ½Ρƒ диска, для Π΄Ρ€ΡƒΠ³ΠΈΡ… дисков этот счётчик Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ диска: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ Π³ΠΎΠ΄Ρ‹. НС всС диски ΠΌΠ΅Π½ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого счётчика, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ²Π΅Ρ€ΡΡ‚ΡŒ с Π»ΠΎΠ³Π°ΠΌΠΈ самотСстирования.

3. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°ΠΌ понадобится ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° smartctl. Она Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Smartmontools, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ β€” smartctl ΠΈ smartd. ВмСстС ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠΎΡ‰Π½ΡƒΡŽ систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ прСдупрСТдСния ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠΌΠΊΠ°Ρ… HDD Π² CentOS 7.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π° с Smartmontools описана Π² инструкции Β«CentOS 7: Π Π°Π±ΠΎΡ‚Π° со S.M.A.R.T. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° smartmontools. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° smartctl.Β»

Запуск установки Smartmontools производится Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»:

# yum -y install smartmontools

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим ΠΊΠ°ΠΊΠΈΠ΅ устройства хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρƒ нас Π² систСмС, Π½ΠΎ силами ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ smartctl, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ поставили:

# smartctl --scan

Π’Π΅Π·Π΄Π΅ Π² инструкция Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с диском /dev/sde, Ρ…ΠΎΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ диска ΠΈ Π½Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ диск сдСлал Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ сСктора, сСктор Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нулями. Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ сСктор Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. Π’ самих Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… Π½Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… сСкторах, Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΡ… ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ сСктора ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π»ΠΎΠ³Π΅ самотСстирования диска.

Запустим быстрый тСст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ быстро ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ сСктор:

# sudo smartctl -t short /dev/sde | grep ^Test

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок тСст ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ заканчиваСтся Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ это Π²Π΅Ρ€Π½ΠΎ Π½Π΅ для всСх дисков всСх ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Для вСрности ΠΏΠΎΠ΄ΠΎΠΆΠ΄Ρ‘ΠΌ ΠΈ послС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ смотрим Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку Π² Π»ΠΎΠ³Π΅ тСстов:

# sudo smartctl -l selftest /dev/sde | grep -e '# 1' -e Num

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ сСктор Π±ΡƒΠ΄Π΅Ρ‚ Π² послСднСй ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°. НомСр Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² физичСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ диска, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ этот сСктор нулями, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ логичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

# sudo smartctl -i /dev/sde | grep 'Sector Sizes'

ЀизичСскиС сСкторы Π½Π° дискС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π² 4 Кб, Π½ΠΎ логичСский сСктор (LBA) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 512 Π±Π°ΠΉΡ‚. Π—Π½Π°Ρ‡ΠΈΡ‚ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нулями физичСский сСктор Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4 Кб, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ LBA, посчитанный исходя ΠΈΠ· Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сСктора Π² 512 Π±Π°ΠΉΡ‚.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ инструкции Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ с диска. ΠŸΡ€ΠΈ ошибкС Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ нСльзя. Π”Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ совсСм ΠΈ навсСгда. Π­Ρ‚ΠΎ Π½Π΅ ΡˆΡƒΡ‚ΠΊΠ°. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΠΎ нСсколько Ρ€Π°Π·. Если ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ, Π½ΠΈ ΡˆΠ°Π³Ρƒ дальшС.

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ физичСский сСктор Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ восСмь сСкторов ΠΏΠΎ 512 Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ сСктору ΠΏΠΎ 4 Кб, Ρ‚ΠΎ диск Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

# sudo dd if=/dev/zero of=/dev/sde bs=512 count=8 seek=451365794 conv=fdatasync

Если Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ физичСский сСктор Π² восСмь Ρ€Π°Π· большС логичСского (4096/512 = 8), Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° высчитывания смСщСния ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° диска сводится ΠΊ дСлСнию LBA-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ сСктора Π½Π° восСмь:

# sudo dd if=/dev/zero of=/dev/sde bs=4096 count=1 seek=$((451365794/(4096/512))) conv=fdatasync

ΠŸΡ€ΠΈ пСрСзаписи нулями ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ сСктора Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ диск сообщит ΠΎΠ± успСхС, ΠΊΠ°ΠΊ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΠ»ΠΈ ΠΎΠ± ошибкС. НСкоторыС диски Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎΠ± ошибкС ΠΏΡ€ΠΈ записи, Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ ΠΊ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ сСктора, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ошибкС стоит ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π΅Ρ‰Ρ‘ Ρ€Π°Π·.

Π€Π»Π°Π³ fdatasync Π² этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ физичСской записи сСктора Π½Π° диск, Π° Ссли это Π½Π΅ удастся, Ρ‚ΠΎ dd сообщит ΠΎΠ± ошибкС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ с ошибкой ΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, Ρ‚ΠΎ, ΠΈΠ»ΠΈ Π²Ρ‹ ошиблись Π² расчётах, ΠΈΠ»ΠΈ диск Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚.

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ пСрСзаписи число ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… сСкторов ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ:

# sudo smartctl -A -f brief /dev/sde | grep -e 197 -e ID

УмСньшСниС счётчика Current_Pending_Sector Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± успСхС нашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Если этот ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ счётчики Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ своих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ это, скорСС всСго, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π² расчётС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ сСктора Π΅ΡΡ‚ΡŒ ошибка (Π±Ρ‹Π» пСрСзаписан нулями Π½Π΅ Ρ‚ΠΎΡ‚ сСктор).

4. Π Π°Π±ΠΎΡ‚Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ счСтчика.

Π’Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ слСдуСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΄ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ счётчика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… сСкторов Π΄ΠΎ нуля:

  • ЗапускаСм быстроС самотСстированиС тСст диска.
  • Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ сСктора ΠΈΠ· Π»ΠΎΠ³Π°.
  • ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ сСктор нулями.
  • БвСряСмся с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ.

И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

# sudo smartctl -t short /dev/sde | grep ^Test

# sudo smartctl -l selftest /dev/sde | grep -e '# 1' -e Num

# sudo dd if=/dev/zero of=/dev/sde bs=4096 count=1 seek=$((451407136/(4096/512))) conv=fdatasync

НС составляСт особого Ρ‚Ρ€ΡƒΠ΄Π° Π·Π°ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

5. НулСвоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Бпустя ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя тСсты Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π΅Π· ошибок, Π° счётчик Π±ΠΈΡ‚Ρ‹Ρ… сСкторов Current Pending Sector (ΠΈ Offline Uncorrectable) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ноль.

# sudo smartctl -l selftest /dev/sde | grep -e '# 1' -e Num

# sudo smartctl -A -f brief /dev/sde | grep -e 197 -e ID

ПослС исправлСния всСх ошибок стоит Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ тСстированиС диска:

# sudo smartctl -t long /dev/sde

Π­Ρ‚Π° опСрация Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠ΅ врСмя. Если ΠΏΠΎ Π΅Ρ‘ ΠΈΡ‚ΠΎΠ³Π°ΠΌ найдутся Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ошибки, Ρ‚ΠΎ шаги Π²Ρ‹ΡˆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ.

6. Бпособ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

МоТно ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· большСй части ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Ρ‹ΡˆΠ΅ Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° дискС Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ цСнности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это диск ΠΈΠ· RAID 1). Для этого запускаСм ΠΏΠΎΠ»Π½Ρ‹ΠΉ тСст ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, доТидаСмся Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ с ошибкой, Π·Π°Ρ‚Π΅ΠΌ пСрСзаписываСм вСсь диск Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ нулями:

# sudo dd if=/dev/zero of=/dev/sde bs=64k oflag=direct status=progress

Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Ρ„Π»Π°Π³Π°: ΠΎΠ΄ΠΈΠ½ — для прямо записи Π½Π° диск, минуя кСш ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ: для ΠΏΠΎΠΊΠ°Π·Π° процСсса копирования. ПослСдняя опция Π΅ΡΡ‚ΡŒ Π² GNU coreutils ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ начиная с вСрсии 8.24, Π° всС вСрсии, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ послС 2016 Π³ΠΎΠ΄Π°. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ старая вСрсия dd, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ»ΠΈ просто ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΡŽΠΊ с pv.

Π—Π°Ρ‚Π΅ΠΌ запускаСм Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ тСстированиС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΊΠ°ΠΊ Π²Ρ‹ΡˆΠ΅, доТидаСмся окончания ΠΈ убСТдаСмся Ρ‡Ρ‚ΠΎ тСст Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ Π±Π΅Π· ошибок.

# sudo smartctl -l selftest /dev/sde | grep -e '# 1' -e Num

7. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹ источников ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

  1. alexeykopytko.com «ВосстанавливаСм Π±ΠΈΡ‚Ρ‹Π΅ сСктора Π½Π° дискС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ smartctl ΠΈ ddΒ».

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅: