Geek of All TradesServer Core의 이해

Greg Shields

목차

Windows Server 2008, MS-DOS Edition
안내 가이드
Server Core 관리

IT 출판 업계의 눈에는 모든 일에 만능이어야 하는 입장에 있는 IT 전문가들의 바람이 거의 눈에 들어오지 않는 모양입니다. 최신 기술을 깊고도 철저하게 설명하고 있는 그 많은 책과 기사가 있음에도 소규모 환경의 IT 전문가가 바라는 바는 거의 충족되지 않고 있습니다. 이 말에 공감하십니까? 여러분이 시스템 환경의 온갖 영역을 최종적으로 책임져야 하나요? 네트워크 라우팅에서부터 서버 관리, 프린터 토너 카트리지 교환까지 모든 것을 혼자서 관리하고 계십니까?

그렇다면 이 칼럼을 당신께 바칩니다. 필자의 이름은 Greg Shields입니다. 지난 15년간 크고 작은 IT 환경에서 일해 왔으며 최근 몇 년간은 그동안 보고 배운 바를 글로 옮기고 있습니다. 필자는 특별히 어떤 분야의 전문가가 아닌 독자 여러분을 대상으로 소규모 IT 환경을 개선하기 위해 오늘 당장 구현할 수 있는 최선의 정보를 소개할 수 있는 기회를 매달 가지게 된 것을 매우 기쁘게 생각합니다.

필자는 이 글에서 "소규모 비즈니스"라는 표현을 사용하지 않으려고 합니다. 소규모 비즈니스에 몸담고 있는 사람들이 오늘날 만능 IT 전문가의 특징을 대표하는 측면이 있기는 하지만, 한편에는 훨씬 더 큰 조직의 작은 일부분을 관리하는 업무를 맡은 사람들도 있습니다. 뭐가 되었든 만일 모든 것을 책임진 사람이 당신이라면, 아마도 "일단 끝내고 보자"라는 생각으로 일하고 계실 겁니다. 필자는 이 칼럼에서 그렇게 하는 방법을 정확히 소개함으로써 보너스도 받으면서 매일 저녁 정시 퇴근할 수 있도록 도와 드리려고 합니다.

본론으로 바로 들어가자면, 이 첫 번째 컬럼에서는 당신이 아직 관심을 두어 본 일이 없을지도 모르는 새로운 형태의 Windows Server에 대해 이야기하려고 합니다. Windows Server 2008의 Server Core는 새롭게 추가된 부분으로 소규모 컴퓨팅 환경에 대단히 유용합니다. 이 칼럼에서 필자는 왜 그러하며 어느 부분에서 가장 적합한지에 대해 이야기할 것입니다. 또한 Windows Server 2008에서 Server Core를 처음 설정하는 데 필요한 단계를 함께 밟아볼 것입니다.

Windows Server 2008, MS-DOS Edition

MSDN 웹 사이트는 Server Core에 대해 다음과 같이 언급하고 있습니다. "Windows Server 2008 운영 체제를 실행하는 컴퓨터를 위한 최소 수준의 서버 설치 옵션인 Server Core는 관리 비용이 저렴한 제한된 기능의 서버 환경을 제공합니다." 복잡하기는 하지만 여기에서 진짜로 말하고 있는 바는 Server Core가 Windows Server 2008의 설치 옵션 중 하나이며 이 운영 체제의 많은 기능이 생략된 버전이라는 것입니다. 탐색기 셸도 없으며, Internet Explorer도 없으며, 관리 코드도 지원하지 않습니다.

Server Core는 Windows Server 2008 개발 과정에서 완성된 구성 요소화 작업의 한 결과물입니다. 큰 관점에서 보면 이 구성 요소화는 Windows Server의 코드베이스를 서로 연결되는 몇 개의 논리적 그룹으로 분해한 것입니다. 이렇게 얻어진 Windows Server를 형성하는 구성 요소 및 구성 요소 간의 인터페이스에 대한 상세한 지식을 통해 Microsoft는 제외해도 문제가 없는 구성 요소가 어떤 것인지 확인할 수 있었습니다.

Windows를 분해하여, 심지어는 그래픽 사용자 인터페이스까지 대부분 제거하고 그 핵심만 남겨 둠으로써, 공격당할 수 있는 부분은 적어지고 필요로 하는 하드웨어 리소스 요구 사항도 줄어든 더 작은 OS가 탄생했습니다. 하드웨어 요구 사항이 줄어들었다는 것은 Server Core가 덜 강력한 서버에도 설치될 수 있다는 뜻입니다. 따라서 Server Core를 사용하면 처분하려고 했던 구형 하드웨어를 계속 사용할 수 있습니다.

이미 언급한 바와 같이 이 간결하고 깔끔한 OS의 콘솔에서는 모든 서버 관리용 그래픽 도구가 제거되었습니다. 이 모든 실제적인 측면에서 볼 때, 우스개 소리긴 하지만 Server Core를 Windows Server 2008, MS-DOS Edition으로 부를 수도 있겠습니다. 이 때문에 시스템 환경에서 Server Core를 사용하려면 명령 프롬프트에서 예전에 사용했던 기술을 먼지 속에서 끄집어내고 수년 동안 사용하지 않았던 텍스트 명령들도 다시 배워야 할 필요가 있습니다.

어떤 분들에게는 이것이 나쁜 소식이겠지요. 하지만 일단 이러한 재학습 과정이 끝나면 시스템 환경에 있는 다른 "실제" Windows 서버를 관리하는 데 바로 사용할 수 있는 명령줄 기술을 익히게 되었음을 아시게 될 것입니다. 이는 몇 가지 드문 예외를 제외하고는 Server Core 인스턴스 관리에 사용되는 모든 명령을 완전한 Windows Server에서도 그대로 사용할 수 있다는 것을 의미합니다. 명령줄 관리 방식에서는 스크립트와 배치 파일이 많이 사용되므로 더욱 신속하고 안정적으로 문제를 해결하고 시스템 환경을 관리할 수 있습니다.

Server Core에서 명령줄을 사용해야 한다는 것이 아직도 두려우신 분은 명령줄 구성의 대부분은 맨 처음 서버를 구축할 때 필요하다는 사실을 들으시면 기쁘시겠군요. 일단 서버를 구축하고 네트워킹을 설정하고 도메인에 연결한 후에는 다른 서버에 사용하는 것과 같은 일반적인 관리 콘솔을 사용할 수 있습니다.

안내 가이드

Server Core를 처음 설치하는 과정을 마지막까지 도와 드리겠습니다. 이 과정에는 최초의 설치 작업을 마친 후 서버의 운용 준비를 위해 명령 프롬프트에서 실행해야 할 모든 명령이 포함됩니다.

Server Core는 Windows Server 2008과 별개의 버전이 아닌, 하나의 Windows Server 2008 설치 옵션입니다. 따라서 Windows Server의 Standard, Enterprise, Datacenter 버전 중 어떤 버전을 구입했든지 전체 버전과 Server Core 버전 중에 선택하여 설치할 수 있습니다. 설치 DVD를 대상 서버의 드라이브에 넣고 컴퓨터를 부팅하면 선택할 수 있는 옵션이 표시됩니다.

설치와 관련된 몇 가지 질문에 대답하고 나면 그림 1과 유사한 화면이 표시되며 여기서 선택한 버전에 대한 설치 옵션을 선택할 수 있습니다. 이 글에서는 Windows Server 2008 Standard Edition을 Server Core 설치 옵션으로 설치하는 과정을 설명합니다. WinPE의 사전 설치 질문에 대답하고 나면 설치가 시작됩니다.

fig01.gif

그림 1 설치 옵션인 Server Core

일단 설치 과정이 완료되면 암호를 입력하지 않고 관리자로 로그인하십시오. 그러면 바로 암호를 변경하라는 메시지가 표시됩니다. 암호를 변경하면 로그인되며 대단히 단순한 Server Core의 사용자 인터페이스가 나타납니다. 그림 2에서는 Server Core 인스턴스의 텅빈 콘솔을 보여 줍니다.

fig02.gif

그림 2 명령 프롬프트만 나타나는 Server Core의 인터페이스

새로 설치된 Server Core 인스턴스에는 미리 구성된 설정 사항이 전혀 없습니다. 이 인스턴스를 해당 도메인의 네트워크에 연결하고 작동할 수 있도록 준비하려면 명령 프롬프트를 통해 여러 가지 구성 작업을 수행해야 합니다. 이 말이 두렵게 들리시겠지만 안내 가이드를 따르기만 하면 문제없이 초기 구성을 마칠 수 있으므로 안심하십시오.

컴퓨터 이름 변경 컴퓨터에 임의로 생성된 이름이 지정되어 있을 것입니다. 다음 명령을 통해 이름을 변경하십시오.

netdom renamecomputer %computername%
  /newname:{newComputerName} 

이름을 변경한 후에는 컴퓨터를 다시 부팅해야 하며 다음 명령을 사용할 수 있습니다.

shutdown /r /f /t 0

정적 IP 주소, 서브넷 마스크 및 기본 게이트웨이 설정 서버에서 DHCP를 사용한다면 이 단계는 무시하십시오. 서버에 정적 IP 주소를 설정하고 기본 게이트웨이를 구성하려면 다음 명령을 사용합니다.

netsh interface ipv4 set address {interfaceName} static
  {ipAddress} {subnetMask} {defaultGateway}

대부분의 서버에서 {interfaceName}에 해당하는 값은 "Local Area Connection"으로 설정될 것입니다. 그 이름은 다음 명령으로 확인할 수 있습니다.

netsh interface show interface

DNS 서버 설정 서버의 DNS 서버 주소를 설정하는 것으로 네트워크 구성을 마칩니다. 다음 명령을 사용합니다.

netsh interface ipv4 add dnsserver name={interfaceName}
  address={dnsServerIpAddress} index=1

도메인 참가 일단 컴퓨터의 이름과 네트워킹이 설정되면 다음 명령으로 도메인에 참가시킵니다.

netdom join {computerName} /domain:{domainName}
  /userD:{domainUsername} /passwordD:{domainPassword}

이 과정을 완료한 다음에는 컴퓨터를 다시 부팅해야 합니다.

프록시 서버 구성 만일 여러분의 조직에서 프록시 서버를 이용해 인터넷에 연결하고 있다면 다음 명령으로 구성을 설정하십시오.

netsh winhttp set proxy {proxyServerName}:{proxyPortNumber}

Server Core에서 웹 브라우저를 실행할 수 없기는 하지만 프록시를 사용하는 환경에서 자동 업데이트를 통해 인터넷에서 업데이트를 다운로드한다면 이 설정을 구성해야 합니다.

라이선스 키 추가 및 활성화 Server Core에는 서버 관리자가 없으므로 서버의 라이선스 등록에도 명령줄이 사용됩니다. 다음 명령으로 라이선스 키를 입력합니다.

slmgr –ipk {licenseKey}

키에 있는 문자열은 대시로 분리할 수 있습니다. 다음 명령으로 라이선스를 활성화합니다.

slmgr –ato

이 명령을 입력한 다음 팝업 창이 나타날 때까지 한참 동안 멈춘 상태가 계속될 수 있는데, 그러한 경우 인내심을 가지고 기다려 주십시오.

자동 업데이트 구성 자동 업데이트는 명령줄을 통해서나 그룹 정책을 통해 구성할 수 있습니다. 보통은 그룹 정책을 사용하여 시스템 환경의 다른 시스템과 함께 Server Core 인스턴스도 구성하는 것이 간편합니다. 하지만 자동 업데이트를 위한 그룹 정책 구성이 다운로드하거나 설치하기 전에 알림을 보내도록 설정되어 있다면 이것은 Server Core에서는 작동하지 않을 것입니다.

탐색기 셸이 없기 때문에 자동 업데이트에서 사용하는 풍선 알림은 Server Core에서 기능하지 않습니다. 하지만 C:\Windows\System32에서 찾을 수 있는 scregedit.wsf 스크립트를 사용하면 매일 오전 3시 정각에 업데이트를 다운로드하여 설치하는 등의 자동 업데이트 설정을 구성할 수도 있습니다.

Cscript c:\windows\system32\scregedit.wsf /au 4

관리 자동 업데이트와 마찬가지로, 고급 보안이 포함된 Windows 방화벽은 그룹 정책으로 관리하는 것이 최선입니다. 하지만 독립 실행형 인스턴스에 대해 방화벽을 설정하거나 해제하려면 다음 명령을 사용할 수 있습니다.

netsh advfirewall set {profileName} state {on|off}

다음 명령을 사용합니다.

netsh advfirewall set /?

이렇게 하면 {profileName}의 값을 결정할 수 있습니다.

원격 데스크톱 활성화 마지막으로 Server Core 인스턴스의 콘솔을 터미널 서비스를 통해 관리하려면 다음 명령을 사용하십시오.

cscript c:\windows\system32\scregedit.wsf /ar 0

이게 다입니다. 이제 필요한 어떠한 구성 요소든 Server Core 인스턴스에 설치할 수 있습니다. Server Core에는 다음과 같이 완전한 Windows Server 2008 인스턴스에 설치할 수 있는 역할의 일부만 사용할 수 있다는 점을 기억하십시오.

  • Active Directory 도메인 서비스

  • DHCP 서버

  • DNS 서버

  • 파일 서비스

  • 미디어 서비스

  • 인쇄 서비스

  • Hyper-V

  • 웹 서비스(IIS)(제한됨)

제한된 역할을 사용할 수 있다는 것은 Server Core 인스턴스가 시스템 환경의 요구 사항 중 극히 일부만을 충족할 수 있을 것이라는 점을 의미합니다. Server Core 인스턴스는 도메인 컨트롤러, DNS 서버 또는 파일 서버 등의 초경량 인프라 서버로 사용될 수 있습니다. 이런 역할로 직접 콘솔에 접속해 제한된 작업만 수행하면 되므로 성능이 뒤처지거나 구형인 하드웨어로도 작업을 수행할 수 있습니다.

Server Core의 축소된 하드웨어 요구 사항은 또한 Hyper-V를 호스팅할 때 유용합니다. Hyper-V의 목표는 가상 컴퓨터를 실행하기 위해 하드웨어에서 최대한의 성능을 쥐어짜내는 것입니다. Hyper-V의 가상화 계층 처리에 주 파티션 운영 체제 인스턴스가 사용되기 때문에, Server Core의 보다 제한된 하드웨어 요구 사항은 가상 컴퓨터의 운영에 더 많은 하드웨어 리소스를 할애할 수 있도록 합니다.

이를 활용하려면 Server Core에 구성 요소를 설치할 수 있도록 다음 두 가지 명령을 익힐 필요가 있습니다. 첫 번째는 oclist로, 서버에 설치되어 있는 사용 가능한 구성 요소를 나열합니다. 두 번째는 ocsetup {componentName}으로, 원하는 구성 요소를 설치합니다. 예를 들어 Hyper-V 역할을 설치하려면 다음 명령을 사용합니다.

ocsetup Microsoft-Hyper-V

대부분의 Windows 명령과는 달리, ocsetup 명령은 대/소문자를 구분한다는 점에 유의하십시오. 따라서 구성 요소를 설치하려면 oclist를 사용하여 대/소문자까지 정확한 이름을 알아낸 후에 ocsetup으로 이를 설치해야 합니다.

또 다른 명령인 Wusa는 패치를 설치할 때 편리합니다. 수동으로 MSU 또는 MSP 패치를 설치하려면 다음 명령을 사용합니다.

wusa {patchFileName}

Server Core 관리

Server Core를 설치한 후에 남은 관리 작업은 데스크톱에 이미 설치된 관리 콘솔을 통해 처리할 수 있습니다. 예를 들어 일단 Hyper-V 역할이 설치되면 Hyper-V와 관련된 다른 모든 작업은 이제 Hyper-V 관리자를 통해 수행할 수 있습니다. 때문에 일단 Server Core 인스턴스를 구성하고 나면 다루기가 그다지 어렵지 않습니다.

그래도 때때로 파일 작업이나 새로운 구성 요소 또는 패치 설치를 위해 서버 자체와의 상호 작용이 필요할 수 있습니다. 이를 수행하기 위한 가장 분명하고도 쉬운 방법은 터미널 서비스를 사용하여 서버에 연결하는 것입니다. 그 외에 또 다른 명령줄 도구 집합인 Microsoft PsTools도 도움이 될 수 있습니다.

PsTools는 유능한 관리자들이 네트워크 각지에 퍼져 있는 모든 시스템에 원격으로 명령줄 기반 작업을 수행하기 위해 오랫동안 사용해 왔습니다. Server Core의 설치가 모두 명령줄을 통해 이루어지기 때문에 이 도구는 특히 Server Core에 유용합니다.

이 도구를 사용해 본 적이 없다면 PsTools 사이트(technet.microsoft.com/sysinternals/bb896649.aspx)에서 다운로드하십시오. 다운로드 파일에는 도구 전체에 대한 사용법이 적힌 HTML 도움말 파일이 포함되어 있습니다.

압축을 푼 다음 관리 데스크톱의 경로에 속한 임의의 위치로 복사하십시오. 유용한 힌트: 필자는 이것을 명령줄 프롬프트를 열었을 때 항상 사용할 수 있는 위치인 c:\windows에 복사했습니다.

PsTools에 여러 도구가 들어 있지만 Server Core에서는 특히 두 가지가 유용합니다. 첫 번째로, PsExec을 이용하면 다른 컴퓨터에서 원격으로 명령을 실행할 수 있습니다. 이 도구는 원격 Server Core 인스턴스에 각각 개별적인 명령을 실행할 때도 유용하지만, 심지어는 원격 명령 프롬프트를 시작하기 위한 용도로도 매우 유용합니다. 그림 3에 볼 수 있듯이 관리 데스크톱에서 다음 명령을 실행하면 됩니다.

psexec \\{computerName} cmd

fig03.gif

그림 3PsExec이 로컬 데스크톱으로 가져온 Server Core 명령 프롬프트

이 명령을 Server Core 인스턴스에 대해 실행하면 원격 서버의 명령 프롬프트와 완전히 동일한 명령 프롬프트가 나타나는 것을 볼 수 있습니다.

때로는 그저 서버에서 프로세스의 동작을 확인하고 싶을 수도 있습니다. 어쩌면 어떤 프로세스가 프로세서나 메모리를 자신에게 할당된 양보다 많이 사용하고 있을지 모릅니다. 이런 경우 PsList가 도움이 될 수 있습니다. 정기적으로 업데이트되는 텍스트 기반의 프로세스 및 리소스 사용량 보기(그림 4)를 시작하려면 다음 명령을 사용합니다.

pslist \\{computerName} /s

fig04.gif

그림 4PsList로 실행 중인 프로세스 목록 보기

프로세스 목록은 반복적으로 업데이트되며 프로세서 사용량에 따라 나열됩니다. 일부 프로세스가 오작동하는 경우에는 다음 명령으로 문제의 프로세스를 중단할 수 있습니다.

pskill \\{computerName} {processNameOrPid}

마지막으로 Server Core 인스턴스를 관리하는 데에는 VBScript와 Windows PowerShell 스크립트 언어가 매우 편리하다는 것을 알게 될 것입니다. Server Core에는 필요한 VBScript 런타임 코드가 구비되어 있기 때문에 콘솔에서 직접 명령을 실행할 수 있지만, Windows PowerShell은 현재 이용할 수 없습니다. 따라서 Server Core 인스턴스에 대해 관리 데스크톱에서 Windows PowerShell 명령을 실행하는 것은 가능하지만, 이 명령을 Server Core 인스턴스 내에서 직접 실행할 수는 없습니다.

자, 이제 다 되었습니다. 이 정도면 소규모 시스템 환경에서 오늘 바로 Server Core를 시작하기에 충분할 것입니다.

소규모 시스템 환경에서 어떤 문제가 있거나 그에 대한 작은 도움이나 조언이 필요합니까? 그와 관련된 질문이나 제안이 있으면 gshields@concentratedtech.com으로 보내 주시기 바랍니다.

Greg Shields는 Concentrated Technology의 공동 설립자이자 IT 전문가인 MVP입니다. 최근 저서인 Windows Server 2008: What's New/What's Changed는 SAPIEN Press를 통해 구매할 수 있습니다. 그에 대해 알고 싶다면 www.ConcentratedTech.com으로 연락하시기 바랍니다.