Ustawiać
Od jakiegoś czasu jestem programistą, ale wciąż jestem trochę rozmyślany przy głębokich, wewnętrznych sprawach.
Teraz. Wiem, że nie jest dobrym pomysłem:
- zabij -9 proces (zły)
- spontanicznie wyciągnij wtyczkę z działającego komputera lub serwera (gorzej)
Czasami jednak po prostu musisz. Czasami proces po prostu nie reaguje bez względu na to, co robisz, a czasami komputer po prostu nie reaguje, bez względu na to, co robisz.
Załóżmy, że system działa z Apache 2, MySQL 5, PHP 5 i Python 2.6.5 poprzez mod_wsgi.
Uwaga: Najbardziej interesuje mnie Mac OS X tutaj, ale odpowiedź, która dotyczy dowolnego systemu UNIX, pomógłaby mi.
Moje obawy
Za każdym razem, gdy muszę wykonać jedną z tych czynności, szczególnie drugą, przez pewien czas bardzo się martwię, że coś się zepsuło. Gdzieś plik może być uszkodzony - kto wie, który plik? Na komputerze jest ponad 1 000 000 plików.
Często używam OS X, więc przeprowadzę operację „Zweryfikuj dysk” za pomocą Narzędzia dyskowego. Nie zgłosi żadnych problemów, ale nadal mnie to martwi.
Co jeśli jakiś plik konfiguracyjny gdzieś się zepsuje. Albo jeszcze gorzej, co jeśli plik binarny jest uszkodzony. Albo gdzieś plik skryptu jest teraz uszkodzony. Co się stanie, jeśli jakiś sprzęt zostanie uszkodzony?
Co się stanie, jeśli nie dowiem się o tym do następnego miesiąca, w krytycznym scenariuszu, kiedy uszkodzenie lub uszkodzenie spowoduje katastrofę?
A co jeśli cenne dane zostały już utracone?
Moja nadzieja
Mam nadzieję, że te obawy i obawy są bezpodstawne. W końcu, po zrobieniu tego wiele razy, nic naprawdę złego się nie wydarzyło. Najgorsze jest to, że musiałem naprawić niektóre tabele MySQL, ale chyba nie straciłem żadnych danych.
Ale jeśli moje zmartwienia nie są bezpodstawne, a rzeczywista szkoda może się zdarzyć w sytuacji 1 lub 2, mam nadzieję, że istnieje sposób, aby ją wykryć i zapobiec jej.
Moje pytania)
Czy może tak być, ponieważ nowoczesne systemy operacyjne są zaprojektowane w taki sposób, aby zapewnić, że nic nie zostanie utracone w tych scenariuszach? Czy może tak być, ponieważ nowoczesne oprogramowanie zostało zaprojektowane tak, aby nic nie stracić? Co z nowoczesnym projektowaniem sprzętu? Jakie środki są stosowane po wyciągnięciu wtyczki zasilania?
Moje pytanie dotyczy obu tych scenariuszy, co dokładnie może pójść nie tak i jakie kroki należy podjąć, aby to naprawić?
Mam wrażenie, że jedną z rzeczy, które mogą pójść nie tak, jest to, że niektóre programy mogły nie opróżnić swoich danych na dysk, więc wszelkie najnowsze dane, które miały zostać zapisane na dysku (powiedzmy kilka sekund przed wyłączeniem zasilania) ) może zostać utracone. Ale co poza tym? I czy ten problem 5-sekundowej utraty danych może zepsuć system?
Co z uszkodzeniem przypadkowych plików ukrywających się gdzieś w ogromnym lesie plików na moich dyskach twardych?
Co z uszkodzeniem sprzętu?
Co by mi najbardziej pomogło
Szczegółowe opisy tego, co dzieje się wewnętrznie, gdy albo zabijesz -9 proces, albo przełączysz zasilanie całego systemu. (wydaje się to natychmiastowe, ale czy ktoś może to dla mnie spowolnić?)
Wyjaśnienia wszystkich rzeczy, które mogą pójść nie tak w tych scenariuszach, wraz z (z grubsza oczywistymi) prawdopodobieństwami (tj. Jest to bardzo mało prawdopodobne, ale prawdopodobne) ...
Opisy środków zastosowanych we współczesnym sprzęcie, systemach operacyjnych i oprogramowaniu, aby zapobiec uszkodzeniom lub uszkodzeniom w przypadku wystąpienia takich scenariuszy. (aby mnie pocieszyć)
Instrukcje, co robić po zabiciu -9 lub odłączeniu zasilania, poza „weryfikacją dysku”, aby naprawdę upewnić się, że nic nie jest uszkodzone lub uszkodzone gdzieś na dysku.
Środki, które można podjąć w celu wzmocnienia konfiguracji komputera, aby w razie konieczności zabicia lub odcięcia zasilania wszelkie potencjalne uszkodzenia zostały złagodzone.
Niektóre informacje o plikach binarnych - czy nie jest prawdą, że plik binarny Apache lub jakaś biblioteka może mieć losowy bajt lub dwa uszkodzone w środku, które nie wyjdą i nie spowodują problemu do później? Jak mogę się upewnić, że tak się nie stało w wyniku podciągnięcia mocy lub zabicia?
Dzięki wielkie!