Thiết lập
Tôi đã là một lập trình viên khá lâu rồi nhưng tôi vẫn hơi mơ hồ về những thứ nội tâm sâu sắc.
Hiện nay. Tôi cũng nhận thức được rằng đó cũng không phải là một ý tưởng hay:
- giết -9 một quá trình (xấu)
- Tự nhiên rút phích cắm điện trên máy tính hoặc máy chủ đang chạy (tệ hơn)
Tuy nhiên, đôi khi bạn chỉ đơn giản là phải. Đôi khi một quá trình sẽ không phản hồi bất kể bạn làm gì và đôi khi một máy tính sẽ không phản hồi, bất kể bạn làm gì.
Giả sử một hệ thống chạy Apache 2, MySQL 5, PHP 5 và Python 2.6.5 thông qua mod_wsgi.
Lưu ý: Tôi quan tâm nhất về Mac OS X ở đây, nhưng câu trả lời liên quan đến bất kỳ hệ thống UNIX nào sẽ giúp tôi hiểu.
Nỗi lo của tôi
Mỗi lần tôi phải làm một trong những điều này, đặc biệt là lần thứ hai, tôi rất lo lắng trong một khoảng thời gian mà một cái gì đó đã bị phá vỡ. Một số tệp ở đâu đó có thể bị hỏng - ai biết tệp nào? Có hơn 1.000.000 tệp trên máy tính.
Tôi thường sử dụng OS X, vì vậy tôi sẽ chạy thao tác "Xác minh đĩa" thông qua Tiện ích đĩa. Nó sẽ báo cáo không có vấn đề, nhưng tôi vẫn lo ngại về điều này.
Điều gì xảy ra nếu một số tập tin cấu hình ở đâu đó đã bị hỏng. Hoặc thậm chí tệ hơn, nếu một tệp nhị phân ở đâu đó bị hỏng. Hoặc một tập tin script ở đâu đó bị hỏng bây giờ. Điều gì nếu một số phần cứng bị hư hỏng?
Điều gì sẽ xảy ra nếu tôi không tìm hiểu về nó cho đến tháng tới, trong một kịch bản quan trọng, khi tham nhũng hoặc thiệt hại gây ra thảm họa?
Hoặc, nếu dữ liệu có giá trị đã bị mất thì sao?
Niềm hy vọng của tôi
Hy vọng của tôi là những mối quan tâm và lo lắng là không có cơ sở. Rốt cuộc, sau khi làm điều này nhiều lần trước đó, vẫn chưa có gì thực sự tồi tệ xảy ra. Điều tồi tệ nhất là tôi đã phải sửa chữa một số bảng MySQL, nhưng dường như tôi không bị mất bất kỳ dữ liệu nào.
Nhưng, nếu những lo lắng của tôi không phải là không có cơ sở, và thiệt hại thực sự có thể xảy ra trong cả tình huống 1 hoặc 2, thì hy vọng của tôi là có một cách để phát hiện và ngăn chặn nó.
Những câu hỏi của tôi)
Điều này có thể là do các hệ điều hành hiện đại được thiết kế để đảm bảo rằng không có gì bị mất trong các kịch bản này? Điều này có thể là do phần mềm hiện đại được thiết kế để đảm bảo không mất gì? Thiết kế phần cứng hiện đại thì sao? Biện pháp nào được đưa ra khi bạn rút phích cắm điện?
Câu hỏi của tôi là, đối với cả hai kịch bản này, chính xác điều gì có thể sai, và cần thực hiện các bước nào để khắc phục nó?
Tôi có ấn tượng rằng một điều có thể sai là một số chương trình có thể không đưa dữ liệu của họ vào đĩa, do đó, bất kỳ dữ liệu nào gần đây được cho là ghi vào đĩa (giả sử, vài giây trước khi mất điện ) có thể bị mất. Nhưng những gì về điều đó ngoài? Và vấn đề mất dữ liệu 5 giây này có làm hỏng hệ thống không?
Thế còn tham nhũng của các tệp ngẫu nhiên ẩn ở đâu đó trong rừng tệp khổng lồ trên ổ cứng của tôi thì sao?
Còn hư hỏng phần cứng thì sao?
Điều gì sẽ giúp tôi nhiều nhất
Mô tả chi tiết về những gì diễn ra trong nội bộ khi bạn giết -9 một quá trình hoặc kéo sức mạnh trên toàn hệ thống. (có vẻ như ngay lập tức, nhưng ai đó có thể làm chậm nó cho tôi không?)
Giải thích về tất cả những điều có thể sai trong các tình huống này, cùng với xác suất (tất nhiên là thô) (nghĩa là điều này rất khó xảy ra, nhưng điều này rất có thể) ...
Mô tả các biện pháp áp dụng trong phần cứng, hệ điều hành và phần mềm hiện đại, để ngăn ngừa thiệt hại hoặc tham nhũng khi những tình huống này xảy ra. (để an ủi tôi)
Hướng dẫn những việc cần làm sau khi giết -9 hoặc kéo điện, ngoài việc "xác minh đĩa", để thực sự đảm bảo không có gì bị hỏng hoặc bị hỏng ở đâu đó trên ổ đĩa.
Các biện pháp có thể được thực hiện để củng cố một thiết lập máy tính để nếu có thứ gì đó phải bị giết hoặc phải rút điện, mọi thiệt hại tiềm tàng đều được giảm nhẹ.
Một số thông tin về tệp nhị phân - không đúng là tệp nhị phân apache hoặc thư viện nào đó có thể có một byte ngẫu nhiên hoặc hai bị hỏng ở giữa, điều đó sẽ không xuất hiện và gây ra sự cố cho đến sau này? Làm thế nào tôi có thể đảm bảo với bản thân mình rằng điều này đã không xảy ra do sức mạnh hoặc sự giết chóc?
Cám ơn rất nhiều!