Linux 2.4, 문제 많은 커널

중앙일보

입력

자, 솔직히 얘기해 보자. 대형 서버들에 있어서 2.4 커널은 재앙과도 같다.

데스크탑용으로 2.4버전의 커널은 쓸만한 편이다. 하지만 만약 대형 서버를 운영할 목적이라면 2.4버전에 대해서 실망하게 될 것이다. 대형 서버의 시스템 관리자는 두가지 선택을 해야할 것이다 - 옛날 버전으로 돌아가거나 아니면 열심히 업그레이드를 하거나.

우선 처음부터 보자. 2001년 7월, 나는 고객의 서버를 Red Hat 6.2에서 Mandrake 8.0으로 업그레이드 해야 했다. 나는 우선 RAID 5 array를 완전히 포멧하고 거기에 Mandrake를 인스톨 했다. 그러고 나서 Red Hat 6.2의 어플리케이션을 새로운 머신으로 이전했다.

약간의 조정 작업을 한 후에, 머신은 잘 작동하는 것처럼 보였다. 우리는 5시간만에 전체 시스템을 성공적으로 이전했다. 이것이 큰 규모의 서버였다는 점을 감안했을 때, 상당히 깔끔하게 처리된 것이었고 우리의 고객은 당연히 만족하게 되었다.

하지만 약 한 달정도 후에, 나는 머신에 이상한 문제점이 있다는 것을 발견하기 시작했다. 간헐적인 시스템 다운현상이 계속해서 발생하는 것이었다. 그리고 이것은 reboot하지 않고서는 복구 불가능한 다운현상들이었다.

그래서 문제점을 찾아가는 동안에 2.4커널에 심각한 sync()버그가 있다는 것을 알아냈다. 이 버그는 2.4.6까지의 모든 2.4대 커널에서 있는 문제였다. 해결책은 간단해 보였다 - 나는 커널을 업그레이드 했다.

약 일주일 뒤에 다시 머신은 다운되었다. 우리는 사소한 것으로 여기고 리부팅을 했다. 하지만 바로 다음날 다시 머신은 다운되었다. 우리는 좀더 자세히 조사를 했고, 오리지널 2.4VM(Virtual Memory)의 실행시에 문제점이 생긴다는 것을 발견했다.

VM문제는 매우 심각한 것이어서 커널팀에서 옛날 버전을 버리고 완전히 새로운 디자인으로 구현했었다. 이러한 문제는 2.4.11 버전이 될 때까지 계속되었고, 2.4.11에서는 심각한 symlink버그가 발견되었다. 2.4.13버전에 들어서서야 어느정도 정리된 듯 보였고, 이전보다 보다 안정적으로 되었다. 그때 문제의 2.4.15버전이 릴리즈 되었다.

2.4.15버전은 VM버그보다 보다 심각한 버그를 내포하고 있었다. 만약 당신이 리부트를 통해 파일시스템을 언마운트하면 - 혹은 다른 일반적인 방법을 통해 파일 시스템을 언마운트하면 파일시스템이 망가지는 것이었다. 결국 24시간 만에 버그가 수정된 2.4.16버전이 릴리즈되었다.

결국 2.4.16버전이 되어서야 1년여의 안정화 작업이 마무리 되는 것처럼 보였고, 안정적으로 사용 가능할 것으로 보였다.

아직 갈길은 멀다

하지만 2.4시리즈 커널의 문제점들은 계속 되었다. 커널 2.4.16에서는 OOM에서 시스템 다운의 원인이 되는 심각한 버그가 발견되었다. 이 버그는 2.4.17pre4aa1에서 수정이 되었다.

현재 커널 버전은 2.4.17이다. 많은 사람들은 이 버전이 안정적이길 바랄 것이다, 하지만 Changelog를 간략히 살펴보면 커널팀은 아직 새로운 VM디자인을 적절히 조정하기 위해 작업중이고, 많은 양의 변경사항들이 추가되어 안정성을 장담하기 힘들다.

지난 12월말에 작성했던 리뷰에서 언급했던 것과 같이 2.4커널 시리즈에서의 유저당 제한하는 기능의 지원은 깨져있다. 제한하는 기능이 깨져있음으로 인해, 어떠한 유저라도 머신의 자원을 모두 소진해 버릴수 있고, 결과적으로 이것은 내부적인 Dos(서비스 거부)공격이 될 것이다. 이러한 것은 우연히 일어날 수 있고, 이럴 경우 어떤 시스템 관리자라도 크게 실망하게 될 것이다.

그럼 이 모든것은 나한테 무엇을 의미하는가? 결국 5달동안 새로운 2.4커널과 씨름한 나로써는 진부하고, 보수적이고, 2.4커널보다 엔터프라이즈급에 적합한, 2.2 커널이 탑재된 Red Hat 6.2를 선택하게 하였다.

2.2커널은 대형 SMP머신을 잘 처리하지 못할 것이다. 그리고 큰 규모의 메모리도 잘 처리하지 못할 것이고(2 기가까지만 지원된다.) 단일 파일의 크기가 2기가 까지로 제한되어 있다. 하지만 2.2커널은 깨지거나 새벽 5시에 전화를 울리게 하는 그런 일은 없다. 더욱이, 2.2 커널은 소비자가 리눅스를 서버 솔루션으로 선택한 것에 대해 후회하지 않게 해준다.

이것이 당신에겐 무슨 의미인가?

이 모든것이 당신에게 무슨 의미가 있는 것인가? 그것은 당신의 선택에 달려있다. 일단 내 생각은 다음과 같다.

나는 Red Hat, SuSE, Mandrake에서 2.4의 개발 과정을 오랜기간 찬찬히 지켜보고, 장기적인 계획을 체계적으로 세움으로써 위와 같은 문제를 잘 피해나가야 한다고 생각한다. 예를 들자면 내가 알기로 Red Hat에서는 자체적으로 커널에 대한 테스트를 해 왔고, Red Hat에 장착된 커널은 표준적인 리눅스 커널의 한 분기점이 되어왔다. 이러한 것은 좋은 현상인데, 왜냐하면 이론상으로 Red Hat에서 자체에 탑재된 커널에 대해 패치를 적용함으로써 커널이 보다 안정화 될 수 있기 때문이다.

지금 이 글은 2.4.9엔터프라이즈 커널이 탑재된 Red Hat 7.2상에서 작성하고 있다. 아직 2.4.9커널로 업그레이드 한 이래로 시스템 다운 현상은 전혀 발생하지 않았다. 나는 Red Hat 7.2는 적절하고 사용할만하다고 말할 수 있다.(적어도 데스크탑용으로는)하지만 대형 서버에 있어서 2.4커널 기반의 시스템을 적용하는 것에 대해서는 아직 확신이 서지 않는다.(by Joshua Drake(joshua.drake@linuxworld.com))

ADVERTISEMENT
ADVERTISEMENT