Mempersiapkan
Saya sudah menjadi seorang programmer untuk beberapa waktu sekarang, tetapi saya masih agak bingung tentang hal-hal internal yang mendalam.
Sekarang. Saya sadar bahwa itu juga bukan ide yang baik:
- kill -9 a process (bad)
- secara spontan menarik steker listrik pada komputer atau server yang sedang berjalan (lebih buruk)
Namun, terkadang Anda harus melakukannya. Terkadang suatu proses tidak akan merespons apa pun yang Anda lakukan, dan kadang-kadang komputer tidak mau merespons, apa pun yang Anda lakukan.
Mari kita asumsikan sebuah sistem yang menjalankan Apache 2, MySQL 5, PHP 5, dan Python 2.6.5 melalui mod_wsgi.
Catatan: Saya paling tertarik dengan Mac OS X di sini, tetapi jawaban yang berkaitan dengan sistem UNIX akan membantu saya.
Perhatian ku
Setiap kali saya harus melakukan salah satu dari ini, terutama yang kedua, saya sangat khawatir untuk periode waktu bahwa ada sesuatu yang rusak. Beberapa file di suatu tempat bisa rusak - siapa yang tahu file mana? Ada lebih dari 1.000.000 file di komputer.
Saya sering menggunakan OS X, jadi saya akan menjalankan operasi "Verifikasi Disk" melalui Disk Utility. Akan melaporkan tidak ada masalah, tapi saya masih khawatir tentang ini.
Bagaimana jika beberapa file konfigurasi di suatu tempat kacau. Atau lebih buruk lagi, bagaimana jika file biner di suatu tempat rusak. Atau file skrip di suatu tempat rusak sekarang. Bagaimana jika beberapa perangkat keras rusak?
Bagaimana jika saya tidak mengetahuinya sampai bulan depan, dalam skenario kritis, ketika korupsi atau kerusakan menyebabkan malapetaka?
Atau, bagaimana jika data berharga sudah hilang?
Harapanku
Harapan saya adalah bahwa kekhawatiran dan kekhawatiran ini tidak berdasar. Lagi pula, setelah melakukan ini berkali-kali sebelumnya, belum ada hal buruk yang terjadi. Yang terburuk adalah saya harus memperbaiki beberapa tabel MySQL, tapi sepertinya saya tidak kehilangan data.
Tetapi, jika kekhawatiran saya tidak berdasar, dan kerusakan nyata dapat terjadi pada situasi 1 atau 2, maka harapan saya adalah bahwa ada cara untuk mendeteksi dan mencegahnya.
Pertanyaan saya)
Mungkinkah ini karena sistem operasi modern dirancang untuk memastikan bahwa tidak ada yang hilang dalam skenario ini? Mungkinkah ini karena perangkat lunak modern dirancang untuk memastikan tidak ada yang hilang? Bagaimana dengan desain perangkat keras modern? Tindakan apa yang dilakukan saat Anda mencabut steker listrik?
Pertanyaan saya adalah, untuk kedua skenario ini, apa yang sebenarnya salah, dan langkah apa yang harus diambil untuk memperbaikinya?
Saya mendapat kesan bahwa satu hal yang bisa salah adalah beberapa program mungkin tidak mem-flush data mereka ke disk, jadi setiap data yang sangat baru yang seharusnya ditulis ke disk (katakanlah, beberapa detik sebelum power pull) ) mungkin hilang. Tapi bagaimana dengan hal itu? Dan bisakah masalah hilangnya data 5 detik ini merusak sistem?
Bagaimana dengan korupsi file acak yang bersembunyi di suatu tempat di hutan besar file di hard drive saya?
Bagaimana dengan kerusakan perangkat keras?
Apa yang Paling Membantu Saya
Penjelasan terperinci tentang apa yang terjadi secara internal ketika Anda membunuh -9 suatu proses atau menarik daya pada keseluruhan sistem. (Kelihatannya instan, tetapi bisakah seseorang memperlambatnya untuk saya?)
Penjelasan dari semua hal yang bisa salah dalam skenario ini, bersama dengan probabilitas (kasar tentu saja) (yaitu, ini sangat tidak mungkin, tetapi ini kemungkinan) ...
Deskripsi langkah-langkah yang ada di perangkat keras, sistem operasi, dan perangkat lunak modern, untuk mencegah kerusakan atau korupsi saat skenario ini terjadi. (untuk menghiburku)
Petunjuk untuk apa yang harus dilakukan setelah kill -9 atau tarikan daya, di luar "memverifikasi disk", untuk memastikan tidak ada yang rusak atau rusak di suatu tempat di drive.
Tindakan yang dapat diambil untuk memperkuat pengaturan komputer sehingga jika ada sesuatu yang harus dimatikan atau daya harus ditarik, potensi kerusakan dapat dikurangi.
Beberapa informasi tentang file biner - bukankah benar bahwa file biner apache atau pustaka bisa memiliki byte acak atau dua rusak di tengah, yang tidak akan keluar dan menyebabkan masalah sampai nanti? Bagaimana saya bisa meyakinkan diri sendiri bahwa ini tidak terjadi sebagai akibat dari penarikan daya atau pembunuhan?
Terima kasih banyak!