Dari bad sector ke “file rusak” - apakah itu untuk Linux / ext3, dapatkah saya melakukannya untuk Windows / NTFS?

17

Ketika SMART memeriksa disk melaporkan sektor yang buruk, penting untuk dapat mengidentifikasi file yang memiliki sektor buruk - dan mengembalikannya dari cadangan. Di bawah ini, saya menunjukkan bagaimana saya melakukan ini untuk server VMWARE Linux / ext3 saya - tetapi apakah ada yang tahu apakah ini dapat dilakukan untuk Windows / NTFS?

Inilah cara saya melakukannya untuk Linux / ext3: Saya pertama kali meminta drive untuk melakukan pemindaian permukaan perangkat keras (di bawah tingkat OS, dengan sirkuit SMART di drive):

vserver:~# smartctl -t long /dev/sdc

Saya melihat hasilnya:

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

Jadi, satu sektor sudah ditandai buruk, 9 ditandai untuk diganti dari ruang sektor "pementasan". Lebih penting lagi, alamat blok logis pertama (LBA) yang tidak dapat dibaca, adalah 591363172.

Saya menemukan partisi (dan offset di dalamnya) yang nomor ini "terjemahkan" ke:

vserver:~# fdisk -lu /dev/sdc
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1           32   976773119   488386544   83  Linux

Partisi dimulai pada sektor 32. Jadi, sektor buruk ...

vserver:~# bc -l
591363172-32+1
591363141

... di offset 591363141 sektor dari awal partisi.

Sekarang saya dapat menemukan file mana yang "disembunyikan":

vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size:               4096

Ukuran blok sistem file EXT3 ini adalah 4096 byte, jadi sektor buruk menghancurkan blok ini dalam sistem file:

vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000

Dan nomor blok (73920392) terkait dengan file ini:

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

Dan saya memulihkan file itu dari cadangan saya.

Apakah ada prosedur setara yang dapat saya ikuti untuk Windows / NTFS?

ttsiodras
sumber
FYI: hitungan 9 yang tertunda saat ini berarti ada 9 sektor buruk, bukan hanya satu. Tes mandiri diperpanjang hanya berhenti pada yang pertama ditemukan. Sebelum Anda memulihkan dari cadangan, Anda juga ingin berurusan dengan sektor buruk dengan menuliskan angka nol dengannya dd. Ini akan memaksa drive untuk memperbaiki atau merealokasi.
psusi
Ya, Anda benar. Setelah pemulihan, saya melakukan pengecekan SMART dan menemukan bahwa semuanya baik-baik saja - jadi penulisan file tersebut nampaknya menulis di atas 9 + 1 bad sector (dan area pementasan menyediakan pengganti). Tapi bagaimana dengan Windows? :-)
ttsiodras
Saya pikir perhitungan Anda untuk offset sektor dalam partisi salah. Nomor sektor (selain yang fisik, alias CHS) semuanya berbasis nol, karena sektor 32 adalah sektor partisi 32-32 == 0, bukan 1.
Yang mengejutkan, belum ada yang mengatakan ini pada + pertanyaan lama: Ketika Anda mulai melihat bad sector pada drive itu berarti Anda telah mendapatkan begitu banyak remapping blok internal internal otomatis drive tidak dapat mengompensasi lagi. Daripada mengembalikan dari cadangan ke drive yang sekarat, Anda harus mengganti drive dan mengembalikan ke drive baru.
voretaq7

Jawaban:

7

Saya tahu Anda memiliki NTFS FS, dan menjalankan windows pada FS itu. Saya tidak tahu apakah Anda "bisa" mem-boot Linux langsung untuk bekerja pada driver itu atau tidak.

Jika Anda dapat mem-boot Linux dari CD atau USB, Anda dapat menggunakan ntfsprogs. melihat -

ntfscluster 

ntfsinfo 

Saya percaya ntfscluster memberi tahu Anda file apa yang disimpan cluster tertentu. Saya harap ini menempatkan Anda di arah yang benar.

JM Becker
sumber
Saya menemukan posting forum ini yang memiliki pembungkus utilitas untuk melakukan ini pada sistem file yang berbeda, dan menggunakan ntfscluster juga. ubuntuforums.org/showthread.php?t=1943721
Lethargy
Ya, fitur ddrutility: Menemukan file yang terkait dengan bad sector, Dapat juga menggunakan file dengan daftar sektor, mungkin kita bisa menggunakan "badblocks -nvs" + "ddrutility"
diyism