2006/09/29

솔라리스10에서의 System V IPC와 프로젝트 개념의 이용

system V IPC 관련 parameter는 기본적으로 /etc/system에 설정하는 것을
권고하지 않습니다. 이유는 새로운 방법이 생겼기 때문입니다.
그러나, 솔라리스 10 이전 버젼의 환경을 검사하는 애플리케이션과의
뒷버젼 호환성을 위해서 /etc/system에 선언을 하셔도 작동이 됩니다. 하지만,
폐기된 변수에 대해서는 원하는 값이 모두 그대로 설정(적용)이 되지 않을 수 있습니다. ^^;

따라서, 구버젼 방식으로 사용하셔도 되긴 합니다만, 향후에 구버젼 방식은
통보없이 지원되지 않을 수 있습니다.

새로운 방식은 'project'라는 개념으로 사용하는 것입니다.
이 개념을 길게 설명하려면 끝도 없구요. 해당 매뉴얼을 보시길 권고드립니다.
아니면, 솔라리스 10 교육을 받도록 권고드리세요. 이런 건 장비산다고
해드리는 서비스가 아닙니다. 스스로 새로운 것을 배우셔야죠. ^^

참고삼아 간단하게 설명드리면

project 개념은
사용자 혹은 사용자의 특정 태스크들의 모음을 지칭하는 새로운 말입니다.
기존의 사용자 그룹을 지칭하는 그룹보다 확장된 개념입니다.
기존 처럼 사용자 혹은 그룹이 될 수도 있고, 특정 사용자의 특정 프로세스들의
군들을 지칭할 수도 있고, 사용자1의 일부 프로세스와 사용자2의 일부프로세스들을
통칭하는 용도로 사용할 수도 있습니다.

System V IPC에서 적용이 가능한 변수들은 이제 이 'project'의 개념을 사용합니다.
즉, oracle이란 사용자가 실행하는 모든 애플리케이션에 대해서 shared memory의
적용 크기를 키우시고 싶으시면

[절차]
1) proejct를 만든다.
2) project에 oracle user가 소속되게 한다. 혹은 oracle user를 만들때 project를
선언해준다.
3) oracle이 소속된 project에 shared memory max를 의미하는 변수를 변경한다.
변경은 서버 재부팅이 필요없이 online 중에 가능합니다.

실제로 하는 절차는 docs.sun.com (resource management and zones)에 자세히 나옵니다. 필히 참고하세요.

간단하게 얘기드리면,
1) 프로젝트를 만들려면 projadd 를 사용한다.
2) projadd로 project를 만들때, project에 소속될 user를 선언해준다.(-U 옵션)
3) project를 만든 후에 사용자가 만들어질때는 useradd에서 그 사용자의 프로젝트를
선언해준다.(-p 엽선)
4)해당 사용자로 로그인한후(이미 로그인되어 있으면 로그아웃 했다가 다시 로그인)
#prctl -P $$ | more
로 관련 속성의 값을 확인해본다.

4) 해당 프로젝트의 공유 메모리 크기를 변경하고 싶으면
#projmod -K "project.max-shm-memory=(priv,8G,deny)" project-name
와 같은 식으로 합니다.

해당 속성 변수들의 값을 보시고, 필요한 것만 바꾸실 수 있습니다.

일단 사용자가 project에 소속되면, 관련 값을 모두 live로 변경할 수 있습니다.

자세한건 man projadd, projmod, prctl, useradd
등에서 Example을 확인해보세요.

도움이 되셨으면 위의 광고한번 살짝 클릭해주세요