Disimpan sejak Oktober 2019

Post-mortem: batch firmware yang buruk, dan mirror yang bukan mirror

Empat puluh satu drive NVMe dari satu batch produksi berhenti merespons pada jumlah jam operasi yang sama. Dua instans pelanggan kehilangan data, dan kesalahan batching sepenuhnya dari pihak kami.

Ringkasan

Antara 29 Oktober dan 1 November 2024, empat puluh satu drive NVMe kelas enterprise di empat lokasi berhenti menerima perintah pada hitungan jam daya aktif yang tetap, sebuah cacat firmware pada satu batch manufaktur. Mirror menyerap tiga puluh sembilan dari kegagalan tersebut tanpa dampak pada pelanggan. Satu node di Warsawa kehilangan kedua bagian mirror dalam empat puluh menit, karena kedua drive berasal dari batch yang sama dan dipasang pada hari yang sama. Dua instans di node tersebut kehilangan data. Bagian kedua itu adalah kesalahan kami, bukan kesalahan vendor.

Linimasa

Semua waktu UTC.

WaktuPeristiwa
29 Okt 03:11Drive terputus dari bus di node Warsawa. Mirror menurun, hot spare mulai membangun ulang. Rutin, tidak ada alert.
29 Okt 03:49Drive kedua dalam mirror yang sama juga terputus. Node kehilangan root pool dan berhenti.
29 Okt 03:52Alert menyala. On-call online pada 03:55.
29 Okt 04:20Node dinyatakan tidak dapat dipulihkan di tempat. Rebuild dari hot spare tidak mungkin; spare sedang dalam proses rebuild dari sumber yang tidak lagi merespons.
29 Okt 05:40Insinyur yang memeriksa log drive menyadari kedua kegagalan tersebut terpisah delapan belas jam daya aktif, bukan delapan belas bulan. Kecurigaan bergeser dari nasib buruk ke kelompok.
29 Okt 06:15Kueri seluruh armada berdasarkan ID batch dan jam daya aktif. Dua ratus enam drive berada dalam batch yang terdampak. Tiga puluh satu telah melewati jumlah tersebut dan gagal; sisanya berada antara empat puluh hingga sembilan ratus jam lagi dari kegagalan.
29 Okt 07:30Vendor dihubungi. Cacat dikonfirmasi dalam empat jam: sebuah penghitung dalam telemetri wear-levelling meluap pada 1.536 jam daya aktif dan mengunci pengontrol. Revisi firmware yang memperbaikinya telah dirilis, secara diam-diam, enam minggu sebelumnya.
29 Okt 09:00Pembaruan firmware bergulir dimulai, diprioritaskan berdasarkan sisa jam.
30 Okt 22:40Drive terakhir di batch diperbarui atau diganti.
1 Nov 14:00Instans pelanggan yang terdampak dipulihkan atau mendapatkan pengembalian dana.

Akar masalah

Dua penyebab, dan hanya satu yang menjadi milik pabrikan drive.

Punca mereka: penghitung telemetri meluap pada jumlah jam daya aktif tetap dan menggantung pengontrol. Drive bertahan dari satu siklus daya, kembali hidup, dan mengunci lagi dalam hitungan menit. Data pada piringan utuh namun tidak dapat diakses, yang merupakan kombinasi terburuk bagi siapa pun yang mencoba mendiagnosisnya pada pukul empat pagi.

Punca kami: kami membangun mirror dari drive yang tiba dalam pengiriman yang sama. Mirror dimaksudkan sebagai dua domain kegagalan yang independen, dan dua drive dari satu batch, dipasang pada sore yang sama, dinyalakan dalam jam yang sama, tidak independen dalam hal apa pun yang penting. Sebelas mirror di seluruh armada dibangun dengan cara ini. Sepuluh beruntung karena hot spare selesai membangun ulang lebih dulu. Satu tidak.

Kami telah mengetahui hal ini secara prinsip selama bertahun-tahun. Tidak ada yang menuliskannya ke dalam prosedur pembangunan, dan prosedur pembangunan adalah apa yang diikuti orang pada pukul dua pagi di bawah tenggat pengiriman.

Dampak

  • Tiga puluh sembilan kegagalan diserap oleh mirror tanpa efek yang terlihat oleh pelanggan.
  • Satu node offline selama sembilan jam delapan belas menit.
  • Empat belas instans pada node tersebut dipulihkan dari cadangan off-node, kehilangan paling banyak sebelas menit penulisan.
  • Dua instans tanpa cadangan apa pun. Keduanya kehilangan semua data pada node.

Apa yang kami ubah

  1. Batch pembelian dipisah. Tidak ada dua drive dari batch yang sama yang boleh membentuk mirror, dan hot spare yang melindungi sepasang drive berasal dari batch ketiga. Ditegakkan oleh alat pembangunan, bukan oleh dokumen. Selesai 4 November.
  2. Peringatan kohort pada jam daya aktif. Kami kini memberi peringatan ketika lebih dari empat drive yang berbagi ID batch berada dalam seratus jam satu sama lain dan mendekati angka bulat jam mana pun. Ini adalah heuristik kasar dan akan menangkap masalah ini sembilan belas hari lebih awal.
  3. Uji firmware sebelum produksi. Keluarga drive baru dijalankan dua ribu jam daya aktif di rak pengujian sebelum membawa data pelanggan. Cacat ini akan muncul pada 1.536.
  4. Kami kini membaca catatan rilis firmware vendor secara terjadwal. Perbaikan sudah ada enam minggu sebelum kami membutuhkannya. Tidak ada yang ditugaskan untuk melihat, jadi tidak ada yang melihat.

Apa yang tidak kami ubah, dan alasannya

Kami tidak mengubah keluarga drive atau vendor. Cacatnya nyata dan pengungkapannya buruk, tetapi kerugian kami berasal dari batch yang berkorelasi, yang akan kami reproduksi dengan pabrikan mana pun. Berganti akan terasa tegas dan tidak memperbaiki apa pun.

Cadangan off-node tetap menjadi add-on seharga sembilan euro per lima ratus gigabita. Membuatnya universal berarti membebani setiap pelanggan dengan layanan yang sebagian besar dari mereka sudah replika sendiri, dan kami tidak akan menagih orang demi penampilan keamanan. Yang berubah adalah formulir pemesanan, yang sekarang menyatakan dengan jelas bahwa penyimpanan instans dimirror dan dimirror bukanlah cadangan, dan langkah konfirmasi tidak lagi memungkinkan kalimat itu dilewati begitu saja.

Kami tidak beralih ke triple mirroring. Ini membutuhkan biaya sepertiga lebih per gigabita dan tidak mengatasi kegagalan yang berkorelasi, yang merupakan mekanisme sebenarnya di sini. Dua domain independen mengalahkan tiga domain yang bergantung.

Dua pelanggan

Keduanya mendapat pengembalian dana penuh untuk masa yang terdampak, dalam aset yang mereka bayar, tanpa diminta membenarkan apa pun. Satu pergi. Yang lain tetap dan sekarang membeli add-on cadangan, setelah membaca kalimat yang sama di formulir pemesanan yang sudah ada dalam bentuk yang lebih lemah selama ini.

Tidak satu pun dari hasil tersebut berada dalam kuasa kami. Satu-satunya hal yang berada dalam kuasa kami adalah membangun mirror dengan benar, dan kami tidak melakukannya.

Siap saat Anda siap

Pilih kota. Pilih ukuran. Bayar dengan koin.

Tanpa formulir tentang siapa Anda, tanpa menunggu manusia untuk menyetujui, tanpa panggilan telepon untuk memverifikasi apa pun. Invoice dibersihkan dan kredensial masuk ke kotak masuk Anda.