Gdy kontrola SMART na dysku zgłasza uszkodzony sektor, ważne jest, aby móc zidentyfikować plik zawierający uszkodzony sektor i przywrócić go z kopii zapasowych. Poniżej pokazuję, jak to zrobiłem na moim serwerze VMWARE z systemem Linux / ext3 - ale czy ktoś wie, czy można to zrobić dla systemu Windows / NTFS?
Oto jak to zrobiłem dla Linux / ext3: Najpierw poprosiłem dysk o wykonanie skanowania powierzchni sprzętu (poniżej poziomu systemu operacyjnego, z obwodami SMART na dysku):
vserver:~# smartctl -t long /dev/sdc
Spojrzałem na wyniki:
vserver:~# smartctl -a /dev/sdc
...
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 1
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 9
...
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed: read failure 90% 27679 591363172
Tak więc jeden sektor został już oznaczony jako zły, 9 oznaczono do zastąpienia z obszaru sektora „przejściowego”. Co ważniejsze, pierwszym logicznym adresem bloku (LBA), który jest nieczytelny, był 591363172.
Znalazłem partycję (i przesunięcie w niej), na którą ta liczba „przetłumaczyła” na:
vserver:~# fdisk -lu /dev/sdc
Device Boot Start End Blocks Id System
/dev/sdc1 32 976773119 488386544 83 Linux
Partycja rozpoczęła się w sektorze 32. Tak więc zły sektor był ...
vserver:~# bc -l
591363172-32+1
591363141
... z przesunięciem 591363141 sektorów od początku partycji.
Teraz mogłem znaleźć, który plik został „ukryty”:
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size: 4096
Rozmiar bloku tego systemu plików EXT3 wynosił 4096 bajtów, więc zły sektor zniszczył ten blok w systemie plików:
vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000
A numer bloku (73920392) odpowiadał temu plikowi:
vserver:~# debugfs
debugfs 1.41.3 (12-Oct-2008)
debugfs: open /dev/sdc1
testb 73920392
debugfs: testb 73920392
Block 73920392 marked in use
debugfs: icheck 73920392
Block Inode number
73920392 18472967
debugfs: ncheck 18472967
Inode Pathname
18472967 /path/to/filewithbadsector
I przywróciłem ten plik z kopii zapasowych.
Czy istnieje równoważna procedura, którą mogę wykonać dla Windows / NTFS?
dd
. Zmusi to napęd do jego naprawy lub ponownego przydzielenia.