Seorang teman berbicara dengan saya tentang masalah bit busuk - bit pada drive membalik secara acak, merusak data. Sangat jarang, tetapi dengan waktu yang cukup itu bisa menjadi masalah, dan tidak mungkin dideteksi.
Drive tidak akan menganggapnya sebagai sektor yang buruk, dan cadangan hanya akan berpikir file telah berubah. Tidak ada checksum yang terlibat untuk memvalidasi integritas. Bahkan dalam pengaturan RAID, perbedaannya akan terdeteksi tetapi tidak akan ada cara untuk mengetahui salinan cermin mana yang benar.
Apakah ini masalah nyata? Dan jika demikian, apa yang bisa dilakukan untuk itu? Teman saya merekomendasikan zfs sebagai solusi, tetapi saya tidak bisa membayangkan meratakan server file kami di tempat kerja, memakai Solaris dan zfs ..
sumber
Jawaban:
Pertama: Sistem file Anda mungkin tidak memiliki checksum, tetapi hard drive Anda sendiri memilikinya. Ada SMART, misalnya. Sekali terlalu banyak dibalik, kesalahan tidak bisa diperbaiki, tentu saja. Dan jika Anda benar-benar beruntung, bit dapat berubah sedemikian rupa sehingga checksum tidak akan menjadi tidak valid; maka kesalahan bahkan tidak akan terdeteksi. Jadi, hal-hal buruk bisa terjadi; tetapi klaim bahwa membalik sedikit acak akan langsung merusak data Anda adalah palsu.
Namun, ya, ketika Anda meletakkan triliunan bit pada hard drive, mereka tidak akan tetap seperti itu selamanya; itu masalah nyata! ZFS dapat melakukan pemeriksaan integritas setiap kali data dibaca; ini mirip dengan apa yang sudah dilakukan oleh hard drive Anda sendiri, tetapi ini merupakan pengamanan lain untuk Anda yang mengorbankan sebagian ruang, sehingga Anda meningkatkan ketahanan terhadap korupsi data.
Ketika sistem file Anda cukup baik, kemungkinan kesalahan terjadi tanpa terdeteksi menjadi sangat rendah sehingga Anda tidak perlu peduli tentang itu lagi dan Anda mungkin memutuskan bahwa memiliki checksum yang dibangun ke dalam format penyimpanan data yang Anda gunakan adalah tidak perlu.
Either way: tidak, itu tidak mungkin untuk dideteksi .
Tetapi sistem file, dengan sendirinya, tidak pernah bisa menjadi jaminan bahwa setiap kegagalan dapat dipulihkan dari; itu bukan peluru perak. Anda masih harus memiliki cadangan dan rencana / algoritma untuk apa yang harus dilakukan ketika kesalahan telah terdeteksi.
sumber
Ya itu masalah, terutama karena ukuran drive naik. Sebagian besar drive SATA memiliki tingkat URE (kesalahan pembacaan yang tidak dapat diperbaiki) sebesar 10 ^ 14. Atau untuk setiap 12TB data yang dibaca secara statistik, vendor drive mengatakan drive akan mengembalikan pembacaan gagal (Anda biasanya dapat melihatnya pada lembar spesifikasi drive). Drive akan terus berfungsi dengan baik untuk semua bagian drive lainnya. Drive Enterprise FC & SCSI umumnya memiliki tingkat URE 10 ^ 15 (120TB) bersama dengan sejumlah kecil drive SATA yang membantu menguranginya.
Saya tidak pernah melihat disk berhenti berputar pada waktu yang sama, tetapi saya telah mengalami volume serangan raid5 masalah ini (5 tahun yang lalu dengan drive PATA konsumen 5400RPM). Drive gagal, itu ditandai mati dan terjadi pembangunan kembali ke drive cadangan. Masalahnya adalah bahwa selama pembangunan kembali drive kedua tidak dapat membaca satu blok data kecil itu. Bergantung pada siapa yang melakukan penggerebekan, seluruh volume mungkin mati atau hanya blok kecil itu yang mungkin mati. Dengan asumsi hanya satu blok yang mati, jika Anda mencoba membacanya Anda akan mendapatkan kesalahan tetapi jika Anda menulisnya, drive akan memetakannya kembali ke lokasi lain.
Ada beberapa metode yang harus dilindungi: raid6 (atau yang setara) yang melindungi terhadap kegagalan disk ganda adalah yang terbaik, yang lainnya adalah filesystem sadar URE seperti ZFS, menggunakan grup raid yang lebih kecil sehingga secara statistik Anda memiliki peluang lebih kecil untuk menabrak drive URE batas (mirror drive besar atau drive raid5 lebih kecil), scrubbing disk & SMART juga membantu tetapi tidak benar-benar perlindungan itu sendiri tetapi digunakan sebagai tambahan untuk salah satu metode di atas.
Saya mengelola hampir 3000 spindle di array, dan array terus-menerus menggosok drive mencari URE laten. Dan saya menerima aliran yang cukup konstan dari mereka (setiap kali menemukan itu memperbaikinya sebelum kegagalan drive dan mengingatkan saya), jika saya menggunakan raid5 bukan raid6 dan salah satu drive benar-benar mati ... Saya akan akan bermasalah jika menghantam lokasi tertentu.
sumber
Hard drive umumnya tidak mengkodekan bit data sebagai domain magnetik tunggal - produsen hard drive selalu menyadari bahwa domain magnetik dapat membalik, dan membangun deteksi kesalahan dan koreksi ke drive.
Jika sedikit terbalik, drive berisi cukup data yang berlebihan yang dapat dan akan diperbaiki pada saat sektor tersebut dibaca. Anda dapat melihat ini jika Anda memeriksa statistik SMART pada drive, sebagai 'Tingkat kesalahan yang dapat diperbaiki'.
Tergantung pada detail drive, itu bahkan harus dapat pulih dari lebih dari satu bit yang terbalik di suatu sektor. Akan ada batas jumlah bit yang dibalik yang dapat dikoreksi secara diam-diam, dan mungkin batas lain untuk jumlah bit yang dibalik yang dapat dideteksi sebagai kesalahan (bahkan jika tidak ada lagi data yang cukup andal untuk memperbaikinya)
Ini semua menambahkan fakta bahwa hard drive dapat secara otomatis memperbaiki sebagian besar kesalahan saat terjadi, dan dapat diandalkan untuk mendeteksi sebagian besar sisanya. Anda harus memiliki sejumlah besar kesalahan bit dalam satu sektor, bahwa semua terjadi sebelum sektor itu dibaca lagi, dan kesalahan tersebut harus sedemikian rupa sehingga kode deteksi kesalahan internal melihatnya sebagai data yang valid lagi, sebelum Anda akan pernah mengalami kegagalan diam. Itu bukan tidak mungkin, dan saya yakin bahwa perusahaan yang mengoperasikan pusat data yang sangat besar melihat itu terjadi (atau lebih tepatnya, itu terjadi dan mereka tidak melihat itu terjadi), tetapi tentu saja itu bukan masalah besar seperti yang mungkin Anda pikirkan.
sumber
Hard drive modern (sejak 199x) tidak hanya memiliki checksum tetapi juga ECC, yang dapat mendeteksi dan memperbaiki sedikit bit bit "acak". Lihat: http://en.wikipedia.org/wiki/SMART .
Di sisi lain, bug tertentu dalam firmware dan driver perangkat juga dapat merusak data pada kesempatan yang jarang (jika tidak QA akan menangkap bug) yang akan sulit dideteksi jika Anda tidak memiliki checksum level yang lebih tinggi. Driver perangkat awal untuk SATA dan NIC memiliki data yang rusak pada Linux dan Solaris.
ZFS checksum sebagian besar bertujuan untuk bug di perangkat lunak tingkat rendah. Sistem penyimpanan / basis data yang lebih baru seperti Hypertable juga memiliki checksum untuk setiap pembaruan untuk melindungi dari bug di sistem file :)
sumber
Secara teoritis, ini memprihatinkan. Secara praktis, ini adalah bagian dari alasan kami menyimpan cadangan anak / orang tua / kakek nenek. Cadangan tahunan harus disimpan setidaknya selama 5 tahun, IMO, dan jika Anda memiliki kasus ini akan kembali lebih jauh dari itu, file tersebut jelas tidak terlalu penting.
Kecuali jika Anda berurusan dengan bit yang berpotensi mencairkan otak seseorang , saya tidak yakin risiko vs hadiah cukup sampai mengubah sistem file.
sumber
Ya itu masalah.
Ini adalah salah satu alasan mengapa RAID6 sekarang dalam mode (serta meningkatkan ukuran HD meningkatkan waktu untuk membangun kembali sebuah array). Memiliki dua blok paritas memungkinkan untuk cadangan tambahan.
Sistem RAID sekarang juga melakukan Penggosokan RAID yang secara berkala membaca blok disk, memeriksa paritas, dan menggantinya jika menemukan blok menjadi buruk.
sumber
Sehubungan dengan pernyataan OP tentang RAID tidak memahami data apa yang baik vs buruk.
Pengontrol RAID menggunakan paling tidak, bit paritas (ganjil / genap) pada setiap strip data. Ini untuk segalanya; strip data-on-disk dan strip data paritas (cadangan).
Ini berarti bahwa untuk semua tipe RAID yang memiliki striping untuk redundansi (RAID 5/6) controller dapat secara akurat mengetahui apakah strip data asli telah berubah, dan juga, jika strip data redundansi telah berubah.
Jika Anda memperkenalkan strip redundan kedua seperti RAID6, Anda harus memiliki 3 strip data, pada tiga drive yang berbeda menjadi rusak, yang semuanya sesuai dengan data file aktual yang sama. Ingat bahwa sebagian besar sistem RAID menggunakan strip data yang relatif kecil (128 kb atau kurang) sehingga kemungkinan "bit busuk" berbaris ke 128kb yang sama, dari file yang sama, praktis tidak mungkin.
sumber
Ini masalah dunia nyata, ya, tapi pertanyaannya adalah apakah Anda harus khawatir atau tidak.
Jika Anda hanya mendapatkan gambar penuh hdd, itu mungkin tidak sepadan. Ini penuh dengan data ilmiah penting, mungkin itu jenis cerita lain, Anda tahu.
sumber