Q: apa itu data corruption?
Data corruption artinya data ketika dibaca tidak sama seperti ketika ditulis. Artinya data tersebut berubah.
Q: cara mendeteksi data corruption?
bisa pake checksum (md5, SHA). trus nanti akan keluar sebuah nilai. nilai yang keluar ini bisa dikatakan sebagai fingerprint dari data tersebut.
contoh command: md5sum file_name
Q: cara kerja md5sum?
md5sum menelusuri file dan membuat fingerprint dari file tersebut. kalo ada 1 character/bit berubah, maka fingerprint otomatis akan berubah. sehingga, jika ada sebuah file tidak pernah dimodifikasi, tapi setelah berapa lama fingerprintnya berubah, maka data tersebut corrupt!!.
Q: ada berapa macam tipe data corruption?
ada dua:
– noisy data corruption (NDC)
– silent data corruption (SDC)
Q: maksudnya noisy data corruption?
artinya ada warning tentang data corruption. bisa berupa: hardware LED yang blinking, /var/adm/messages, console, dll. kalo kasus yang beginian mah penanganannya gampang: ganti hardware, re-build RAID.
Q: maksudnya silent data corruption?
ini yang bahaya. data corrupt tapi ngak bilang2. ngak ada warning. semua sensor/instrument mengatakan baik (LED, logs, console). nothing wrong happened! tapi sebenernya ada data yang corrupt. penanganannya susah!! karena apa yang mau diperbaiki? semua indikator mengatakan baik!!
Q: penyebab data corruption?
macem2:
– hardware error: RAM, CPU, disks, cable, motherboard
– software bugs: firmware (eg. hardware RAID), kernel, filesystem, application crash
– external: blackout (mati lampu)
semua faktor diatas bisa menyebabkan data corruption, baik NDC maupun SDC.
Q: apakah “silent data corruption” bisa terjadi di traditional mirror?
ya, sangat mungkin terjadi. traditional mirror yang dimaksud disini adalah metode mirror yang banyak dipakai sekarang ini. yang tidak ada fasilitas untuk mendeteksi apalagi mengkoreksi SDC.
Q: penjelasan tentang silent data corruption yang terjadi di traditional mirror?
cara kerja traditional mirror adalah:
– ketika write: menulis di 2 harddisk sekaligus. misal HD0 dan HD1.
– ketika read: membaca hanya dari 1 harddisk saja. HD1 atau HD1. kernel akan memutuskan secara random harddisk mana yang akan dia baca. bisa jadi hari ini baca dari HD0, besok baca HD1.
yang jadi masalah ketika read, software mirror tidak mengecek integritas data yang dibacanya,
karena ia berasumsi bahwa data sudah benar ditulis dan tidak ada NDC.
ketika terjadi SDC pada salah satu harddisk dan kernel membaca harddisk tersebut, maka barulah adminnya nyaho!! ini udah di mirror, tapi kok ada yang corrupt yah?
Q: pernah mengalami silent data corruption?
ya. commodity harddisk (ATA/SATA) yang banyak beredar saat ini adalah salah satu sumbernya.
saya pernah pake RAID5 di linux, yang cukup tinggi proses read/write nya.
setelah 1 tahun, ketika mau migrasi ke server baru, beberapa data tidak dapat di pindah karena system tidak dapat membacanya. padahal status RAID adalah healthy. dari /var/log/messages tidak ada catatan yang mencurigakan. dari sini saya berkesimpulan bahwa terjadi SDC di server saya.
Q: apakah ada sumber lain yang mengkonfirmasi adanya SDC?
ya. lihat references
Q: mengatasi silent data corruption?
– pake hardware bagus:
pilih hardware yang punya banyak instrument untuk mendetect data error. misal server dari vendor terkenal. ngak usah disebutin disini yah. ntar jadi promosi gratis. misal:
RAM ECC: mencegah error yang terjadi di RAM. Juga pada saat transfer data dari/ke CPU.
hardisk dgn NVRAM: mencegah data corrupt ketika lampu mati
konsekuensi pilihan ini: MAHAL dan masih ada celah SDC.
– pake ZFS:
say goodbye to SDC, dan gratis bo!!! performance read/write juga bisa jadi meningkat dengan ZFS.
– kombinasi keduanya. ini joss banget!!
Q: bagaimana ZFS mendeteksi data corruption?
kalo pake ZFS, maka tiap blok di harddisk akan dibuat checksumnya. dan OS akan mempunyai checksum database dari harddisk yang digunakan. ketika membaca data dari blok, maka OS akan melakukan komparasi checksum yang di databasenya dan yang berada di blok tersebut. kalo ngak sama, akan muncul warning. simple toh?
Q: bagaimana ZFS mirror / RAIDZ bekerja?
yang berbeda adalah ketika proses read. ketika melakukan operasi read pada ZFS mirror, maka OS akan memeriksa checksum dari kedua harddisk. jika ada checksum dari salah satu harddisk yang berbeda, maka akan muncul warning.
Q: bagaimana ZFS mirror / RAIDZ bisa mengkoreksi error?
ketika OS mendeteksi ada checksum yang mismatch, maka ZFS akan langsung memperbaiki blok yang corrupt tersebut dengan cara mengambil data dari harddisk yang sehat. mirip ketika ada sebuah harddisk raid5 yang rusak dan di ganti baru, maka OS bisa build lagi harddisk baru tersebut berbekal checksum & informasi dari blok yang lain.
references:
– IEEE journal kalo pengen baca, harus jadi member dan bayar. berhubung saya student sini, jadi bisa akses.
– solaris ZFS
– CERN (Peter.Kelemen@cern.ch)
– http://blogs.sun.com/pgdh/entry/silent_data_corruption_the_wicked
– livejournal
– http://www.enterprisestorageforum.com/sans/features/article.php/3704666
– http://blogs.zdnet.com/Ou/?p=663
– http://blogs.zdnet.com/storage/?p=191
– personal experiences
ini adalah copyright material.
dilarang menyebarkan tanpa ijin penulis.
Salam,
Achmad Mardiansyah
versi pendek URL: http://bit.ly/fAr4lC
MD5, SHA, adalah algoritma one way function. Salah satu kegunaannya adalah untuk integrity check.
Oh ya, anda pernah melakukan RAID 5 di Linux. Apakah diimplementasikan menggunakan software atau hardware?
saya pake RAID5 software, dengan 3 harddisk @ 250GB, build timenya sampe 6 jam! gila!
spek komputer: di P4 HT 1GHz RAM. diatasnya saya pake reiserfs.
distro: archlinux.