Solaris에서 illumos로: ZFS와 DTrace의 역사
Sun Microsystems의 Solaris 소스 공개와 Oracle의 폐쇄 이후, 개발자들이 어떻게 illumos를 통해 ZFS와 DTrace를 보존했는지 그 역사를 정리합니다. 현대 운영체제에서 이 기술들이 왜 여전히 중요한지 확인해 보십시오.
Solaris와 illumos란 무엇인가
Solaris와 illumos는 하나의 Unix 소스 트리에서 갈라져 나온 두 갈래입니다. Sun Microsystems는 Solaris를 구축하고 2005년에 소스 코드 대부분을 공개했습니다. Oracle이 2010년 Sun을 인수하면서 소스 공개를 중단하자, Oracle 외부의 개발자들이 공개된 코드를 이어받아 새로운 이름인 illumos로 발전시켰습니다. 2026년 현재 운영체제 자체는 틈새시장에 머물러 있습니다. 하지만 그 내부에 구축된 스토리지 계층과 추적 도구는 그렇지 않으며, 이것이 바로 이 역사를 살펴볼 가치가 있는 이유입니다.
Linux나 FreeBSD에서 ZFS를 실행하고 있다면, 여러분은 Sun이 Solaris를 위해 작성했으며 회사와 제품군, 라이선스 분쟁을 모두 견뎌낸 코드를 실행하고 있는 것입니다. 이 글은 날짜를 검증하여 그 과정이 어떻게 일어났는지에 대한 이야기를 다룹니다.
Solaris의 기원: BSD, System V 및 SVR4
Sun Microsystems는 1982년 2월 24일 Scott McNealy, Andy Bechtolsheim, Vinod Khosla, Bill Joy에 의해 설립되었습니다. 운영체제인 SunOS는 Sun이 설립되기 전 Bill Joy가 작업했던 대학 Unix 계열인 BSD(Berkeley Software Distribution)에서 파생되었습니다. 다른 Unix 계열은 상업적으로 판매되던 AT&T의 System V였습니다. 이 두 갈래는 Linux로 이어지는 Unix 가계도에서 설명하는 분기점이며, Sun은 10년 동안 BSD 쪽에 머물렀습니다.
1987년 Sun과 AT&T는 BSD, System V, Xenix를 하나의 릴리스로 통합하는 공동 프로젝트를 발표했는데, 이것이 보통 SVR4라고 불리는 UNIX System V Release 4입니다. 1991년 9월 4일 Sun은 SunOS 4가 Solaris 2라는 새로운 마케팅 명칭의 SVR4 기반 시스템으로 대체될 것이라고 발표했습니다. Solaris 2.0은 1992년 6월 SPARC 하드웨어 전용으로 출시되었습니다. Sun은 Unix 분기점의 반대편으로 넘어갔고, 고객들은 자신의 소프트웨어를 포팅해야 했습니다.
기존 명칭은 사라지지 않았습니다. 커널은 SunOS 번호 체계를 유지했기에 Solaris 2.6은 SunOS 5.6에서 실행되었고, Oracle Solaris 11.4는 여전히 자신을 SunOS 5.11로 보고합니다. 2026년 illumos 머신에서 uname -a를 실행하면 첫 번째로 출력되는 단어는 여전히 SunOS입니다. illumos가 코드와 함께 그 이름을 계승했기 때문입니다.
Solaris 10이 2005년에 도입한 기술
Solaris 10은 2005년 1월 31일에 출시되었습니다. 이 릴리스가 중요한 이유는 회사가 존속시킨 모든 기술이 해당 릴리스나 그 업데이트 버전에 포함되었기 때문입니다.
DTrace는 Sun에서 Bryan Cantrill, Mike Shapiro, Adam Leventhal이 개발했으며 2003년 11월에 처음 공개되었습니다. DTrace는 재컴파일이나 프로세스 재시작 없이 실행 중인 커널과 사용자 프로세스를 계측합니다. 활성화하지 않은 프로브는 비용이 발생하지 않는데, 이는 스크립트가 요청할 때만 계측 코드가 패치되기 때문입니다. 이러한 특성 덕분에 관리자들은 운영 중인 서버에서도 안심하고 사용할 수 있었습니다. DTrace는 2006년 The Wall Street Journal 기술 혁신상에서 대상을 수상했으며, 2008년에는 USENIX STUG(Software Tools User Group) 상을 받았습니다.
ZFS는 Sun에서 Jeff Bonwick, Bill Moore, Matthew Ahrens가 설계했으며 2004년 9월 14일에 발표되었습니다. ZFS는 볼륨 관리자와 파일 시스템을 하나의 계층으로 통합했습니다. 이를 통해 읽기 시 모든 블록의 체크섬을 확인하고, 손상된 블록을 중복 복사본에서 복구할 수 있습니다. 쓰기 작업은 copy on write 방식을 따릅니다. 블록을 제자리에서 덮어쓰지 않으므로, 쓰기 도중 시스템이 충돌해도 파일 시스템이 절반만 기록되는 일 없이 이전 데이터가 온전히 유지됩니다. 스냅샷은 나중에 변경되지 않은 블록 집합을 가리키기만 하면 되므로 비용이 거의 들지 않습니다. ZFS는 Solaris 10 초기 릴리스에는 포함되지 않았으며, 2006년 6월 Solaris 10 6/06 업데이트를 통해 제공되었습니다.
Zones는 세 번째 핵심 요소입니다. Zone은 하나의 커널 안에서 격리된 여러 사용자 공간을 제공하며, 각 공간은 고유한 루트 파일 시스템, 프로세스 테이블, 네트워크 구성을 가집니다. Zones는 2004년 2월 Solaris 10 베타 빌드에서 처음 등장했으며 정식 릴리스에 포함되었습니다. FreeBSD는 이와 다른 방향에서 동일한 개념에 도달했으며, jails와 Docker 컨테이너의 비교는 커널 수준 격리가 무엇인지 이해하는 가장 명확한 방법입니다. Zones는 오늘날 illumos에서 여전히 사용되고 있으며, 아래에 언급된 최소 한 개 이상의 배포판의 기반이 됩니다.
Sun이 Solaris 소스 코드를 공개한 이유
Sun은 2004년 12월 1일에 CDDL(Common Development and Distribution License)을 OSI(Open Source Initiative)에 제출했고, OSI는 2005년 1월 14일에 이를 승인했습니다. CDDL은 MPL(Mozilla Public License) 버전 1.1을 기반으로 합니다. CDDL의 카피레프트는 개별 파일 단위로 적용됩니다. 즉, CDDL 소스 파일은 CDDL을 유지해야 하지만, 이를 빌드하여 생성된 바이너리는 다른 조건의 코드와 결합할 수 있습니다.
가장 먼저 공개된 것은 DTrace였습니다. DTrace의 소스는 Solaris 10이 출시되기 6일 전인 2005년 1월 25일, 새로 개설된 opensolaris.org 사이트를 통해 CDDL로 공개되었습니다. Solaris 시스템 코드의 대부분은 2005년 6월 14일에 뒤따라 공개되었습니다. ZFS는 2005년 10월 31일에 Solaris 메인 개발 트렁크에 통합되었으며, 2005년 11월 16일 빌드 27을 통해 OpenSolaris 개발자들에게 전달되었습니다. OpenSolaris는 설치 가능한 배포판으로도 발전했습니다. 2008년 5월 5일에는 라이브 CD 형태의 2008.05가 출시되었고, 2009년 6월 1일에는 SPARC 지원을 포함한 2009.06이 출시되었습니다.
라이선스 선택은 오늘날 무엇을 실행할 수 있는지를 결정합니다. Free Software Foundation은 CDDL을 GPL(GNU General Public License)과 호환되지 않는 자유 소프트웨어 라이선스로 분류하며, 이러한 비호환성은 MPL 1.1에서 기인합니다. Linux 커널은 GPLv2를 따릅니다. 이것이 바로 ZFS on Linux가 커널 소스 트리에 병합되지 않고 커널 외부의 커널 모듈로 빌드되는 이유이며, 메인라인 커널에 포함되지 않는 이유입니다. 어떠한 오픈 라이선스로든 공개하기로 한 결정은 이 이야기의 나머지 부분에서 가장 중요한 요소이며, 오픈 소스 라이선스의 역사에서 기업이 왜 이러한 결정을 내리는지 설명합니다.
Oracle이 Sun을 인수했을 때의 상황
Oracle은 2009년 4월 20일, Sun을 74억 달러(Sun의 현금과 부채를 제외한 순액 기준 56억 달러)에 인수하겠다고 발표했습니다. 이 거래는 2010년 1월 27일에 완료되었습니다.
2010년 8월 13일, Mike Shapiro, Bill Nesheim, Chris Armes가 작성한 Oracle 내부 메모가 사내에 회람된 뒤 유출되었습니다. 이 메모는 새로운 정책을 다음과 같이 명시했습니다. "우리는 더 이상 Solaris 운영 체제 전체의 소스 코드를 개발 과정 중 실시간으로, 매일 밤 배포하지 않을 것입니다." 또한 커뮤니티 빌드에 대해서도 선을 그었습니다. "우리는 nightly 빌드나 격주 빌드와 같은 Solaris 바이너리 배포판이나, OpenSolaris 2010.05 이후의 배포판을 출시하지 않을 것입니다." 대신 오픈 소스 릴리스는 제품 출시 이후에 이루어질 것이라고 밝혔습니다. "우리는 기업용 Solaris 운영 체제의 정식 릴리스 이후에 승인된 CDDL 또는 기타 오픈 소스 라이선스 코드에 대한 업데이트를 배포할 것입니다."
2010년 8월 23일, OpenSolaris 운영 위원회(Governing Board)는 Oracle이 위원회 연락 담당자를 임명하지 않았으며, 8월 13일에 개발 파트너십 종료를 발표했다는 내용을 담은 결의안을 통과시켰습니다. 위원회는 Sun이 원래 작성했던 헌장에 따라 커뮤니티의 통제권을 Oracle에 반환하기로 투표했으며, 이로써 위원회는 해산되었습니다.
Oracle Solaris 11은 2011년 11월 9일에 출시되었습니다. 2017년 9월 2일, Oracle은 Solaris 팀 대부분을 해고했습니다. Oracle Solaris 11.4는 2018년 8월 28일에 출시되었으며 현재까지 최신 릴리스로 유지되고 있습니다. Oracle의 수명 주기 지원 정책에 따라 11.4에 대한 Premier Support는 2031년 11월까지, Extended Support는 2037년 11월까지 제공됩니다. 따라서 Solaris는 2018년부터 현재까지 동일한 릴리스를 유지하고 있으며, 명시된 종료 날짜가 있는 지원 대상 상용 제품입니다.
illumos의 시작과 포크라고 불리는 이유
2010년 8월 3일, 메모가 유출되기 10일 전 Garrett D'Amore는 illumos를 발표했습니다. 이 이름은 빛을 뜻하는 라틴어 illum과 운영 체제를 뜻하는 OS를 결합한 것이며, 프로젝트에서는 첫 글자만 대문자로 표기하는 한 단어로 작성합니다.
목표는 커널과 핵심 시스템 유틸리티를 포함하는 통합 패키지인 OS/Net(보통 ON으로 표기)이었습니다. OpenSolaris는 완전히 개방된 적이 없었습니다. C 라이브러리 내부의 국제화 코드(libc_i18n), NFS 잠금 관리자, 암호화 프레임워크, LSI 호스트 버스 어댑터를 위한 mpt 드라이버와 같은 드라이버, 그리고 일부 SPARC 플랫폼 코드 등 여러 부분이 Sun 외부에서는 재빌드할 수 없는 폐쇄형 바이너리로
illumos 기반 배포판은 무엇인가
illumos는 직접 설치하는 운영체제가 아닙니다. 이는 시스템의 핵심 트리이며, 배포판들은 그 위에 사용 가능한 시스템을 구축합니다. 현재까지 배포되고 있는 주요 배포판은 다음과 같습니다.
- OpenIndiana는 2010년 9월 14일 런던 JISC 센터에서 공식 출시되었으며, 과거 OpenSolaris 데스크톱 및 서버 배포판의 가장 직접적인 후계자입니다. Hipster라는 이름의 롤링 릴리스 방식을 채택하고 있으며, 2026년 5월 5일에 2026.04 스냅샷이 발표되었습니다.
- OmniOS는 서버용 배포판으로, 원 제작사가 개발을 중단한 이후 현재는 커뮤니티가 OmniOS CE라는 이름으로 유지보수하고 있습니다.
- SmartOS는 zones 기반의 하이퍼바이저 플랫폼입니다. Joyent가 개발했으며, 2022년 4월 SmartOS와 Triton이 2022년 5월 1일부로 MNX Solutions로 이전된다고 발표했습니다.
- NexentaStor는 스토리지 어플라이언스를 위해 동일한 기반을 사용했으며, illumos가 파생된 상용 제품군입니다.
- Tribblix는 Peter Tribble이 유지보수하는 소규모 배포판으로, 아래에서 자세히 설명합니다.
- DilOS는 illumos 커널 위에 Debian의 패키지 관리 도구를 결합한 배포판입니다.
오늘날 illumos 시스템 설치 과정
Tribblix는 규모가 작고 공개된 문서가 잘 갖춰져 있으며 현재도 꾸준히 릴리스되고 있어 유용한 사례입니다. x86용 Milestone 41은 2026년 8월 5일에 공개되었으며, SPARC 라인은 2026년 4월 21일에 Milestone 34에 도달했습니다. 이 프로젝트는 현대적인 구성 요소를 갖춘 레트로 스타일을 지향하며, 새로운 패키지 시스템으로 전환하는 대신 Solaris에서 사용하던 SVR4 패키지 형식을 유지하고 있습니다.
설치는 라이브 이미지에서 진행됩니다. ISO로 부팅한 뒤 jack 사용자로 로그인하고 비밀번호 jack를 입력합니다. 이후 root 권한을 획득하여 디스크 장치를 대상으로 설치 프로그램을 실행합니다. 프로젝트 공식 설치 문서에서 제시하는 명령어는 다음과 같습니다.
./live_install.sh -G c1t0d0-G 플래그는 EFI(extensible firmware interface) 파티션 레이아웃을 작성하며, -b은 레거시 MBR(master boot record) 레이아웃을 선택합니다. 디스크 이름은 Linux 환경에서 온 사용자에게는 생소할 수 있는 /dev/sda 대신 Solaris의 cXtYdZ 관례를 따릅니다. 소프트웨어 세트는 오버레이(overlays)라고 부르며 같은 줄에서 지정할 수 있습니다.
./live_install.sh -G c1t0d0 develop desktop설치 후 사용하는 패키지 도구는 zap입니다. 이 도구는 오버레이 단위로 작동하므로 의존성 문제를 자동으로 처리합니다.
zap refresh
zap install-overlay develop
zap update-overlay -a위 명령어들이 Tribblix에서 공식적으로 제공하는 방식입니다. 이 명령어들은 사용자가 직접 제어하는 하드웨어 또는 하이퍼바이저에서 실행됩니다. VPS 제어판의 원클릭 이미지 설치와는 거리가 있으며, 이러한 차이가 2026년 현재 illumos 배포의 현실적인 상태입니다.
ZFS와 DTrace가 Solaris보다 오래 살아남은 이유
ZFS는 소스 코드가 공개된 직후 Solaris를 떠났습니다. Pawel Jakub Dawidek은 이를 FreeBSD로 포팅했으며, 2008년 FreeBSD 7.0부터 시스템의 일부로 포함되었습니다. Linux용 네이티브 ZFS 작업은 2008년에 시작되어 2013년에 첫 안정화 릴리스를 내놓았습니다. 2010년부터 2013년 사이에는 illumos가 ZFS 소스의 참조 사본을 유지했는데, 이는 Oracle의 트리가 비공개로 전환되면서 다른 모든 포트가 소스를 가져올 곳이 필요했기 때문입니다. 이것이 포크(fork)의 구체적인 가치입니다. 포크가 없었다면 포트들은 병합할 공통 조상을 갖지 못했을 것입니다.
OpenZFS 프로젝트는 2013년 9월 17일에 이러한 포트들을 조정하기 위해 발표되었으며, ZFS의 원저자 중 한 명인 Matt Ahrens가 창립 멤버로 참여했습니다. OpenZFS 2.0은 2020년 11월 30일에 릴리스되었으며, 릴리스 노트에는 그 결과가 명확히 명시되어 있습니다. "ZFS on Linux 프로젝트가 OpenZFS로 명칭이 변경되었습니다! 이제 Linux와 FreeBSD 모두 동일한 저장소에서 지원되므로 모든 OpenZFS 기능을 두 플랫폼에서 사용할 수 있습니다." FreeBSD 13.0은 자체적인 illumos 파생 사본을 버리고 이 공유 트리로 전환했습니다.
두 ZFS 계열은 디스크상에서 서로 갈라졌습니다. 오픈 소스 계열은 Sun이 마지막으로 공개한 풀 버전 28에서 멈추고, 자리 표시자 버전 5000 아래의 명명된 기능 플래그(feature flags)로 이동했습니다. 따라서 풀은 단일 숫자가 아닌, 자신이 사용하는 기능을 광고하는 방식을 취합니다. Oracle은 비공개 소스 상태에서 자체 버전 번호를 계속 증가시켰습니다. 한쪽에서 버전 28을 넘어 생성된 풀은 다른 쪽에서 임포트할 수 없습니다. ZFS를 어디에서 운영할지 결정 중이라면, FreeBSD와 Linux에서 OpenZFS가 어떻게 동작하는지에 관한 문서에서 두 호스트 간의 실제 차이점을 확인할 수 있습니다.
DTrace는 더 짧은 거리를 이동했습니다. 2009년 1월 FreeBSD 7.1에서 표준이 되었고, Apple은 Mac OS X 10.5 Leopard에 이를 추가했습니다. Oracle은 2017년 8월에 DTrace 커널 코드를 GPLv2로 릴리스했으며, 2018년 2월에 널리 알려진 이 변경으로 Linux에 대한 라이선스 장벽이 제거되었습니다. 하지만 메인라인 커널에는 병합되지 않았습니다. 실제 Linux 트레이싱은 eBPF에서 실행되며, bpftrace는 DTrace의 D 언어와 의도적으로 유사한 스크립트 언어를 제공합니다.
이 패턴은 Solaris만의 사례가 아니라 일반적인 현상입니다. Sun은 다른 사람들이 사본을 유지하고 계속 작업할 수 있도록 하는 라이선스로 ZFS와 DTrace를 공개했습니다. 작업을 지원하던 회사가 중단했을 때도 작업은 계속되었습니다. 코드가 이미 다른 트리와 다른 사람들의 손에 있었기 때문입니다. illumos가 다시 작성해야 했던 비공개 바이너리를 포함하여, 공개되지 않은 Solaris의 부분들은 회사와 함께 사라졌습니다. 이것이 오픈 소스화가 바꾸는 것이며, Linux 배포판이 서로 계승되는 방식 뒤에 있는 것과 동일한 메커니즘입니다.
VPS에서 illumos를 운영해야 합니까?
대부분의 사용자에게 답은 '아니오'이며, 위 내용은 시도를 권장하는 것이 아닙니다. illumos는 지원하는 하드웨어 범위가 좁습니다. 드라이버 세트가 Sun이 지원했던 것과 그 이후 소규모 커뮤니티가 작성한 것으로 제한되기 때문입니다. VPS 제공업체는 Linux와 BSD 이미지만 제공하므로, illumos를 설치하려면 일반적으로 커스텀 이미지를 허용하는 업체에 직접 ISO를 업로드한 뒤 가상 디스크와 네트워크 장치가 인식되는지 확인해야 합니다. 서드 파티 소프트웨어는 배포판 자체 패키지 세트에서 가져오거나 직접 컴파일해야 합니다.
물론 운영할 타당한 이유도 있습니다. 유지해야 하는 Solaris 워크로드가 있거나, 이미 운영 중인 zones 배포 환경이 있거나, 소스 코드 분석에 관심이 있는 경우입니다. 위에 나열된 배포판들은 유지보수가 이루어지고 있으며 메일링 리스트를 통해 질문에 대한 답변을 얻을 수 있습니다. 하지만 이는 새로운 서버를 위한 기본 선택지와는 다른 문제입니다.
ZFS를 사용하기 위해 이 글을 읽으셨다면, 굳이 illumos를 사용할 필요는 없습니다. 패키징이 잘 되어 있고 문서화가 풍부하며 널리 배포된 Linux 또는 FreeBSD에서 OpenZFS를 사용하십시오. 서버 운영을 위해 같은 계열인 BSD 쪽을 고려하고 있다면, 서버 플랫폼으로서의 Linux와 FreeBSD에 대한 실무적 비교 문서를 통해 일상적인 운영에서 무엇이 달라지는지 확인하십시오. illumos는 이러한 도구들의 기원이며, 그 유래를 아는 것은 zpool과 zfs가 왜 나머지 Linux 스토리지 스택과 전혀 다르게 작동하는지를 이해하는 데 큰 도움이 됩니다.
FAQ
illumos와 OpenSolaris는 같은 것입니까?
아닙니다. OpenSolaris는 Sun의 프로젝트이자 배포판이었으며 Oracle이 이를 계승했으나 2010년에 종료했습니다. illumos는 2010년 8월 3일에 발표된 별도의 프로젝트로, 마지막으로 공개된 OpenSolaris 핵심 소스인 OS/Net consolidation을 기반으로 구축되었습니다. 첫 번째 작업은 OpenSolaris에 포함되었던 libc_i18n, NFS lock manager, 암호화 프레임워크 및 여러 드라이버를 포함한 폐쇄형 바이너리 구성 요소를 대체하는 것이었습니다. Oracle이 2010년 이후 소스 공개를 중단했으므로, 2010년 이후의 Oracle 코드는 illumos에 포함되지 않습니다.
왜 Linux 커널에는 ZFS를 포함할 수 없습니까?
라이선스가 맞지 않기 때문입니다. ZFS는 CDDL 라이선스를 따르는데, Free Software Foundation은 이를 GPL과 호환되지 않는 자유 소프트웨어 라이선스로 분류합니다. 이 비호환성은 CDDL이 MPL 1.1로부터 물려받은 것입니다. Linux 커널은 GPLv2를 따릅니다. 실질적인 결과로, Linux용 OpenZFS는 커널 트리 외부 모듈(out of tree kernel module) 형태로 제공됩니다. 일반적으로 설치된 각 커널에 맞춰 DKMS로 빌드하거나 미리 빌드된 모듈 패키지 형태로 사용합니다. 잘 작동하지만 새로운 커널이 나올 때마다 모듈을 다시 빌드해야 하므로, 최신 커널 릴리스보다 며칠 또는 몇 주 정도 늦어질 수 있습니다.
Oracle Solaris는 여전히 지원됩니까?
네. Oracle Solaris 11.4는 2018년 8월 28일에 출시된 현재 릴리스입니다. Oracle의 수명 주기 지원 정책에 따라 Premier Support는 2031년 11월까지, Extended Support는 2037년 11월까지 제공됩니다. Oracle은 2017년 9월 2일에 Solaris 팀의 대부분을 해고했으며, 이후 11.4 버전은 새로운 메이저 버전 출시 대신 지원 저장소 업데이트를 통해 유지되고 있습니다. 전체 소스는 OpenSolaris 시절과 같은 방식으로 공개되지 않습니다.
VPS에 illumos를 설치할 수 있습니까?
가능한 경우도 있지만, 제공업체의 이미지 목록에서 바로 설치하는 경우는 드뭅니다. 일반적으로 사용자 지정 ISO를 연결하고 콘솔을 사용할 수 있는 제공업체가 필요하며, illumos 트리에 포함된 가상 디스크 및 네트워크 드라이버가 하이퍼바이저의 장치를 인식하는지 확인해야 합니다. 범용 설치를 위해서는 OpenIndiana나 Tribblix를 주로 사용하며, SmartOS는 게스트 OS보다는 하이퍼바이저 호스트용으로 설계되었습니다. 비용을 지불하기 전에 로컬 가상 머신에서 먼저 테스트하십시오.
Linux만 사용하더라도 DTrace를 배울 가치가 있습니까?
도구 자체는 대부분 다르지만, 분석 모델은 그대로 적용됩니다. Oracle은 2017년 8월에 DTrace 커널 코드를 GPLv2로 공개하고 Oracle Linux용 포트를 유지 관리하고 있지만, 메인라인 커널에는 병합되지 않았으며 실무적인 Linux 트레이싱은 eBPF에서 수행됩니다. bpftrace가 사용하는 언어는 DTrace의 D와 유사하게 설계되었으므로, 프로브(probes), 조건문(predicates), 집계(aggregations)의 개념은 양쪽 모두 동일합니다. DTrace의 사고방식을 익히면 bpftrace 스크립트를 처음 보더라도 쉽게 읽을 수 있습니다.