보안접속
공지사항
질문과 답변
미확인입금자리스트
세금계산서 신청
트래픽 초기화 신청
자주하는 질문
팁&테크
자료실
  네임서버 정보
1차 : ns.k2com.co.kr
        211.239.173.145
2차 : ns2.k2com.co.kr
        211.239.112.50
  서비스 신청
  결제계좌안내
계좌 : 112-910015-50604
은행 : 하나은행
예금주 : (주)옐로우삭스
  고객상담센터
상담전화 : 02-552-5415
상담시간 :
    월-금요일 09:30~18:30
    토,일,공휴일 휴무
기본배너
Home > 고객지원센터 > 팁&테크
 
 
     팁&테크
작 성 자 눅스맨 날 짜 2005-05-25  조   회 4869 
제    목   [서버관리]RHES 계열에서 BIND에러 발생시
RHES 및 클론 배포판인 CentOS, WhiteboxLinux 등 사용시 기존에 설치되어진 Bind
패키지와 웹브라우저인 모질라 실행시 Segment Fault 라는 데러 메시지를 뿌리며 
실행되지 않는 경우를 해결하는 방법입니다.


1. 커널 2.6의 향상된 쓰레딩 모델과 NPTL 지원

쓰레딩 퍼포먼스를 향상하기 위한 많은 작업들이 2.5 커널에서는 쓰레딩 퍼포먼스를 향상하기 위한 
많은 작업들이 이루어졌다. 2.6의 향상된 쓰레딩 모델 또한 Ingo Molnar에 의해 수행되었다. 
1:1 쓰레딩 모델에 기반하여 새로운 Native Posix Threading Library (NPTL)의 인커널 지원이 
포함되어있다. Ulrich Drepper과 함께 Molnar에 의해 개발되었다. 
 
쓰레딩 실행 속도도 빨라졌다. 2.6 커널은 이제 20억 PID까지 핸들할 수 있다. (IA32). 

또 다른 변화는 TLS (Thread Local Storage) 시스템 호출의 도입이다. 쓰레드 레지스터로 사용될
수 있는 GDT (Global Descriptor Table) 엔트리를 한 개 이상 할당 할 수 있다. GDT는 CPU 기반
이고 엔트리는 쓰레드 기반이다. 1:1 쓰레딩 모델이 쓰레드의 숫자 제한 없이 만들어 질 수 있다. 
2.4 커널은 프로세서 당 최대 8,192 쓰레드만을 허용했다. 

클론 시스템 호출이 확대되어 쓰레드 생성을 최적화한다. 이 커널은 CLONE_PARENT_SETID 플래그
가 설정되면 주어진 메모리 위치에 쓰레드 ID를 저장하고 CLONE_CLEARID가 설정되면 쓰레드 종료 
시 메모리 위치를 지운다. 이는 사용자 레벨의 메모리 관리가 사용되지 않은 메모리 블록을 인식할 수 
있도록 돕는다. 또한 쓰레드 레지스터의 신호 보안 로딩 지원이 추가되었다. 
Futex (fast user space mutex)는 pthread_join 조인에 대해 커널에 의해 수행된다. 

POSIX 시그널 핸들링은 커널 공간에서 수행된다. 시그널은 프로세스에서 사용 가능한 것 중 하나에 
전달된다. 치명적 시그널은 전체 프로세스를 종료시킨다. 시그널의 정지 및 지속 역시 전체 프로세스
에 영향을 준다. 이는 멀티쓰레드 프로세스의 작업 제어를 가능하게 한다. 

종료 시스템 호출의 변형이 도입되었다. exit_group()이 호출되면 이 시스템 호출은 전체 프로세스
와 쓰레드를 종료한다. 더욱이 종료 핸들링은 O(1) 알고리즘의 도입으로 향상되어 수 십만 개의 
쓰레드를 가진 프로세스를 2초에 종료한다. 

proc 파일시스템도 변경되어 모든 쓰레드가 아닌 원래 쓰레드만 보고한다. 이는 /proc 리포팅이 
느려지는 것을 막는다. 이 커널은 모든 쓰레드가 종료할 때 까지 원래 쓰레드로 남아있다. 



2. 문제점

whiteboxlinux 3.0(RHEL 3의 SRPM기반)에서 커널 2.4.x를 컴파일 한 후 bind(네임서버)를 (재)시작할 
때 세크멘테이션 오류("Segmentation Fault")가 발생하며 또한 웹브라우저인 모질라를 실행시 역시 에러
가 발생한다. 이런 에러의 원인은 커널 2.6에서 새롭게 적용된 Native Posix Threading Library 
(NPTL)이 Redhat Enterprise linux 3(RHEL3)에서도 적용이 되었다. 불행하게도 이러한 기능은 커널 
2.4.x대에서는 호환이 안된다. 당연히 RHEL3의 SRPM으로 리빌드된 whiteboxlinux3.0에서 커널 2.4.x
(소스)로 컴파일 하면 문제가 발생한다. 



3. 해결책

이러한 새로운 pthread 라이브러리가 위치한 디렉토리는 /lib/tls이다. 
첫번째 해결책은 다음과 같이 /lib/tls의 디렉토리명은 수정하면 된다.

]# mv /lib/tls /lib/tls.disable

두번째 해결책은 다음의 내용을 /etc/profile에 추가시키면 된다.

]# echo "export LD_ASSUME_KERNEL=2.2.5" >> /etc/profile 처럼 하거나 직접 profile을 열어서 
추가하면 된다.
(export LD_ASSUME_KERNEL=2.2.5 : 커널의 버전을 호환시켜준다.) 


출처 : 위글은 www.ilinuxbay.com 윤영한님의 허락을 얻어 등록한 글입니다.