Installer
Je suis programmeur depuis un certain temps maintenant, mais je suis toujours un peu flou sur les choses profondes et internes.
Maintenant. Je suis bien conscient que ce n'est pas une bonne idée non plus:
- kill -9 un processus (mauvais)
- tirez spontanément la fiche d'alimentation sur un ordinateur ou un serveur en cours d'exécution (pire)
Cependant, parfois vous devez simplement le faire. Parfois, un processus ne répond tout simplement pas, quoi que vous fassiez, et parfois un ordinateur ne répond tout simplement pas, quoi que vous fassiez.
Supposons un système exécutant Apache 2, MySQL 5, PHP 5 et Python 2.6.5 via mod_wsgi.
Remarque: Mac OS X m'intéresse le plus ici, mais une réponse qui concerne tout système UNIX pourrait m'aider.
Ma préoccupation
Chaque fois que je dois faire l'un ou l'autre, en particulier le second, je suis très inquiet pendant un certain temps que quelque chose ait été cassé. Un fichier quelque part pourrait être corrompu - qui sait quel fichier? Il y a plus de 1 000 000 de fichiers sur l'ordinateur.
J'utilise souvent OS X, je vais donc exécuter une opération "Vérifier le disque" via l'utilitaire de disque. Il ne signalera aucun problème, mais cela m'inquiète toujours.
Et si un fichier de configuration quelque part était foutu. Ou pire encore, que se passe-t-il si un fichier binaire quelque part est corrompu. Ou un fichier de script quelque part est corrompu maintenant. Que faire si du matériel est endommagé?
Et si je ne l'apprends que le mois prochain, dans un scénario critique, lorsque la corruption ou les dégâts provoquent une catastrophe?
Ou, que faire si des données précieuses sont déjà perdues?
Mon espoir
J'espère que ces préoccupations et inquiétudes ne sont pas fondées. Après tout, après avoir fait cela plusieurs fois auparavant, rien de vraiment mauvais ne s'est encore produit. Le pire est que j'ai dû réparer certaines tables MySQL, mais je ne semble pas avoir perdu de données.
Mais, si mes inquiétudes ne sont pas infondées et que des dommages réels pourraient survenir dans l'une ou l'autre des situations 1 ou 2, alors j'espère qu'il existe un moyen de le détecter et de le prévenir.
Mes questions)
Serait-ce parce que les systèmes d'exploitation modernes sont conçus pour garantir que rien ne soit perdu dans ces scénarios? Serait-ce parce que les logiciels modernes sont conçus pour garantir que rien ne soit perdu? Qu'en est-il de la conception matérielle moderne? Quelles sont les mesures en place lorsque vous retirez la fiche d'alimentation?
Ma question est, pour ces deux scénarios, qu'est-ce qui peut mal tourner exactement et quelles mesures devraient être prises pour y remédier?
J'ai l'impression qu'une chose qui peut mal tourner est que certains programmes n'ont peut-être pas vidé leurs données sur le disque, donc toutes les données très récentes qui étaient censées être écrites sur le disque (disons, quelques secondes avant la coupure d'alimentation) ) pourrait être perdu. Mais qu'en est-il au-delà de cela? Et ce problème même de perte de données de 5 secondes peut-il gâcher un système?
Qu'en est-il de la corruption de fichiers aléatoires se cachant quelque part dans l'immense forêt de fichiers sur mes disques durs?
Qu'en est-il des dommages matériels?
Qu'est-ce qui m'aiderait le plus
Descriptions détaillées de ce qui se passe en interne lorsque vous tuez -9 un processus ou mettez le système sous tension. (cela semble instantané, mais quelqu'un peut-il le ralentir pour moi?)
Explications de tout ce qui pourrait mal tourner dans ces scénarios, avec des probabilités (grossières bien sûr) (c'est-à-dire, c'est très peu probable, mais c'est probable) ...
Descriptions des mesures en place dans le matériel, les systèmes d'exploitation et les logiciels modernes pour éviter les dommages ou la corruption lorsque ces scénarios se produisent. (pour me réconforter)
Des instructions sur ce qu'il faut faire après un kill -9 ou une coupure d'alimentation, au-delà de "vérifier le disque", afin de s'assurer vraiment que rien n'est corrompu ou endommagé quelque part sur le lecteur.
Mesures qui peuvent être prises pour fortifier une configuration informatique afin que si quelque chose doit être tué ou que l'alimentation doit être coupée, tout dommage potentiel soit atténué.
Quelques informations sur les fichiers binaires - n'est-il pas vrai que le fichier binaire apache ou une bibliothèque pourrait avoir un octet aléatoire ou deux corrompus au milieu, cela ne sortirait pas et ne poserait de problème que plus tard? Comment puis-je m'assurer que cela ne s'est pas produit à la suite d'une coupure de courant ou d'une mise à mort?
Merci beaucoup!