Bagaimana saya bisa mengurangi waktu tunggu IO dan coba lagi kali sehingga OS tidak terus mencoba untuk menulis ke drive yang gagal?
Saya memiliki sistem yang saya gunakan untuk membuat salinan konten demo yang dipinjamkan ke pelanggan ke hard drive desktop SATA biasa. Kami menghubungkan banyak drive sekaligus melalui SAS dan menyalin konten ke mereka menggunakan skrip.
Karena drive dipinjamkan, kadang-kadang beberapa kembali rusak tetapi saya tidak tahu bahwa itu rusak, jadi pada saat drive tersebut digunakan kembali dalam operasi penyalinan, drive memperlambat drive lain saat sistem mencoba IO ke drive itu. Terkadang butuh waktu berjam-jam sebelum saya melihat drive buruk dan menghapusnya. Setelah drive dilepas, sisa drive mulai menulis dengan kecepatan normal.
Saya tidak peduli tentang memulihkan drive buruk. Saya hanya perlu menyingkirkan mereka sehingga mereka tidak memperlambat segalanya.
Saya juga meneliti badblock dan smartmontools dan mempertimbangkan untuk menulis pra-cek pada drive sebelum saya mulai menulis.
OS: Ubuntu Linux (12,04 lts)
udisks
/smartmonctl
? Masalah klasik XY di sini, metinks.ddrescue
sehingga bahkan tidak menyentuh sektor yang dilaporkan oleh SMART.)Jawaban:
Saya belum pernah menggunakan tunable ini sebelumnya, tetapi Anda mungkin ingin menyesuaikan eh_timeout (penanganan error timeout) untuk drive yang dimaksud:
Acara di atas
sda
diatur ke 10 detik. Dari Red Hat Knowledgebase:sumber
eh_timeout
tetapi saya dapat mengubahtimeout
untuk menyelesaikan tugas yang ada.Pantau
/sys/block/<dev>/stat
perangkat yang Anda minati dan bandingkan parameter ke-10 (io_ticks).misalnya,
ticks = io_ticks - prev_ticks / seconds_deltatime / 10
Ini adalah persentase waktu yang tersedia yang telah dihabiskan oleh disk untuk menunggu disk io.
Mendekati 100% tentu saja layak untuk diperiksa, atau menjadi sangat pintar dan membandingkannya dengan rata-rata semua disk Anda dan memilih disk apa pun di atas rata-rata.
Lihat dokumentasi statistik lapisan blok .
Lain gunakan sesuatu seperti Munin dan grafik itu. Anda bisa membuat Munin waspada jika melampaui ambang, misalnya 90% atau apa pun yang ditampilkan grafik adalah angka peringatan yang baik.
misalnya, lihat dua grafik Munin ini yang menunjukkan bahwa / dev / sdi perlu dilihat. Dalam contoh ini jika / dev / sdi adalah bagian dari array, seluruh array akan menderita karenanya.
Jika Anda melihat grafik minggu Anda akan melihat bahwa / dev / sdc mungkin lambat juga.
Saya harus menambahkan bahwa / dev / sdi di atas tidak rusak, itu hanya disk lambat (sebenarnya disk hijau yang ditambahkan seseorang ke array disk sata kelas perusahaan) yang memperlambat array ke bawah. Disk yang gagal sebenarnya akan menonjol seperti jempol yang sakit.
Singkatnya, saya mungkin akan pergi dengan skrip jika saya punya waktu, tetapi Munin jika saya hanya ingin solusi cepat dan menghubungkan ke server itu mudah.
sumber