2011/10/05

솔라리스 10 2011.08 버젼의 새로운 기능 리뷰

오라클은 최근에 솔라리스 10 2011년 08 버젼(이하 솔라리스 10 08/11 )을 발표했습니다. 새로운 업데이트 버젼의 개선된 기능에 대한 요약 문서가 함께 발표되었는데요, 간단하게 요약해보겠습니다.

범주 별로 보면 얼추 다음과 같습니다.


  1. 설치 및 관리 기능 
  2. 시스템 성능 개선
  3. 네트워킹 및 보안 기능 개선
  4. 새로운 장치 지원 및 드라이버 개선
  5. 프리웨어 지원 개선


각 분야별 중요한 것만 살펴보면 다음과 같습니다.

1. 설치 및 관기 기능
일단 이번 버젼의 솔라리스 부터 2TB 이상의 메모리를 지원하기 시작했군요. 향후 나오는 대형의 스팍 시스템의 메모리 크기가 2TB를 쉽게 넘을 것을 예측할 수 있는 부분이군요.
솔라리스 10까지 있는 라이브 업그레이드 기능이 ZFS를 보다 더 잘 지원하게 되었습니다. luupgrade를 이용하여 zfs 플래쉬를 설치한다거나, luucreate를 이용하여 새로운 BE를 지원하는 기능이 개선되었습니다. 라이브 업그레이드와 관련된 것들은 매뉴얼을 참고해야 합니다.

2. 시스템 성능 개선
smt_pause(3C)라는 API가 추가된 것이 눈에 띕니다. 하드웨어 기반의 가상 CPU를 제공하는 CMT 혹은 인텔의 Hyper-Thread 시스템의 경우, 실행 중인 애플리케이션이  그 가상 CPU를 사용하지 않는 것이 명시적일 경우 의도적으로 이 라이브러리를 호출함으로써 해당 가상 CPU가 공유하는 실제 코어에 연결되어있는 다른 가상 CPU로 다른 애플리케이션이 더욱 빠르게 코어 진입을 허용해주게 합니다.

아울러, 대량의 스레드를 가진 애플리케이션(프로세스)의 메모리 할당 라이브러리로 적합한 libmtmalloc(3C) API가 개선됨으로써 멀티 스레드의 성능이 더욱 좋아졌다는 군요. 참고로, 싱글 스레드를 사용하는 경우에는 libc의 메모리 라이브러리를, 16 이하의 스레드를 만드는 경우에는 libumem 메모리 할당 라이브러리를 그 이상의 스레드 수를 만드는 경우에는 libmtmalloc을 권고한다는 커멘트가 덧붙여져 있군요.

성능과 관련된 부분중 가장 실질적인 부분은 바로 이 '공유 메모리'관련 변경이 아닌가 생각이 듭니다. 발표문에 따르면, ISM 및 DISM에 관여하는 공유 메모리 기능(생성, 잠금, 잠금 해제, 삭제 방법)을 변경한후 해당 작업들의 성능이 대폭 개선되었다고 되어 있습니다. 이 부분의 메모리는 오라클 데이타베이스가 핵심적으로 사용하는 부분인데, 아무래도 데이타베이스의 성능이 개선되었음을 느끼게 하는 부분이군요.

3. 네트워킹 및 보안
IPFilter의 NAT가 IPv6를 지원하게 되었네요. 계정 암호와 관련해서 변경 사항이 눈에 보이는 데요. 이전 버젼에서는 계정이 잠기게 되었을 때(암호를 연속적으로 틀렸거나, 관리자가 잠궈 버렸을 경우) 다음 세가지 방법으로 잠긴 계정을 풀 수 있었습니다.


  • passwd -u 옵션 사용
  • passwd -d 옵션을 사용하여 암호 항목 삭제
  • 새 암호 지정

이번 릴리즈에서는 마지막 세번째 방법을 지원하지 않게 되었습니다. 잠긴 계정에 대해 암호를 지정하기 위해서는 두번째 방법으로 잠긴 암호를 일단 풀고나서 새로운 암호를 지정하는 방식으로 변경되었습니다.
아울러, root 계정에 대해서 면제되었던 암호 설정 방식이 이번 버젼부터는 일반사용자에게 적용되는 규칙을 동등하게 적용받도록 강제되어서 root에 대한 암호 설정이 강화되었습니다.  root 계정 단순하게 넣으시던 분들은 체감을 바로 하는 부분이겠습니다.

암호화 환경과 관련하여 인상적인 변경은 이번 버젼에서 ssh 서버(sshd)가 chroot()를 지원하기 시작했다는 점입니다. chroot를 사용하게 되면 ssh 를 통해 접속하는 외부 사용자에게 접근할 수 있는 디렉토리의 영역을 제한하게 함으로써 한층 보안이 강화된 모습을 엿볼 수 있겠습니다.

4. 새로운 장치 및 드라이버 개선
눈에 뜨이는 부분이 RDSv3 RDMA의 지원인 것 같습니다. 이번 버젼부터 오라클 솔라리스는 오라클 데이타베이스 11g가 요구하는 RDSv3 RDMA인터페이스를 지원합니다.  

오라클은 RDS(Reliable Datagram Sockets)용 RDMA(Remote Direct Memory Access) 인터페이스를 정의했습니다. 이러한 인터페이스는 OFED(OpenFabrics Enterprise Distribution) 버전 1.3 이후 Linux 플랫폼에서 제공되었습니다. 이 기능은 주로 InifiniBand 전송에 사용됩니다. RDSv1에서 RDS 드라이버는 userland에서 커널로 데이터를 복사하는 방식으로 원격 대상으로 데이터를 전송합니다. 이와 같은 방식으로 대용량 데이터 복사는 시간과 비용을 많이 소비합니다. RDSv3은 InifiniBand를 지원함으로써 DMA(direct memory access)로 응답 시간을 줄여서 이 문제를 해결합니다.

5. 프리웨어
흥미로운 지원이 추가되었습니다. 바로 오픈소스에서 많이 사용되는 Apache C++ Standard Library 지원이 추가된 점인데요.  Apache C++ Standard Library(stdcxx)는 ISO/IEC:14882:2003 표준(프로그래밍 언어 C++)과 완전히 호환되도록 C++ 표준 라이브러리를 구현한 것입니다. 이 라이브러리는 현재 기본 Oracle Solaris libCstd.so.1 또는 STLport4 표준 라이브러리 구현과 함께 사용할 수 없는 수많은 표준 C++ 라이브러리 기능에 프로그래밍 방식으로 액세스합니다. Oracle Solaris Studio 12 Update 1부터는 Oracle Solaris Studio C++ 컴파일러가 Apache C++ Standard Library를 지원합니다.

원문 참고: http://download.oracle.com/docs/cd/E24846_01/html/E23296/gijtg.html#scrolltoc