Apakah bad sector mengindikasikan disk yang gagal?

15

Sistem Ubuntu 13.10 saya telah berkinerja sangat buruk selama sekitar satu hari terakhir. Melihat log kernel, tampaknya disk SATA 3TB <1 tahun yang lama mengalami masalah dengan sektor tertentu:

Nov  4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov  4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65
Nov  4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT
Nov  4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 tag 0 dma 4096 in
Nov  4 20:54:04 mediaserver kernel: [10893.039202]          res 51/40:00:f8:3f:83/40:00:af:00:00/10 Emask 0x9 (media error)
Nov  4 20:54:04 mediaserver kernel: [10893.039207] ata4.01: status: { DRDY ERR }
Nov  4 20:54:04 mediaserver kernel: [10893.039211] ata4.01: error: { UNC }
Nov  4 20:54:04 mediaserver kernel: [10893.148527] ata4.00: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180322] ata4.01: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180345] sd 3:0:1:0: [sdc] Unhandled sense code
Nov  4 20:54:04 mediaserver kernel: [10893.180349] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180353] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov  4 20:54:04 mediaserver kernel: [10893.180356] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180359] Sense Key : Medium Error [current] [descriptor]
Nov  4 20:54:04 mediaserver kernel: [10893.180371] Descriptor sense data with sense descriptors (in hex):
Nov  4 20:54:04 mediaserver kernel: [10893.180373]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180384]         af 83 3f f8
Nov  4 20:54:04 mediaserver kernel: [10893.180389] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180393] Add. Sense: Unrecovered read error - auto reallocate failed
Nov  4 20:54:04 mediaserver kernel: [10893.180396] sd 3:0:1:0: [sdc] CDB:
Nov  4 20:54:04 mediaserver kernel: [10893.180398] Read(16): 88 00 00 00 00 00 af 83 3f f8 00 00 00 08 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180412] end_request: I/O error, dev sdc, sector 2944614392
Nov  4 20:54:04 mediaserver kernel: [10893.180431] ata4: EH complete

The kern.logfile sekitar 33MB sebagian besar penuh kesalahan di atas diulang dan sektor tidak tampak berbeda dalam pesan berulang.

Saat ini saya sedang menjalankan perintah berikut pada disk yang sekarang tidak di-mount untuk menguji dan mencoba untuk menyelesaikan masalah apa pun yang mungkin dimiliki disk. Saya sekitar 12 jam dan berharap untuk mengambil 24/48 jam karena disk begitu besar:

e2fsck -c -c -p -v /dev/sdc1

Pertanyaan saya adalah: Apakah drive ini gagal, atau saya melihat masalah umum di sini? Saya bertanya-tanya apakah ada titik bagi saya untuk memperbaiki atau mengabaikan bad sector dan apakah saya harus mengganti disk dalam garansi sementara masih tertutup. Pengetahuan saya tentang perintah di atas agak kurang, jadi saya ragu apakah itu akan membantu atau tidak.

Pembaruan cepat!

e2fsck akhirnya selesai setelah 2 hari dengan banyak 'blok klaim banyak dalam inode'. Mencoba memasang sistem file menghasilkan kesalahan, memaksanya untuk kembali ke read-only:

Nov 11 08:29:05 mediaserver kernel: [211822.287758] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Nov 11 08:29:05 mediaserver kernel: [211822.301699] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: errors=remount-ro

Mencoba membaca sektor ini secara manual:

sudo dd count=1 if=/dev/sdc of=/dev/null skip=2944614392
dd: reading ‘/dev/sdc’: Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.73077 s, 0.0 kB/s

Mencoba menulis padanya:

sudo dd count=1 if=/dev/zero of=/dev/sdc seek=2944614392
dd: writing to ‘/dev/sdc’: Input/output error
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.87869 s, 0.0 kB/s

Pada kedua hitungan, yang Reallocated_Sector_Cttersisa 0.

Drive cukup sering dalam kondisi tidur. Saya sekarang berpikir ini bisa menjadi masalah sistem file? Saya tidak 100%.

MrNorm
sumber
4
Ini hampir / pasti / tanda untuk memastikan cadangan Anda dalam keadaan baik dan kemudian memeriksa perangkat keras Anda.
Shadur
Hmm. Mereka sedikit ketinggalan zaman tapi mereka ada di sana. Sangat frustasi, karena drive ini menggantikan drive yang rusak.
MrNorm
Disk gagal, lihat Tanya Jawab ini tempat saya membahas cara melanjutkan: unix.stackexchange.com/search?q=user%3A7453+hdat
slm
2
... Jika drive ini diganti yang rusak, ada kemungkinan itu adalah pengontrol daripada drive.
Shadur

Jawaban:

16

Bad sector selalu merupakan indikasi HDD yang gagal, pada kenyataannya saat Anda melihat kesalahan I / O seperti ini, Anda mungkin sudah kehilangan / rusak beberapa data. Buat cadangan jika Anda belum memilikinya, jalankan tes mandiri smartctl -t long /dev/diskdan periksa data SMART smartctl -a /dev/disk. Dapatkan pengganti jika Anda bisa.

Bad sector tidak dapat diperbaiki, hanya diganti oleh sektor cadangan, yang membahayakan kinerja HDD, karena mereka membutuhkan upaya tambahan untuk sektor cadangan setiap kali mereka diakses. Menandai sektor-sektor seperti buruk pada layer filesystem membantu, karena mereka tidak akan pernah diakses saat itu; namun sulit untuk menentukan sektor mana yang sudah dialokasikan kembali oleh disk, jadi kemungkinan sistem file tidak akan tahu untuk menghindari wilayah yang terpengaruh.

frostschutz
sumber
Terima kasih. Sangat membantu untuk mengetahui karena selalu menjadi area abu-abu bagi saya. Saya akan nol drive dan mengirimnya kembali, karena masih dalam garansi.
MrNorm
1
Tidak begitu. Sektor buruk hanya menunjukkan lalu lintas yang sangat tinggi ke suatu sektor. Dalam kasus PALING, itu menunjukkan disk gagal. Anda dapat menyesuaikan kecepatan pencarian Anda untuk menandai respons yang lambat sebagai hal yang buruk ... Terlalu rumit untuk dikatakan selalu.
RobotHumans
2
Kesalahan baca juga dapat dilihat untuk sistem file yang karena alasan tertentu lebih besar dari disk sebenarnya.
Thorbjørn Ravn Andersen
@ frostschutz apa artinya Get a replacement if you can.? maksud Anda mengganti Disk?
pesawat terbang
10

Untuk membuat drive untuk realokasi sektor, biasanya Anda perlu menulis sesuatu ke dalamnya. Namun, dd( D isiko D estroyer) tidak selalu bekerja, dan sangat tidak aman: jika Anda bingungskip dan seekpilihan, Anda dapat dengan mudah menembak diri sendiri di kaki dengan skipping yang Nblok pertama /dev/zerodan menulis blok dari yang "offset" atas sektor 0 dari hard disk Anda .

Jika Anda benar-benar tahu ingin memaksa sektor ini ditimpa dengan angka nol, Anda harus menggunakan hdparm:

% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: FAILED: Input/output error

Ya, sektor 833192656 gagal dalam tes pintar juga. Untuk menulis nol padanya, gunakan --write-sector:

% sudo hdparm --write-sector 833192656 /dev/sda
/dev/sda:
Use of --write-sector is VERY DANGEROUS.
You are trying to deliberately overwrite a low-level sector on the media.
This is a BAD idea, and can easily result in total data loss.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

Sebagai perlindungan, hdparmtidak benar-benar menulis apa pun kecuali Anda --yes-i-know-what-i-am-doingberalih kehdparm :

% sudo hdparm --yes-i-know-what-i-am-doing --write-sector 833192656 /dev/sda
/dev/sda:
re-writing sector 833192656: succeeded
% sudo hdparm --read-sector 833192656 /dev/sda                              

/dev/sda:
reading sector 833192656: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
[      ... more zeroes here...        ]
0000 0000 0000 0000 0000 0000 0000 0000

%
Antti Haapala
sumber
Meskipun ini adalah jawaban kuno, saya benar-benar bertanya-tanya apa yang Anda maksud dengan "dd tidak selalu berhasil". Apakah Anda menyarankan bahwa mungkin gagal menulis data seperti yang diperintahkan? Itu tidak melakukan apa-apa terutama rentan terhadap kegagalan, hanya menyalin data sekitar. Anda bisa mendapatkan hasil yang sama menggunakan dua baris di hampir semua bahasa pemrograman.
TooTea
7

Tidak, bad sector tidak selalu merupakan indikasi drive gagal. Kadang-kadang jika penulisan sedang berlangsung pada saat listrik mati, data di sektor ini akan rusak, menghasilkan kesalahan saat Anda mencoba membacanya. Mencoba untuk menulis data baru ke sektor ini dapat bekerja dengan baik karena tidak ada yang salah secara fisik dengannya.

Anda bisa lari badblocks -n pada drive untuk membaca dan menulis ulang setiap sektor, atau dalam kasus Anda karena Anda sudah tahu jumlah sektor yang bersangkutan, Anda dapat menggunakan dduntuk menulis nol untuk itu. Anda dapat memeriksa statistik SMART dengan smartctl -a. Anda akan melihat jumlah yang dialokasikan kembali yang tertunda menunjukkan berapa banyak sektor yang gagal dibaca, dan setelah mencoba menulis sektor tersebut, jumlah ini akan turun. Hitungan sektor yang dialokasikan kembali mungkin naik, dalam hal ini secara fisik buruk dan telah dipetakan ke pool cadangan, dan ini mungkin merupakan tanda bahwa drive sedang dalam perjalanan keluar. Jika tidak, maka itu hanya diacak dan harus baik-baik saja sekarang.

Coba baca sektor ini terlebih dahulu:

dd count=1 if=/dev/sda of=/dev/null skip=nnnn

Jika itu gagal, maka Anda memiliki nomornya dengan benar, maka Anda dapat menaruhnya dengan:

dd count=1 if=/dev/zero of=/dev/sda seek=nnnn

Periksa kembali apakah Anda mengetik perintah tepat sebelum menekan enter.

psusi
sumber
Sangat menarik Anda mengatakan itu, karena saya mendapat beberapa informasi menarik mengikuti perintah Anda. Saya telah mengubah pertanyaan saya di atas.
MrNorm
Apakah drive Anda tidak mendukung SMART karena alasan tertentu atau mengapa Anda belum memeriksanya?
frostschutz
1
@ frostschutz "Dalam kedua hal, Reallocated_Sector_Ct tetap 0." Tampaknya OP telah memeriksa SMART.
CVn
@ Mr Norm, silakan tambahkan hasil lengkap smartctl -ake pertanyaan Anda.
psusi
2
Tolong jangan gunakan ini (itu bahkan tidak selalu berhasil), dan jika Anda bingung lewati dan cari, Anda akan menimpa MBR Anda sebagai gantinya. Lihat jawaban saya
Antti Haapala