Menggunakan "badblocks" pada disk modern

21

Saya ingin menggunakan badblock untuk memeriksa HDD saya dan akan sangat menghargai klarifikasi operasinya.

Bisakah seseorang menjelaskan opsi terbaik untuk digunakan bersama -bdan -c? Saya telah memasukkan definisi mereka dari halaman manual, tetapi saya tidak yakin apakah ukuran yang lebih besar akan bermanfaat untuk disk modern dengan 64MB RAM dan sektor 4k.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

Kedua, saya ingin tahu apakah tes mode tulis lebih menyeluruh daripada mode baca-tulis yang tidak merusak?

Terakhir, berapa banyak alokasi ulang sektor SMART yang dapat diterima / haruskah drive dengan jumlah realokasi yang tidak nol segera diganti?

Yoren
sumber
3
untuk bagian ke-2: segera setelah Anda mulai melihat badblock, itu berarti ada yang salah. Ini mungkin pertanda baik Anda harus mengganti disk sebelum Anda tidak bisa membacanya sama sekali. Tetapi dalam semua kasus, bahkan sebelum kegagalan, Anda harus selalu memiliki 2 cadangan data penting (1 lokal, 1 jarak jauh) selain copy pekerjaan. lihat detail jawaban saya di sana: superuser.com/a/528181/174998
Olivier Dulac
4
untuk ukuran blok: itu harus mencerminkan ukuran blok aktual yang digunakan OS Anda untuk menyimpan data pada hard drive itu (sesuai dengan sistem file yang digunakan). Ini bukan untuk mempercepat, itu untuk menandai blok "buruk", blok itu memang 1 blok, dan bukan 1/2 atau 1/4 atau bahkan 2 (atau lebih) blok.
Olivier Dulac

Jawaban:

21

Pertanyaan 1:

Berkenaan dengan -bopsi: ini tergantung pada disk Anda. Disk besar dan modern memiliki blok 4KB, yang harus Anda atur -b 4096. Anda bisa mendapatkan ukuran blok dari sistem operasi , dan biasanya juga dapat diperoleh dengan membaca informasi disk dari label, atau dengan googling nomor model disk. Jika -bdiatur ke sesuatu yang lebih besar dari ukuran blok Anda, integritas badblockshasil dapat dikompromikan (yaitu Anda bisa mendapatkan false-negatif: tidak ada blok buruk yang ditemukan saat masih ada). Jika -bdiatur ke sesuatu yang lebih kecil dari ukuran blok drive Anda, kecepatan proses badblocksdapat dikompromikan. Saya tidak yakin, tetapi mungkin ada masalah lain dengan pengaturan-buntuk sesuatu yang lebih kecil dari ukuran blok Anda, karena tidak memverifikasi integritas seluruh blok, masih mungkin untuk mendapatkan false-negatif jika diset terlalu kecil.

The -cpilihan bersesuaian dengan berapa banyak blok harus diperiksa sekaligus. Membaca / menulis, pada dasarnya. Opsi ini tidak memengaruhi integritas hasil Anda, tetapi memengaruhi kecepatan saat badblocksmenjalankan. badblocksakan (secara opsional) menulis, lalu membaca, buffer, periksa, ulangi untuk setiap N blok seperti yang ditentukan oleh -c. Jika -cdiset terlalu rendah, ini akan membuat perjalanan Anda badblocksmemakan waktu lebih lama dari biasanya, karena antrian dan pemrosesan permintaan IO terpisah menimbulkan overhead, dan disk mungkin juga mengenakan tambahan biaya tambahan per permintaan. Jika -cdiset terlalu tinggi, badblockskehabisan memori. Jika ini terjadi, badblocksakan gagal dengan cukup cepat setelah dimulai. Pertimbangan tambahan di sini termasuk badblocksberjalan paralel : jika Anda menjalankanbadblocksterhadap banyak partisi pada disk yang sama (ide buruk), atau terhadap beberapa disk pada saluran IO yang sama, Anda mungkin ingin menyetel -cke sesuatu yang masuk akal mengingat memori yang tersedia badblockssehingga paralel berjalan tidak memperjuangkan IO bandwidth dan dapat memparalelkan dengan cara yang waras.

Pertanyaan 2:

Bertentangan dengan apa jawaban lain menunjukkan, para -wtes tulis-mode tidak lebih atau kurang dapat diandalkan dibandingkan non-destruktif read-write tes, tetapi dua kali lebih cepat, dengan biaya yang merusak semua data Anda. Saya akan menjelaskan alasannya:

Dalam mode non-destruktif, badblockslakukan hal berikut:

  1. Baca data yang ada, periksa kembali (baca lagi jika perlu), dan simpan dalam memori.
  2. Tulis pola yang telah ditentukan (dapat ditimpa dengan -popsi, meskipun biasanya tidak perlu) ke blok.
  3. Baca blok kembali, memverifikasi bahwa data yang dibaca sama dengan pola.
  4. Tulis data asli kembali ke disk.
    • Saya tidak yakin tentang ini, tetapi mungkin juga membaca kembali dan memverifikasi bahwa data asli telah ditulis dengan sukses dan masih checksum untuk hal yang sama.

Dalam -wmode destruktif ( ), badblockshanya langkah 2 dan 3 di atas. Ini berarti bahwa jumlah operasi baca / tulis yang diperlukan untuk memverifikasi integritas data terpotong dua. Jika blok buruk, data akan salah dalam mode baik. Tentu saja, jika Anda peduli dengan data yang disimpan di drive Anda, Anda harus menggunakan mode non-destruktif, karena -wakan melenyapkan semua data dan meninggalkan badblockspola tertulis ke disk sebagai gantinya.

Peringatan: jika blok tersebut akan buruk, tapi tidak sepenuhnya hilang lagi, beberapa pasang verifikasi baca / tulis dapat bekerja, dan beberapa mungkin tidak. Dalam hal ini, mode non-destruktif dapat memberi Anda indikasi "bubur" blok yang lebih dapat diandalkan, karena ia melakukan dua set verifikasi baca / tulis (mungkin - lihat peluru di langkah 4). Bahkan jika mode non-destruktif lebih dapat diandalkan dengan cara itu, itu hanya lebih dapat diandalkan secara kebetulan . Cara yang benar untuk memeriksa blok yang tidak sepenuhnya buruk tetapi tidak dapat mempertahankan beberapa operasi baca / tulis adalah untuk menjalankan badblocksbeberapa kali lebih dari data yang sama, menggunakan -popsi.

Pertanyaan 3:

Jika SMART merealokasi sektor, Anda mungkin harus mempertimbangkan untuk mengganti drive ASAP. Drive yang kehilangan beberapa sektor tidak selalu hilang, tetapi penyebabnya biasanya drive yang banyak digunakan menjadi lembek secara magnetis, atau kegagalan head / motor yang mengakibatkan pembacaan / penulisan yang tidak akurat atau gagal. Keputusan akhir terserah Anda, tentu saja: berdasarkan nilai data pada drive dan keandalan yang Anda butuhkan dari sistem yang Anda jalankan, Anda mungkin memutuskan untuk mempertahankannya. Saya memiliki beberapa drive dengan blok buruk yang diketahui yang telah berputar dengan peringatan SMART selama bertahun-tahun di server file saya, tetapi mereka didukung dengan jadwal sehingga saya bisa menangani kegagalan total tanpa banyak rasa sakit.

Zac B
sumber
4
Ada yang tahu mengapa -bdefault 1024? Bagi saya itu agak aneh. Mengapa tidak 512?
Ryan J
6
@RyanJ 1024 adalah ukuran blok minimum untuk ext2. badblocks adalah bagian dari e2fsprogs, dan pada awalnya dimaksudkan untuk mengisi daftar blokir buruk dari sistem file ext2. Anda harus menjalankannya dengan blocksize yang sama seperti FS untuk mendapatkan angka dalam format yang tepat untuk mkfs.ext2. TL; DR: alasan historis yang tidak perlu Anda khawatirkan.
sourcejedi
BUUUTT, @Zac B mengatakan "Jika -b diatur ke sesuatu yang lebih besar dari ukuran blok Anda, integritas hasil badblock dapat dikompromikan" 1024> 512. Saya bisa mengerti bagaimana 513 dapat menyebabkan beberapa bytest tidak dicentang. Tapi mungkin itu harus dinyatakan kembali "Jika -b diatur ke sesuatu yang lebih besar dari ukuran blok Anda DAN BUKANLAH BAHWA GANDA, integritas hasil badblock dapat dikompromikan". Bagaimana menurutmu poster asli, orang lain yang lebih pintar dariku?
Billy C.
4

1) Jika disk modern Anda menggunakan ukuran sektor selain 512b - maka Anda perlu mengatur ukuran itu dengan -bopsi (yaitu -b 4096). Tanpa opsi itu, cek Anda akan berjalan jauh lebih lambat karena setiap sektor riil akan dicoba beberapa kali (8 kali dalam kasus sektor 4k). Juga seperti yang disebutkan Olivier Dulac dalam komentar untuk pertanyaan -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

Opsi -cmenyiratkan pada berapa banyak sektor tryid sekaligus. Itu bisa memiliki beberapa implikasi pada kinerja dan nilai kinerja yang dapat bergantung pada model disk tertentu.

2) write-mode test- Dalam pemahaman saya ini hanya akan memeriksa apakah Anda memiliki kesalahan yang sangat buruk atau kesalahan yang sangat buruk (alias Degradasi Data Diam, bit busuk, peluruhan media penyimpanan, sektor UNC)

3) Saya tidak akan percaya pada laporan SMART pada titik waktu. Yang lebih penting adalah bagaimana nilai berubah sepanjang waktu. Juga di sini adalah penelitian oleh Google Kegagalan Tren di Populasi Drive Disk Besar dan di sini adalah beberapa diskusi tentang itu. Berikut ini kutipan dari penelitian:

Meskipun korelasi ini tinggi, kami menyimpulkan bahwa model berdasarkan parameter SMART saja tidak mungkin berguna untuk memprediksi kegagalan drive individu.

Mengenai yang disebutkan oleh orang lain untuk penggantian disk - Anda mungkin tidak memiliki masalah hard disk yang buruk tetapi Degradasi Data Diam (bit busuk, peluruhan media penyimpanan, sektor UNC). Dalam hal ini tidak masuk akal untuk mengganti disk, tetapi sebaliknya berguna untuk melakukan baca / tulis data yang sama kembali ke disk. Anda dapat melihat di sini bagaimana cara menyelesaikannya.

Jika Anda memiliki kesalahan sangat buruk, Anda bisa mencoba mempartisi ulang drive dengan cara area buruk itu berada di luar partisi apa pun. Bagi saya pendekatan itu bermanfaat dan hard disk buruk seperti itu digunakan untuk waktu yang lama tanpa masalah.

Broomerr
sumber
Kalimat pertama salah, -bdefault ke 1024. Jika disk Anda menggunakan ukuran sektor selain 1024, yang sangat umum di luar sistem file ext2, maka Anda harus menentukan itu.
Hashim
1

Saya akan membiarkan -b dan -c sebagai default kecuali Anda memiliki alasan khusus untuk mengubahnya. Anda mungkin dapat mengatur -b ke 4096 jika disk Anda memiliki ukuran blok 4k.

Saya sarankan Anda pertama kali menjalankan badblock dengan uji rw non-destruktif. Jika menemukan bad sector, disk rusak dan harus diganti. Jika TIDAK menemukan blok buruk pada non-destruktif, tetapi Anda masih curiga ada badblock, maka jalankan tes rw destruktif.

Terakhir, berapa banyak alokasi ulang sektor SMART yang dapat diterima / haruskah drive dengan jumlah realokasi yang tidak nol segera diganti?

Saya akan mengganti drive segera setelah sektor diganti.

Thomas
sumber
2
Saya akan mengganti drive segera setelah sektor diganti. bagaimana Anda tahu bahwa blok menjadi buruk dalam operasi normal? Apakah Anda mendapat sinyal?
Alexis Wilke
5
Anda harus memantau log SMART.
Ярослав Рахматуллин
1
kecuali Anda memiliki alasan khusus untuk mengubahnya . Seperti memiliki ukuran blok yang berbeda dari standar 1024, mana yang sangat umum?
Carcamano
1

Jenis ini mengarah pada perbedaan antara mode baca badblock (non-destructive) dan mode tulis (destructive):

Drive hanya akan merealokasi sektor yang buruk ketika penulisan gagal. Kesalahan baca untuk file hanya bisa "diperbaiki" ketika upaya dilakukan untuk menulis ulang file. Jika tidak. blok buruk tetap menjadi bagian dari file dengan asumsi bahwa Anda mungkin dapat memulihkan sesuatu. Kesalahan baca untuk tabel partisi hanya dapat "diperbaiki" dengan menjalankan blok buruk dalam mode tulis dan membuat ulang partisi

Jadi, mode baca akan memberi tahu Anda di mana blok buruk berada tetapi tidak bisa berbuat apa-apa. Mode tulis menguji kesehatan masing-masing sektor dan akan menyebabkan disk mengalokasikan kembali blok yang buruk tetapi dengan mengorbankan menghancurkan data. Ambil pilihanmu.

David Miller
sumber
0

Untuk menjawab pertanyaan kedua Anda tentang sektor yang dipetakan kembali, itu tergantung. Saya berbicara dari konteks pengguna rumahan yang (kadang-kadang) memonitor hal semacam ini.

  • Seberapa penting data disimpan di drive?
  • Apa yang hilang jika drive tiba-tiba naik perut?
  • Apakah data dicadangkan di tempat lain?
  • Apakah drive anggota RAID di mana kehilangan drive memiliki dampak minimal?
  • Apakah jumlah sektor yang dipetakan kembali bertambah?

Inilah dua situasi yang saya hadapi. Saya memiliki RAID5 dari 6 200GB drive. Setelah kegagalan daya yang mengakibatkan lampu berkedip, satu drive menunjukkan 14 sektor yang dipetakan kembali dan mencatat beberapa kesalahan. Saya menyaksikan drive dan tidak ada lagi kesalahan yang dicatat dan jumlah sektor yang dipetakan kembali tetap stabil. Saya menyimpulkan bahwa drive menderita karena transien daya dan tidak gagal. Saya terus menggunakannya selama bertahun-tahun. RAID5 asli sudah pensiun tetapi saya memiliki dua drive yang beroperasi dengan daya sekitar 10 tahun pada jam. Mereka memiliki beberapa sektor yang dipetakan kembali. Saya menggunakan dua dari mereka mirrored untuk menyimpan dump cadangan tambahan dari cadangan utama saya. Dengan cara itu cadangan utama melihat (kebanyakan) operasi baca dan penulisan akan ke perangkat yang berbeda. Jika salah satu drive kuno ini gagal, yang lain harus terus berjalan. Jika keduanya gagal, Saya menggantinya dengan sesuatu yang lain dan menjalankan kembali skrip cadangan. Dampak jika salah satu drive ini gagal mendekati nol, jadi saya tidak khawatir tentang sektor yang dipetakan ulang.

Saya memiliki HDD 2TB yang merupakan salah satu dari sepasang drive yang dicerminkan dan yang mulai menumbuhkan sektor yang dipetakan kembali. Awalnya jumlahnya puluhan, lalu ratusan, lalu ribuan. Ini sudah bertahun-tahun. Drive lain dalam pasangan tetap sehat dan pada kenyataannya, penurunan yang perlahan-lahan gagal tidak jatuh dari array. Akhirnya saya mengganti kedua drive dengan drive 6TB dan jumlah sektor yang dipetakan kembali menjadi non-masalah. Saya masih memiliki drive dan masih "berfungsi," bahkan dengan sekitar 4.500 sektor yang dipetakan kembali. Saya telah meletakkan drive seperti ini dalam sistem uji (sebagai anggota RAID) untuk melihat apa yang terjadi ketika seseorang benar-benar mati. Saya memiliki beberapa peluang untuk bekerja dengan ini dan dalam semua keadaan penggantian pergi tanpa drama.

Saya memang mengalami kegagalan drive di server file cadangan utama saya. Ini tidak menghasilkan peringatan lanjut, hanya berhenti merespons perintah SATA. Itu adalah anggota ZFS RAIDZ2 dan saya menggantinya tanpa drama. Bahkan, pada server pengujian saya, saya telah mengganti drive yang gagal tanpa daya bersepeda atau me-reboot server.

Satu hal lagi yang perlu diperhatikan, saya memiliki cadangan semua data penting di situs dan di luar situs. Jika ada satu sistem yang hilang, ada dua salinan data di tempat lain.

HankB
sumber