Skip to end of metadata
Go to start of metadata

 


개요


솔라리스(Solaris) 운영체제(Operating System)에서 Altibase를 설치하고 운영하기 위한 커널파라미터(kernel parameter)의 적절한 설정 값 및 각종 사용자 환경 설정에 대한 가이드를 제시한다.

본 문서에서는 Altibase가 설치되기 전 설정해야 할 운영체제 관련 사항에 대해서만 가이드를 제시하며 Altibase 자체 설정을 위한 Altibase 프로퍼티(property) 설정파일(altibase.properties)에 관해서는 별도문서『Altibase 설정파일 가이드』를 참조하도록 한다.

본 문서의 테스트 환경은 다음과 같다.

  • Altibase v6 이상 버전
  • OS : Sun OS 5.8 ~ 5.10

 

 

Icon

이 문서와 관련된 오류 및 개선사항은 기술지원포털 또는 기술지원센터로 문의주시기 바랍니다.

Icon

이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다.

이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다.

Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다.

 

 

커널파라미터


솔라리스 운영체제에서 Altibase를 운영할 경우 변경해야 할 커널파라미터의 종류와 어떤 이유로 설정을 변경해야 하는지에 대해 설명한다. 마지막 부분에는 솔라리스에서 커널파라미터를 변경하는 방법에 대해 소개한다.

각 커널파라미터와 관련된 상세한 사항은 솔라리스에서 제공하는 가이드를 참조하도록 한다.

 

공유메모리


어플리케이션을 개발하는 경우 두 개 이상의 프로세스가 정보를 주고 받아야 할 필요성이 발생한다. 운영체제는 이를 위해 IPC (Inter Process Communication)라고 부르는 자원을 제공하고 있다. 여러 IPC자원 중에 두 개 이상의 프로세스가 정보를 주고 받기 위해 사용되는 메모리영역을 공유메모리(shared memory)라고 부른다. 공유메모리는 사용자가 단위를 지정하여 한 개 이상의 영역으로 나누어 설정할 수 있다. 한 개의 공유메모리 영역을 세그먼트(segment)라고 부른다.

예를 들어 사용자는 10메가바이트로 1개의 세그먼트를 갖는 공유메모리를 설정할 수도 있고 10 메가바이트 영역을 10개의 세그먼트로 구성하여 100 메가바이트의 공유메모리를 설정할 수도 있다.

Altibase 는 기본설정으로 메모리DB를 프로세스의 힙(Heap)영역에 적재하지만 사용자의 설정에 따라서는 공유메모리에 적재하여 사용할 수 있다. (이와 관련된 설정방법은『Altibase 프로퍼티 설정 가이드』문서를 참고하도록 한다.) 혹은, DBMS와 접속하는 클라이언트의 통신버퍼를 공유메모리를 통해 주고 받을 수 있도록 설정할 수 있다. 따라서, 메모리를 사용하는 부분에 대한 최대크기나 세그먼트의 개수제한에 대한 커널파라미터 설정을 올바르게 변경해야 한다.

일반적인 유닉스 시스템에서 공유메모리와 관련된 커널파라미터는 아래와 같다.

커널파라미터

설명

권장 값

shmmax

한 개의 공유메모리 세그먼트의 최대크기

2G+1

shmmni

시스템내의 공유메모리 세그먼트의 최대개수

500이상

shmseg

한 개의 공유메모리에 접근 가능한 프로세스의 최대개수

200이상

 

메모리 DB를 공유메모리에 작재할 경우 고려사항


메모리DB를 공유메모리에 적재할 경우에는 아래 사항들을 추가로 고려해야 한다.

  • shmmax
    shmmax의 경우는 구동단계에서는 Altibase 설정파일 내에 STARTUP_SHM_CHUNK_SIZE 항목의 크기만큼 한 개의 세그먼트가 만들어지기 때문에 STARTUP_SHM_CHUNK_SIZE 보다 큰 값으로 설정하도록 한다.
  • shmmni
    메모리DB의 사용량이 증가하게 되면 Altibase는 자동적으로 메모리영역을 증가시킨다. 이 경우 역시 세그먼트가 새롭게 생성되는데 이 세그먼트의 크기는 Altibase 설정파일 내에 EXPAND_CHUNK_PAGE_COUNT * 32K 단위로 세그먼트가 생성되기 때문에 shmmni는 가능한 여유 있게 설정하도록 한다.

 

세마포어


공유메모리와 동일하게 IPC자원의 일종이다. 차이점은 공유메모리가 데이터를 프로세스 간에 공유하기 위한 방법으로 제공되는 반면에 세마포어는 프로세스 간의 동기화를 구현하기 위한 방법으로 운영체제에서 제공되는 자원이다. 동기화란 특정자원이나 객체에 대해 한 시점에 하나의 프로세스만이 접근하여 변경 가능하도록 제어 하는 것을 의미한다. (뮤텍스(mutex)와 다르게 조회는 동시에 가능하게 하다.)

Altibase는 앞에서 설명한대로 로컬서버 내에 Altibase 서버와 클라이언트가 존재할 경우 양단간의 통신버퍼로 공유메모리를 사용하는데 이때, 메모리에 대한 동시성을 제어해야 할 필요가 있다. (동시에 쓰기를 진행하면 안되기 때문이다.)

이 경우 메모리에 대한 읽기/쓰기에 대한 접근권한의 제어를 위해 세마포어 오퍼레이션(semaphore operation)이 발생하게 된다.

세마포어 오퍼레이션에 따라 프로세스는 대기상태가 되거나 혹은 진행상태가 될 수 있다. 이러한 세마포어 오퍼레이션은 동시다발적으로 발생되기 때문에 세마포어의 개수 및 오퍼레이션에 대한 적합한 커널파라미터 설정이 필요하다.

일반적인 유닉스 시스템에서 세마포어와 관련된 커널파라미터는 아래와 같다.

커널파라미터

설명

권장 값

semmns

시스템 내 세마포어의 최대개수이며 16바이트의 커널메모리가 할당된다.

8192

semmni

세마포어 세트의 최대개수로 65535 이내에 설정가능하며 하나의 세트당 84바이트의 커널메모리가 할당된다.

5029

semmsl

한 개의 세마포어 세트에 존재하는 세마포어의 최대개수이며 논리적으로 semmns와 같거나 작아야 한다. 너무 크게 잡으면 몇 개의 세마포어 ID가 시스템 전체의 세마포어를 독점할 수 있다.

2000

semmap

semget 호출에 의해 얻어지는 세마포어 공간을 의미

5024

semmnu

시스템 내의 undo structure의 최대개수

1024

semopm

semop 시스템 콜에서 처리하는 operation의 최대개수

512

semume

한 개의 프로세스당 undo entry의 최대개수

512

semvmx

한 개의 세마포어의 최대값을 제한하며 32767보다 크게 지정하지 않는다.

32767

 

변경방법


솔라리스에서는 /etc/system 파일을 통해 커널파라미터를 설정하며 5.10 이후부터는 기존방법 외에도 프로젝트 개념을 도입하면서 사용자계정 별로도 커널파라미터를 적용할 수 있게 되어 있다.

여기서는 두 가지 방식으로 모두에 대해 설정하는 예를 다룬다. 기본적으로 root 계정으로의 접속을 필요로 하며 올바르게 적용하기 위해서는 변경 후 시스템을 재 구동을 하여야만 한다.

 

5.10 이하


/etc/system 파일 내에 vi와 같은 편집기로 아래와 같은 내용을 추가한다.

 

5.10 이상


솔라리스 5.10에서는 기존에 존재하던 커널파라미터 항목들이 일부 사라졌기 때문에 공유메모리 및 세마포어와 관련된 설정 항목을 projadd 및 projmod라는 솔라리스 유틸리티를 사용하여 쉘 프롬프트 상에서 실행하면 된다.

주의할 것은 max-shm-memory의 경우 물리적 메모리의 최대값으로 설정하도록 한다.

설정 변경에 대한 확인은 아래 명령어로 확인 가능하다.



사용자 환경설정


솔라리스 운영체제에서 Altibase 운영을 위한 시스템 내의 사용자계정의 리소스 제한, 환경변수 및 각종 환경설정에 대해 설명한다.

설정과 관련된 구체적인 사항은 솔라리스에서 제공하는 가이드를 참조하도록 하는 것으로 대체한다.

 

리소스 제한


유닉스 운영체제에서는 사용자계정 단위로 사용 가능한 리소스에 대한 논리적인 제한 값을 설정한다. 이 리소스 제한 항목 중, 안정적인 서비스 운영을 위해 확장시켜야 하는 일반적인 유닉스 운영체제에서의 항목들은 아래와 같다. 

항목

설명

권장 값

data seg size(data)

하나의 프로세스 데이터영역의 최대크기

unlimited

file size (fsize)

생성될 수 있는 파일의 최대크기

unlimited

open files (nofiles)

하나의 프로세스가 동시에 접근 가능한 파일의 최대개수

unlimited

max memory size (rss)

사용 가능한 메모리의 최대크기

unlimited

virtual memory (memory)

사용 가능한 가상메모리의 최대크기

unlimited

max user process

사용자당 생성 가능한 프로세스의 개수

unlimited

어디까지나 특정 사용자가 사용하는 메모리 및 데이터파일 영역 확장 시 물리적인 리소스가 풍부한데도 논리적인 제한으로 인해 발생할 수 있는 문제를 사전에 제거하기 위한 것으로, 이 설정으로 인해 다른 프로세스에게 끼치는 영향은 없기에 해당 운영체제에서 허용하는 최대값(가능하다면 unlimited)으로 설정하는 것을 권고한다.

예를 들어, open files의 의미는 프로세스가 접근하는 파일뿐만 아니라 통신소켓의 개수까지 포함하고 있다. 만일, 이 값이 10으로 제한된 환경에서 Altibase를 운영할 경우 동시에 접속 가능한 세션은 10개 이상은 불가능하다는 의미이다. (실제로 Altibase가 사용하는 파일까지 고려하면 접속 가능한 세션이 없을 수도 있다.)

변경방법은 ulimit 명령을 사용한 환경설정파일 편집 및 시스템 리소스 설정파일 편집 또는 해당 운영체제 별로 제공하는 커널관련 유틸리티 활용이 있다.

 

Hard-Limit & Soft-Limit


리소스 제한 값은 hard-limit, soft-limit 이라는 개념으로 구분된다. hard-limit은 시스템어드민계정(root)외에는 변경할 수 없는 커널차원의 리소스 제한 최대값을 의미하며 soft-limit은 현재 사용자계정 내에서는 hard-limit까지 변경이 가능하다는 것을 의미한다. (상세한 내용은 ulimit –S / -H 옵션을 참고한다.)

soft-limit은 사용자가 접속을 하여 세션을 유지하는 동안 유효하며 변경을 하면 즉시 반영된다. 하지만 동일 사용자계정의 다른 세션이 연결되면 기존의 soft-limit이 반영되기 때문에 편의상 ulimit 명령어를 사용자계정의 환경설정파일에 추가하곤 한다.

하지만, 이러한 방법은 전역적인 hard-limit에 의해 의도한 설정이 되지 않을 수 있으므로 환경설정파일을 이용한 사용자계정 단위 적용보다는 시스템 차원의 리소스 설정파일 편집을 통하여 체계적으로 적용하는 것을 권고한다.

참고로 솔라리스는 사용자 리소스 제한관련 시스템 설정파일이 별도로 없고 /etc/system에 함께 기술한다. 그 외에도 /etc/default/login 또는 /etc/profile을 이용하는 방법도 있다.

 

환경변수


필수적인 환경변수는 아래와 같다. 아래 환경변수를 설정하고자 하는 사용자의 쉘(shell)의 문법(syntax)에 따라 사용자계정의 환경설정파일에 반드시 설정하도록 한다.

환경변수

설명

ALTIBASE_HOME

ALTIBASE를 설치한 경로를 지정한다.

PATH

ALTIBASE_HOME/bin 에 있는 바이너리 및 쉘 스크립트를 경로에 상관없이 활용하기 위해 경로를 지정하여 준다.

LD_LIBRARY_PATH

ALTIBASE의 동적 라이브러리를 사용할 경우 라이브러리가 존재하는 경로를 지정하여 준다.

이와 더불어 솔라리스에만 존재하는 아래 환경변수도 필수적으로 추가하여야 한다.

환경변수

설명

LD_LIBRARY_PATH_64

동적 라이브러리를 64비트로 링크할 경우에 설정하도록 한다.

 

문자세트 관련 고려사항


Altibase v5.3 버전 이전에는 문자세트와 관련하여 NLS_USE 라는 항목과 관련해 별도의 프로퍼티가 존재 하였으나 Altibase v5.3 이후로 환경변수로 대체되었다.

이로 인해, Altibase v5.3 버전 이상에서 DB의 문자세트를 US7ASCII가 아닌 KO16KSC5601 / MS949 / UTF8 등을 설정했을 경우에는 반드시 ALTIBASE_NLS_USE 라는 환경변수를 설정해야만 한다. 그렇지 않을 경우에는 기본설정인 US7ASCII로 접속하게 되어 입력 후 조회 시점에 알 수 없는 문자열 형태로 조회가 되게 된다.

 

터미널 환경


[환경변수] 섹션에서 언급한 문자세트 사용관련 고려사항과 더불어, 사용하는 터미널의 폰트(font) 역시 DB에 설정한 문자세트와 동일하게 설정하여야 한다.

 

 

요약


솔라리스 운영체제에서 Altibase의 안정적인 운영을 위해서는 커널파라미터 설정 및 사용자 환경 설정을 사전에 수행해야만 한다. 설정을 올바르게 수행하지 않은 경우, 시스템의 리소스가 충분함에도 불구하고 각각의 제한 값들에 의해 문제가 발생 할 수 있으므로 주의해야 한다.

 

설정예제


 

커널파라미터


아래 표를 참조, 적절한 커널파라미터를 설정하도록 한다.

분류

커널파라미터

권장 값

비고

공유메모리

shmmax

2G+1

-

shmmni

500

-

shmseg

200

-

세마포어

semmns

8192

-

semmni

5029

-

semmsl

2000

너무 큰 값을 설정하지 않도록 주의.

semmap

5024

-

semmnu

1024

-

semopm

512

-

semume

512

-

semvmx

32767

일반적으로 32767을 초과하지 않음.

메모리DB를 공유메모리에 적재할 경우 추가 고려되어야 하는 요소는 [공유메모리] 섹션을 참조하도록 한다.

 

사용자 리소스 제한


sh, bash, ksh의 경우, 환경설정파일을 이용한 필수 환경변수 설정예제는 아래와 같다. csh의 경우는 export 대신 setenv 와 같은 쉘 명령어를 통해 선언한다.

참고로 ksh의 경우, 환경변수가 미리 정의되지 않은 상태에서 환경변수를 사용하여 또 다른 환경변수를 정의 시 오류가 발생할 수 있다.

 

 

  • No labels