2010-12-13 4 views
1

업데이트하면 재부팅하기 전에 어떤 종류의 문제가 발생할 수 있습니까? 무인 된 업그레이드를 사용하여 보안 패치를 적용하는 경우 특히 그렇습니다.재부팅하지 않고 업그레이드 - 실제로 어떤 종류의 문제가 발생합니까?

공유 객체가 대체되어 프로그램이 서로 동기화되지 않을 수 있습니다.

재부팅 전에 얼마나 오래 안전하게 갈 수 있습니까?

명확화 : 내가 "프로그램이 서로 동기화 얻을 수 있습니다"무슨 뜻인지

하나의 바이너리가 공유 객체의 이전 버전을 가지고 있으며, 새로 도입 된 인스턴스의 최신 버전을 가지고 있다는 것입니다 공유 객체. 두 버전의 바이너리가 제대로 호환되지 않을 수있는 호환되지 않는 버전이있는 것 같습니다.

실제로 이런 일이 자주 발생합니까?

자세한 설명은 :

내가에서지고있어 그들이이 API의 새 버전을 얻을 수 있도록 일반적으로 공유 라이브러리에 의존하는 서비스를 시작/중지 설치 라인을 따라 더 많은 것이다. 그들이 모든 의존성을 얻는다면 당신은 아마 괜찮을 것이다. 그러나 사람들은 의존성이없는 설치자를 종종 보나요?

이전 API 버전을 모두 지원하도록 서비스가 호환되는 경우 문제가되지 않습니다. 그러나 나는 그것이 종종 끝나지 않았다고 생각합니다.

커널 업데이트가있는 경우 특히 호환되지 않는 ABI 변경 사항이있는 경우 특히 모든 종속성을 가져올 수있는 방법이 없습니다. 나는 일들이 "넘어서 가는지", 그리고 실제로 사람들이 커널 업데이트 나 라이브러리/패키지 업데이트를 관찰했는지 여부에 대한 경험을 찾고있었습니다.

네, 아마 ...에 Serverfault에 투입되어 있어야합니다

+1

http://serverfault.com/이 귀하의 질문에 더 적합한 장소입니다. – gertas

+1

죄송합니다. 그것을 옮길 방법이 있습니까? – Traveler

답변

3

시간에 어느 순간에 실행 파일의 두 가지 버전이 있습니다; 하나는 메모리에, 다른 하나는 디스크에 저장됩니다.

업데이트하면 디스크의 디스크가 교체됩니다. 기억에있는 것은 오래된 것이다. 공유 객체 인 경우에는 공유 객체를 사용하는 모든 응용 프로그램이 종료 될 때까지 그대로 유지됩니다. 커널 인 경우 재부팅 할 때까지 그대로 있습니다.

당신이 업데이트중인 보안 취약점 일 경우, 패치 된 버전을로드 할 때까지 취약점이 유지됩니다. 따라서 커널 인 경우 재부팅 할 때까지 안전하지 않습니다. 공유 객체 인 경우 다시 부팅하면 안전이 보장됩니다.

기본적으로 취약점 범주에 달려 있다고 말할 수 있습니다. 그것이 안전하다면, 영향을받은 모든 것을 다시 시작하십시오. 그렇지 않으면, 글쎄, 버그가 당신에게 나쁜 영향을 미치지 않는 한, 나는 걱정하지 않을 것입니다. 그것이 커널이라면 항상 재부팅합니다.

+1

바이너리 및 공유 라이브러리의 경우,'lsof /'를 사용하여 이전 버전이 메모리에로드 된 프로세스 (디스크에서 삭제됨)를 결정할 수 있으며, 영향을받은 서비스 만 재시작 할 수 있습니다. 커널에 대해서는 재부팅없이 [Ksplice] (http://www.ksplice.com/)를 사용하여 업데이트합니다. – ephemient

+0

두 개 이상의 버전이있을 수 있습니다. 하나 이상의 업데이트에 따라 동일한 실행 파일 복사본이 여러 개있을 수 있기 때문입니다.마찬가지로, "메모리 내"및 "디스크 상에"는 요구 - 로딩 및 가상 메모리에 직면하여 극도로 흐려집니다. – MarkR

+0

예, 보안 패치를 받으려면 앱을 재부팅하거나 다시 시작해야합니다. 그러나 누군가 재부팅하지 않으면 상황이 잘못되거나 이상하게 작동 할 수있는 상황이 있습니까? – Traveler

관련 문제