Windows Server 2012, 서버 코어(Server Core) 버전의 변화, 그리고 MinShell

image

Windows Server 2008에서 재미있는 버전의 Windows Server가 공개되었습니다. 바로 서버 코어라는 버전입니다. Microsoft의 Windows Server가 그래픽 기반 인터페이스(GUI)와 연계되어, 무겁다, 그리고 이에 관련된 여러 연결 고리들이 많기에, 보안 업데이트나 핫픽스가 발표될 확률도 높다는 고객의 피드백을 수용하여, GUI와의 연계 고리를 모두 끊은 명령어 기반의 Windows Server를 발표한 것입니다.

해당 서버 코어에 대한 출시 이후, 현업에 배치되는 주요 서버, 대표적으로 Hyper-V의 경우에는 서버 코어 버전에 설치를 권장하고, 이에 대한 관리는 원격 서버나 클라이언트(RSAT이 포함된)에서 관리하는 것을 보여드렸었죠.

사실 서버 코어라는 버전이 Windows Server에 대한 현업 배치와 위에 언급드린 사항들에 대한 부분을 커버할 수 있었지만, GUI 기반의 Windows Server 관리자 분들에겐 명령어로 모든 것을 관리하는 것이 조금은 무리수가 있었습니다. 초기 서버 설정에 대한 과정도 많은 지식을 요구했었죠. (IP 설정, Windows 업데이트 설정, 컴퓨터 이름 변경, 나아가 역할 설치등..) 이를 쉽게 하기 위해, Windows Server 2008 R2에서는 SCONFIG이라는 배치 파일 성격의 초기 설정 및 서버 관리 도구와 .NET Framework가 없어, 이를 기반으로 하는 응용 프로그램을 설치할 수 없다는 사항을 개선한 .NET Framework의 내장, 나아가 이를 활용하는 PowerShell을 내장하였습니다.

image

서버 코어를 사용하시다가, 이를 GUI 기반의 Windows Server로 변경하시려면, 기존 Windows Server 2008 R2까지는 재설치가 필요했습니다. Windows Server내 GUI 환경과 서버 코어 환경 사이에 연결고리가 없었기에, 이를 전환할 수가 없었고, 재설치를 통해 환경을 재구성하는 불편함이 따랐던 것은 사실입니다.

image

과연, Windows Server 2012는 이러한 사항을 어떻게 해결하였을까요? 제가 여러 세미나에서 많이 언급드린 이야기지만, 요새 클라우드 단어에서 IT 엔지니어가 유심히 생각해야 할 단어가 바로 표준화(Standardization)입니다. 표준화를 위해서라면 많은 부분이 표준 이미지 하나로 설정하고, 필요시 원하는 형태로 On/Off하는 컨셉이 되어야 하는데.. 서버 코어 버전과 GUI 포함 서버 버전이 따로 존재한다면, 표준 이미지도 2개를 만들어서, 배포해야 합니다. 이러한 연결 고리에 대한 숙제를 풀어낸 것이 바로 MinShell의 탄생을 이끌었습니다.

Windows Server 2008 R2의 서버 코어와 GUI 버전의 아키텍쳐

image

Windows Server 2012의 서버 코어와 GUI 버전의 아키텍쳐

image

서버 코어에서 가장 기본적인 GUI 환경의 엔진을 가진 쉘 환경을 바로 MinShell이라고 합니다. 이 MinShell을 기반으로 전체 GUI 기반 관리 도구 및 탐색기를 추가하게 되면, GUI 버전의 Windows Server로 변환할 수 있으며, 거꾸로 GUI 버전에서 MinShell 환경, 그리고 MinShell 환경도 제거한 순수 서버 코어 버전으로도 이동할 수 있다는 의미입니다.

image

서버 코어 버전에서 기본 GUI 환경만을 설치한 MinShell의 형태가 되면, Windows 탐색기 기반의 전체적인 UI는 제공하지 않지만, 관리를 위한 기본 GUI 관리 도구는 서버 관리자 기반 혹은 명령어 프롬프트에서 COMPMGMT.MSC 등의 실행으로 사용이 가능합니다.

image

GUI 버전의 Windows Server내 역할 및 기능 제거 마법사에서 사용자 인터페이스 및 인프라라는 항목이 있습니다. 이 안에 2개의 항목이 더 있습니다. “서버 그래픽 셸”이 전체 GUI 환경이며, 이를 제거하고, “그래픽 관리 도구 및 인프라”만이 설치된 서버 코어 버전을 만들 수 있습니다. 당연히 서버 코어에서 이를 추가 설치하면 MinShell 환경을 거쳐, 전체 GUI 환경으로 이동할 수도 있겠죠.

앞서 언급드린 것처럼, Windows Server 2008 R2부터 서버 코어에도 PowerShell이 기본 내장되어져 있고, Windows Server 2012의 PowerShell은 GUI에서 하실 수 있는 모든 일들을 전부 PowerShell 기반 Cmdlet(커맨드릿)에서 할 수 있습니다.

image

여기서 *-WindowsFeature라는 커맨드릿을 통해, 구성 요소의 추가 제거가 가능합니다. 만약 GUI 환경을 추가하고 싶다면, Add-WindowsFeature 커맨드릿을 사용하면 되죠.

image

GUI에 대한 기능을 검색해보면, 2개가 나오는 것을 볼 수 있습니다. 현재 Server-Gui-Mgmt-Infra만 설치되어져 있기에, MinShell 기반의 Windows Server 2012 서버 코어입니다. 여기서 Remove-WindowsFeature를 사용해 이를 제거하면 GUI가 아예 없는 서버 코어, 거꾸로, Add-WindowsFeature를 통해 Server-Gui-Shell을 설치하면, GUI 버전의 Windows Server 2012가 되는 것이죠.

어떠신가요? 기존 보다 서버 코어에 대한 유연성과 더불어 Windows PowerShell이 내장되어져서 조금더 쉽게 접근하실 수 있겠죠? 필요한 커맨드릿을 찾는 것은 Get-Command를 통해 검색해보실 수 있습니다.

Hyper-V Server 2012의 경우에도, 서버 코어를 기반으로 만들어져 있고, 서버 코어내 PowerShell을 사용할 수 있습니다. Get-Command *VM* 커맨드릿을 사용해보시면 아시겠지만, 기본 2008 R2까지는 제공되지 않았던 Hyper-V의 명령어를 내장하고 있기에, 좀더 쉽게 관리가 가능합니다.