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.log
file 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_Ct
tersisa 0.
Drive cukup sering dalam kondisi tidur. Saya sekarang berpikir ini bisa menjadi masalah sistem file? Saya tidak 100%.
Jawaban:
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/disk
dan periksa data SMARTsmartctl -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.
sumber
Get a replacement if you can.
? maksud Anda mengganti Disk?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
danseek
pilihan, Anda dapat dengan mudah menembak diri sendiri di kaki denganskip
ping yangN
blok pertama/dev/zero
dan 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
:Ya, sektor 833192656 gagal dalam tes pintar juga. Untuk menulis nol padanya, gunakan
--write-sector
:Sebagai perlindungan,
hdparm
tidak benar-benar menulis apa pun kecuali Anda--yes-i-know-what-i-am-doing
beralih kehdparm
:sumber
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 menggunakandd
untuk menulis nol untuk itu. Anda dapat memeriksa statistik SMART dengansmartctl -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:
Jika itu gagal, maka Anda memiliki nomornya dengan benar, maka Anda dapat menaruhnya dengan:
Periksa kembali apakah Anda mengetik perintah tepat sebelum menekan enter.
sumber
smartctl -a
ke pertanyaan Anda.