Preparar
He sido programador durante bastante tiempo, pero todavía estoy un poco confuso en cosas internas profundas.
Ahora. Soy consciente de que tampoco es una buena idea:
- matar -9 un proceso (malo)
- desconecte espontáneamente el enchufe de alimentación de una computadora o servidor en funcionamiento (peor)
Sin embargo, a veces simplemente tienes que hacerlo. A veces, un proceso simplemente no responde sin importar lo que haga, y a veces una computadora simplemente no responde, sin importar lo que haga.
Supongamos un sistema que ejecuta Apache 2, MySQL 5, PHP 5 y Python 2.6.5 a través de mod_wsgi.
Nota: Aquí estoy más interesado en Mac OS X, pero una respuesta que pertenezca a cualquier sistema UNIX me ayudaría.
Mi preocupación
Cada vez que tengo que hacer uno de estos, especialmente el segundo, estoy muy preocupado por un período de tiempo de que algo se haya roto. Algún archivo en algún lugar podría estar dañado, ¿quién sabe qué archivo? Hay más de 1,000,000 de archivos en la computadora.
A menudo uso OS X, así que ejecutaré una operación "Verificar disco" a través de la Utilidad de Discos. No informará ningún problema, pero todavía estoy preocupado por esto.
¿Qué pasa si algún archivo de configuración en algún lugar se arruinó? O peor aún, ¿qué pasa si un archivo binario en algún lugar está dañado? O un archivo de script en algún lugar está dañado ahora. ¿Qué pasa si algún hardware está dañado?
¿Qué sucede si no me entero hasta el próximo mes, en un escenario crítico, cuando la corrupción o el daño causan una catástrofe?
O, ¿qué pasa si ya se pierden datos valiosos?
Mi esperanza
Mi esperanza es que estas preocupaciones y preocupaciones sean infundadas. Después de todo, después de hacer esto muchas veces antes, nada realmente malo ha sucedido todavía. Lo peor es que tuve que reparar algunas tablas de MySQL, pero parece que no he perdido ningún dato.
Pero, si mis preocupaciones no son infundadas, y podría ocurrir un daño real en las situaciones 1 o 2, entonces espero que haya una manera de detectarlo y prevenirlo.
Mis preguntas)
¿Podría ser esto porque los sistemas operativos modernos están diseñados para garantizar que no se pierda nada en estos escenarios? ¿Podría ser esto porque el software moderno está diseñado para garantizar que nada se pierda? ¿Qué pasa con el diseño moderno de hardware? ¿Qué medidas existen cuando desconecta el enchufe de alimentación?
Mi pregunta es, para ambos escenarios, ¿ qué puede salir mal exactamente y qué pasos se deben tomar para solucionarlo?
Tengo la impresión de que una cosa que puede salir mal es que algunos programas podrían no haber vaciado sus datos en el disco, por lo que cualquier dato muy reciente que se suponía que debía escribirse en el disco (por ejemplo, unos segundos antes del corte de energía) ) podría perderse. ¿Pero qué hay más allá de eso? ¿Y puede este problema de pérdida de datos de 5 segundos arruinar un sistema?
¿Qué pasa con la corrupción de archivos aleatorios escondidos en algún lugar en el enorme bosque de archivos en mis discos duros?
¿Qué pasa con el daño de hardware?
Lo que más me ayudaría
Descripciones detalladas sobre lo que sucede internamente cuando se elimina -9 un proceso o se desconecta todo el sistema. (Parece instantáneo, pero ¿alguien puede desacelerarlo por mí?)
Explicaciones de todas las cosas que podrían salir mal en estos escenarios, junto con probabilidades (aproximadas, por supuesto) (es decir, esto es muy poco probable, pero es probable) ...
Descripciones de las medidas implementadas en hardware, sistemas operativos y software modernos para prevenir daños o corrupción cuando ocurren estos escenarios. (para consolarme)
Instrucciones sobre qué hacer después de un kill -9 o un power pull, más allá de "verificar el disco", para asegurarse de que nada esté dañado o dañado en algún lugar de la unidad.
Medidas que se pueden tomar para fortalecer la configuración de una computadora, de modo que si algo se tiene que matar o se tiene que retirar la energía, se mitiga cualquier daño potencial.
Alguna información sobre archivos binarios: ¿no es cierto que el archivo binario apache o alguna biblioteca podría tener un byte aleatorio o dos corruptos en el medio, que no saldría y causaría un problema hasta más tarde? ¿Cómo puedo asegurarme de que esto no sucedió como resultado del tirón de poder o la muerte?
¡Muchas gracias!