류짱:Beyond MySelf

지난번 포스팅때 말씀 드렸던 C게임 서버의 bloated registry 파일의 압축을 위해서 아래 KB를 참고해서 작업을 시도했지만

How to Compress "Bloated" Registry Hives

https://support.microsoft.com/en-us/help/2498915/how-to-compress-bloated-registry-hives

While there may be 3rd party tools available for this scenario, the process listed below could be followed to compress the affected hives.
1)  Boot from a WinPE disk. (http://technet.microsoft.com/en-us/library/cc766093(WS.10).aspx)
2)  Open regedit while booted in WinPe, load the bloated hive under HLKM.  (e.g. HKLM\Bloated)
3)  Once the bloated hive has been loaded, export the loaded hive as a "Registry Hive" file with a unique name.  (e.g. %windir%\system32\config\compressedhive)
      a)  You can use dir from a command line to verify the old and new sizes of the registry hives.
4) Unload the bloated hive from regedit. (If you get an error here, close the registry editor. Then reopen the registry editor and try again.)
5) Rename the hives so that you will boot with the compressed hive.
e.g.
c:\windows\system32\config\ren software software.old
c:\windows\system32\config\ren compressedhive software

역시나... 가이드는 가이드 일뿐... 아래 그림처럼 실패 되었습니다.



서버 점검 시간에 조금 여유가 있어서 당황하지 않고 다른 방법을 찾아 보다가 아래 블로그를 통해서  Sysinternal에서 제공하는 RU라는 Registry 프로그램을 이용하여 레지스트리의 압축이 가능 한 것을 확인하고.. 서버에 힘들게 해당 파일을 카피 한 후 작업을 시도 해 보았지만 역시나 실패 했습니다.

Unable to restart server due to registry bloat over 2GB

https://blogs.technet.microsoft.com/askperf/2014/10/22/unable-to-restart-server-due-to-registry-bloat-over-2gb/

블로그에는 RU를 이용해서 압축이 된다는 설명만 해 놓았지 어떤 환경에서 해야된다는 설명이 없어서 난감했지만.. 혹시나 제 PC에서는 되지 않을까 하는 생각에 게임 서버의 software 레지스트리 파일을 제 PC로 복사 해 와서 아래와 같이 명령어를 실행하였습니다.

RU -h software

운좋게도  레지스트리 파일의 압축이 정상적으로 진행 되었습니다. 우와^^

2G -> 35Mb

이에 압축이 성공 된 레지스트리를 게임 서버의 Windows\system32\Config폴더에 다른이름으로 복사 한 후
다시 해당 서버를 WinpE
로 부팅 후 ren 커멘드를 이용해서 레지스트리 이름 변경하였습니다.


그리고 서버를 재 시작 후 정상 부팅 하여  paged pool 사이즈를 확인 하니 하하하...
기존
2G 에서 현재 281M로 변경 됨 확인(게임서버 구동 중)


추가로 이전에 문제가 되었던  Windows update 파일도 설치가 잘 되었습니다.

마침내 시름 시름 앓고 있던 서버를 가까스로 살렸습니다.^^


[참고 자료]

How to Compress "Bloated" Registry Hives

https://support.microsoft.com/en-us/help/2498915/how-to-compress-bloated-registry-hives

 

Unable to restart server due to registry bloat over 2GB

https://blogs.technet.microsoft.com/askperf/2014/10/22/unable-to-restart-server-due-to-registry-bloat-over-2gb/

Comment 0

Windows Server 2008R2 기반 WinPE ISO 만드는 법

먼저 아래 사이트에서 he Windows® Automated Installation Kit (AIK) for Windows® 7을 다운로드 후 설치합니다.
https://www.microsoft.com/en-us/download/details.aspx?id=5753

다운로드 및 설치가 완료 되면 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Windows AIK로 이동해
Deployment Tools Command Prompt을 관리자 모드로 실행합니다.

명령 프롬프트가 실행 되면 copype.cmd amd64 c:\winpe 명령을 입력 후 실행합니다.


더보기


위 와 같은 로그를 확인 하고 위 명령어로 생성 된 C:\Winpe 폴더로 이동하여 아래 명령어를 실행합니다.
copy winpe.wim ISO\Sources\boot.wim

카피가 완료 되면 아래 명령어를 실행하여 ISO 파일을 만듭니다.

더보기

 

정상적으로 생성 되었다는 로그가 확인이 되면 생성 된 ISO파일을 이용하여 OS를 부팅 합니다.

아래 그림은 VMware에서 운영 중인 Windows Server 2008R2를 방금 생성한 WinPE로 부팅 하는 화면 입니다.
VMWare에서 ISO로 부팅하는 방법은 따로 설명드리지 않겠습니다.

ISO로 부팅을 하기 위해서 화면에서 처럼 아무 키나 누르면 아래 그림 처럼 원래 설치 된 OS가 아닌
WinPE로 부팅이 됩니다.

Windows Server 2008R2로 만든 WinPE이기 때문에 아래 처럼 Windows 7과 동일한 로그온 하면을 볼 수 있습니다.

부팅이 완료 되면 아래와 같이 CMD가 자동으로 시작 됩니다.

명령프롬트에 커멘드 입력이 가능 해지면 regedit 와 같은 커멘드를 실행 해서 기존 OS의 레지스트리 등을 hive 하거나
다른 작업을 합니다.


[참고 자료]

Best Practices for Recovering Windows Server 2008, Windows Server 2008 R2, Windows 7, and Windows Vista

https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Tivoli%20Storage%20Manager/page/Best%20Practices%20for%20Recovering%20Windows%20Server%202008,%20Windows%20Server%202008%20R2,%20Windows%207,%20and%20Windows%20Vista


감사합니다.

Comment 0

최근 C게임의 게임 서버에서 게임 서버 프로세스가 얘기치 않게 종료되는 장애가 발생하여  담당자의 요청으로 해당 서버를 살펴 보니 시스템이 시작 된지 얼마 되지 않았음에도 paged pool의 사용률이 매우 높았습니다.
담당자에게 물어보니 게임서버 프로세스가 종료 된 시점이 주말, 사용자가 그나마 가장 많은 시점이었고 물리 메모리가 90%이상 사용중이었으며 리소스 부족으로 게임 프로세스가 얘기치 않게 종료 되었다고 하여 아무래도 Paged pool이 2G이상의 물리 메모리를 사용하고 있어서 게임프로세스에 추가로 할당 할 메모리기 부족했었던 것 같아서 먼저 paged pool의 사이즈가 2G이상인  원인을 찾아보기로 했습니다.

인터넷이 안되는 서버라 Windows Debugging tool과 Sysinternals에서 제공하는 livekd를 설치 후 해당 서버에 필요한 MS Public symbol을 복사 한 후 Livekd를 이용해서 paged pool의 사용률 및 pool tag를 확인 해보니  "CM31"이라는 Pool tag가 약 1.95G 정도의 Paged pool을 사용하고 있었고 해당  "CM31" pool tag는 Windows registry에서 사용하는 것임을 알게 되었습니다.

이에 해당 서버의 Windows\system32\config 폴더에서 레지스트리 파일을 확인 해보니 software 파일의 사이즈가 1.95G
Paged pool 메모리에는 레지스트리 파일이 로드 되기 때문에... 해당 서버의 paged pool의 사용량은 높을 수 밖에 없었던... ㅎㅎ

Pushing the Limits of Windows: Paged and Nonpaged Pool
https://blogs.technet.microsoft.com/markrussinovich/2009/03/10/pushing-the-limits-of-windows-paged-and-nonpaged-pool/
The largest consumer of paged pool, at least on Windows Vista and later, is typically the Registry, since references to registry keys and other registry data structures are stored in paged pool. The data structures that represent memory mapped files, called sections internally, are also stored in paged pool.

서버를 좀더 살펴 보니 Windows update 또한 2014년 이후 계속 실패되고 있어서.. 큰맘 먹고 해당 서버를 살려 보기로 하였습니다. ㅎ
이번 포스트팅에서는 우선 paged pool의 사용률이 tag를 확인 하는 방법을 설명하고 레지스트리 압축 후 paged pool 사이즈의 변경과 Windows update까지 되게끔 하여 해당 서버를 살려 낸 방법은 다음 포스팅에 소개 하겠습니다.

Livekd와 Windbg을 이용한 Page pool 확인 방법
[환 경]
OS : Windows Server 2008R2 SE on VMWare
Physical Memory : 12G

[증 상]

1. 게임 프로세스의 얘기치 않은 종료 발생

2. Paged pool의 사용량이 동일 환경의 다른 서버들보다 매우 높음

3. Windows update 실패

[Livekd와 Windbg를 이용한 Paged pool 상세 확인 방법]

우선 paged pool의 사용률이 높은 서버에 Windows debugging tool을 설치하고 liveked를 복사합니다.
그리고  p 해당 서버는 인터넷이 안되는 환경이기 때문에 이전에 포스팅한 적이 있는"인터넷이 안되는 환경의 서버에서 Livekd를 이용한 Full dump 수집 방법"(http://ryuchan.kr/510)에 소개 한 것처럼  paged pool의 사용률이 높은 서버의 system32폴더에서 Kernel32.dll, Ntdll.dll, ntoskrnl.exe 3개의 파일을 복사하여 인터넷이 되는 Windows debugging tool이 설치 된 PC로 옮긴 후 해당 pc에서 아래와 같이 symchk 명령어를 실행해서 public symbol을 다운로드 받은 후 해당 파일들을 livekd를 실행 서버로 다시 옮깁니다.

명령 프롬프트를 관리자 권한으로 실행하고 Windows debugging tool이 설치 된 폴더로 이동하여 미리 복사 해 놓은 livked 커멘드를 심볼을 fix하는 명령어와 함께 실행 합니다.

livekd -y D:\sytem_sys32

위 명령어 실행 후 정상적으로 로컬 심볼이 로드 되면 아래와 같이 !poolused /t10 4 명령어를 실행합니다.

해당 명령어를 실행하면 아래와같이 paged pool의 사용률이 가장 높은 10개의 pool tag와 함께 사용량을 확인 할 수 있습니다.

아래 그림에서 학인 되는 것처럼 CM31이라는 pool tag가 약 1.95G의 메모리를 사용하고 있습니다.

CM31 tag는 레지스트리가 사용하는 tag임을 확인하고 실제 해당 서버의 레지스트리 파일을 확인 해보니 아래와 같이 software 레지스트리 파일의 사이즈가 1.95G가 이상입니다.

추가로 Windows update도 2014년 이후에 계속 설치가 실패되고 있어서 해당 서버의  CBS를 로그를 살펴 보았습니다.

CBS 로그를 보니 아래와 같이 시스템 리소스  오류 메시지가 발생하고 있네요. 흐흐흐.


[조치 방법]

아무래도 손상된 소프트웨어 레지스트리와도 관련이 있는 듯해서 해당 레지스트리를 Fix 가 필요 해 보여서 아래 KB를 참고하여 레지스트리 파일을 압축 하려고 하였지만 실패 하였습니다.
How to Compress "Bloated" Registry Hives
https://support.microsoft.com/en-us/help/2498915/how-to-compress-bloated-registry-hives
그러나  다행히도 다른 방법을 이용해서 겨우 레지스트리를 압축을 성공하여 Paged pool 메모리도 정상사이즈로 변경 되었고
추가로 업데이트도 성공적으로 진행하였습니다.

레지스트리의 Fix 에 관한 자세한 내용은 다음 포스팅(http://ryuchan.kr/533)을 참고 하십시오^^


[참고 자료]

Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/

인터넷이 안되는 환경의 서버에서 Livekd를 이용한 Full dump 수집 방법
http://ryuchan.kr/510

LiveKd v5.62
https://docs.microsoft.com/en-us/sysinternals/downloads/livekd

감사합니다.

Comment 0

C드라이브의 공간을 여유있게 할당 하지 않은 가상화로 운영 중인 Windows Server 2008R2 게임서버들의 디스크 공간확보를 위해서 아래 블로그를 이용해서 Windows update 관련 파일들을 삭제하곤 하였습니다만......
How to Clean up the WinSxS Directory and Free Up Disk Space on Windows Server 2008 R2 with New Update
https://blogs.technet.microsoft.com/askpfeplat/2014/05/13/how-to-clean-up-the-winsxs-directory-and-free-up-disk-space-on-windows-server-2008-r2-with-new-update/
위 방법은
Kb2852386 설치 후 Windows Feature에서 Desktop experience를 설치 해야했고시스템의 재 시작도 필요하여 많은 번거로움이 있었습니다.

이에 다른 방법을 찾아 보다가 최근에 아래와 같은 방법을 찾아서 실 서비스에 적용해 보았으며 문제 없이 동작 하였으니 참고 하시기 바랍니다.

아래 소개 해 드리는 방법은 동일하게 Cleanmgr을 사용하는 것입니다만 Kb2852386Desktop experience를 설치 하지 않은 상태에서 Cleanmgr를 실행하여 불필요 파일의 삭제가 가능 하므로 현재 실행 중인 서버에서 바로 적용이 가능하다는 장점이 있습니다.
물론 파일 삭제 후 재시작은 한번 필요 하지만요..
자세한 방법은 아래와 같습니다.

[Windows Server 디스크 용량 확보 방법]
- 대상 서버 : Windows Server 2008R2

- 상세 방법

먼저 용량이 부족한 서버에 로그온을 합니다.  아래 폴더 위치로 이동하여 cleanmgr.exe 파일을 해당 서버의 c:\windows\system32 폴더에 복사 합니다.

C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.1.7600.16385_none_c9392808773cd7da\



다음으로 아래 폴더로 이동하여 cleanmgr.exe.mui 파일을 해당 OS의 설치 언어를 확인하고 c:\windows\system32\(en-us or ja-jp)  OS의 언어에 맞는 폴더에 cleanmgr.exe.mui를 복사합니다. 

C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.1.7600.16385_ja-jp_e89ba9cb6f9dcbc3\

ex) English

 

Ex) Japanese



위 두 파일의 복사가 완료 되면 관리자 권한으로 명령프롬프트를 실행 한 후 cleamgr.exe 명령어를 실행 한 후 삭제가 가능한 Windows update 관련 파일들을 삭제하고 시스템을 재 시작 합니다.



만약 작업을 하려는 서버에 위 두 폴더가 존재 하지 않는다면 아래 hotfix를 설치 후위 방법을 진행 하시면 됩니다. (핫픽스 설치 재 시작 필요..-__-)

Disk Cleanup Wizard addon lets users delete outdated Windows updates on Windows 7 SP1 or Windows Server 2008 R2 SP1
http://support.microsoft.com/kb/2852386

그리고 Windows Server
2012R2의 경우에는 기본적으로 드라이브 등록 정보에 Disk cleanup이 제공 되므로 해당 등록정보에서 Disk Cleanup 클릭 후 Windows update cleanup 체크 하시고 삭제 진행 후 시스템 재 시작하면 됩니다.


만약  Disk Cleanup 이 보이지 않는다면 아래 블로그를 통해서 확인 가능 합니다만 dism 명령어를 이용해서 용량 확보가 가능하니 참고 하시기 바랍니다.
How to: Disk Cleanup in Windows Server 2012 (R2) – DISM
https://www.saotn.org/windows-server-2012-r2-disk-cleanup-dism/

[참고 자료]
Disk Cleanup option on drive’s general properties and cleanmgr.exe is not present in Windows Server 2008 or Windows Server 2008 R2 by default
https://technet.microsoft.com/en-us/library/ff630161(WS.10).aspx


감사합니다.


Comment 0

MSSQL Failover Cluster의 TempDB를 로컬 디스크로 변경 하는 방법

서비스중인  SQL Server 2012R2  Failover Cluster의 TempDB를 로컬 디스크로 변경하는 작업을 위한 가이드를 공유해봅니다.
아래 작업을 진행한 배경은 요기(http://ryuchan.kr/525)서 확인 가능합니다.

[사전 작업]
- 각 노드에 SSD 디스크 추가
- 반드시 사전에 양쪽 노드의 동일 한 위치에 Tempdb가 위치할 폴더를 생성 합니다.
 
[ 작업 절차 ]
SSD 추가 작업이 완료 된 후 각 노드의 동일한 위치에 Tempdb폴더가 생성 되었다는 가정하에..

1. 현재 SQL 소유권을 가지고 있는 Node 확인
-> node2


2. SQL 서버의 소유권을 가지고 있는 서버로 로그온 후 sql management 실행  Tempdb 위치 확인

SELECT name, physical_name AS CurrentLocation 
FROM sys.master_files 
WHERE database_id = DB_ID(N'tempdb'); 
GO

현재 Tempdb는 클러스터 공유 디스크(E 드라이브)에 연결 되어 있음을 확인

3. Alter database 명령어를이용해서 Tempdb 위치 변경

USE master; 
GO 
ALTER DATABASE tempdb  
MODIFY FILE (NAME = tempdev, FILENAME = 'c:\sql\temp\tempdb.mdf'); 
GO 
ALTER DATABASE tempdb  
MODIFY FILE (NAME = templog, FILENAME = ' c:\sql\temp \templog.ldf'); 
GO 

위 커멘드를 실행하면 아래 빨간 네모 박스와 같은 경고메시지가 발생합니다.
tempdb가 클러스터 디스크에서 로컬 디스크로 변경 된다는 경고이므로 참고만 합니다.

4. SQL service 재 시작


5. Tempdb 위치 확인


SQL Failover Test
기존 Node 2에서 Node1로 Failover 가 정상적으로 완료 됨을 확인 할 수 있습니다. 물론 Failback도 잘 되었습니다.

[참고 자료]
Local Tempdb with SQL Server 2012R2 Failover Cluster #1
http://ryuchan.kr/525

Local Tempdb with SQL Server 2012R2 Failover Cluster #2
http://ryuchan.kr/526

Move System Databases
https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases


감사합니다.


Comment 0

Local Tempdb with SQL Server 2012R2 Failove Cluster #2

각 노드에 Failover Cluster가 구성 되었기 때문에 이번에는 해당 노드에 TempDB만 로컬 디스크를 이용하는
SQL Server 2012R2 Failover Cluster를 구성 하는 방법을 소개 합니다.

SQL 설치를 위해서는 해당 노드의 OS(Widows Server 2012R2)에 .NetFrameWork3.5가 설치 되어야 하는데 이게 기능 추가에서
잘 되지 않죠?
dism 명령어를 이용해서 추가 해 보았습니다.

Dism 명령어를 이용한 닷넷프레임워크 설치 방법의 자세한 내용은 예전 포스팅을 참고 부탁 드립니다.(여기)

SQL의 Failover Cluster 구성도 몇 번 공유 한적이 있기 때문에 간략하게 설치 과정을 소개하합니다.

아래 클러스터의 디스클 할당 하는 부분은 현재 TempDB만 로컬 디스크로 설정할 것이기 때문에 살펴 보겠습니다.
SQL 클러스터 구성 중 아래 화면에서 데이터의 디렉터리를 설정 하는 부분에서 TempDB의 디렉터리를 로컬 디스크로 설정합니다.

여기서 주의 할점은 TempDB가 위치할 폴더가 반드시 두 노드의 동일한 위치여야 한다는 것입니다.

TempDB가 로컬 디스크이기 때문에 경고 메시지가 발생 합니다.아래 메시지를 보시면 위에서 얘기한 각 노드에 동일한 위치에 Tempdb가
존재 하야 한다는 설명이 있습니다.

 Yes를 클릭 한 후 다음으로 넘어 갑니다.

TempDB가 로컬 디스크로 지정 되었음에도 첫 번째 노드에서 SQL Failover Cluster가 잘 구성 되었습니다.

이제 두번째 노드에서 SQL Failover Cluster를 설치 합니다.

두번째 노드에서도 문제 없이 설치가 완료 되었습니다.

SQL Failover Cluster 의 구성 완료 후 SQL관리 콘솔을 실행하여 다시 한번 TempdDB의 위치를 확인 해 보았습니다.

아래 그림에서 처럼 TempDB가 로컬 디스크에 위치 됨을 확인 할 수 있습니다.


이 상태에서 SQL Server의 Fail over를 테스트 합니다.


문제 없이 Failover가 진행 되었고 Node2에도 TempDB의 파일이 생성 됨을 확인 할 수 있습니다.


위 가이드는 SQL Failover Cluster를 새로 구성하는 과정에서 TempDB를 로컬 디스크로 할당 한 것이지만
실제 Failover Cluster로 운영 중인 서버에서도 로컬 디스크로의 변경이 잘 되며 다음에 그 방법을 포스팅 하겠습니다.

Move System Databases
https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases

감사합니다.

[참고 자료]


Comment 0

Local Tempdb with SQL Server 2012R2 Failove Cluster #1

서비스 중인 PC 온라인 게임 서버의 DB 성능 이슈로 사용자 랙이 발생한다고 하여 오래 전에 해당 서버를 분석한 적이 있는데
해당 게임의 개발사는 그 게임은 TempDB를 많이 쓰는 구조라며 TempDB를 SSD로 변경해 줄것을 줄곧 요청 하고 있었던 상황이었습니다.

그러나 해당 서버가 Failover Cluster로 구성 되어 있어 SSD로 환경으로 DB 서버를 교체 하기가 매우 난감했었고, 다행히도
서버가 SQL 2012R2 버전이라 아래와 같이 TempDB만  클러스터 노드에 SSD를 추가하여 운영 해 볼 것을 제안 하였습니다.

아래 문서를 보시면 아시겠지만 SQL Server 2012부터는 TempDB가 로컬 디스크여도 Failover Cluster의 구성이 가능 합니다.

SQL Server failover cluster installation supports Local Disk only for installing the tempdb files.
https://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx
Storage Types for Data Files
The supported storage types for data files are:
 • Local Disk
 • Shared Storage
 • SMB File Share

TempDB만 로컬 디스크를 사용하는 SQL Server 2012R2 Failover Cluster를  VMware환경에 구성 한 후 문제 없이 Fail over가 진행 되는 것을

확인 하고 해당 방법을 공유해 봅니다.^^

[환 경]
 - SQL Server 2012R2 Failover Cluster on VMware single host

[구성 방법]

먼저 VMware vCenter에 접속해 MSCS 구성을 위한 VM 디스크를 생성합니다.
VMware에서 제공하는 아래 가이드를 참고 하시기 바랍니다.

Setup for Failover Clustering and Microsoft Cluster Service
https://docs.vmware.com/en/VMware-vSphere/6.0/vsphere-esxi-vcenter-server-601-setup-mscs.pdf

추가로 클러스터 구성 방법은 예전에도 많이 포스팅을 하였기 때문에 아래 가이드에는 많은 부분이 생략 되어 있음을
참고 부탁 드립니다.^^

첫번째 노드에 VMDK 디스크를 할당 하고

두번째 노드에는 첫번재 노드에 할 당한 디스크를 추가 합니다.


위 방법으로 2대의 노드에 SQL FCI 를 위한 디스크를 생성 한 후

각 노드의 디스크 관리자에서 디스크를 확인 한 후 디스크 포맷 및 드라이브 문자를 할당 합니다.

그 후 각 노드에 Failover Cluster 기능을 설치 한 후 유효성 검사를 실시합니다.

유효성 검사에서 Disk와 Network 등에 경고 메시지가 있긴 하지만 클러스터 구성엔 문제가 없기 때문에 아래와 같이
cluster20.local.loca이라는 이름으로 클러스터를 구성 하였습니다.

이제 클러스터가 구성이 되었기 때문에 다음에는 해당 클러스터 위에 SQL Server 2012R를 설치 하고 TemdDB만 로컬 디스크로 할당 하는 방법에 대해서
소개를 하겠습니다.

고맙습니다.



Comment 0

테스트 환경의 시스코 UCS 블레이드에  Windows Sever 2016 를 설치  Hyper-V Role 인스톨 후 최근 릴리즈 된 Window Server 2016 insider preview 16257을 Guest VM 으로 설치하고 해당 VM에 Windows Subsystem for Linux (WSL) 설치 후 Ubuntu를 설치 하는 방법을 정리합니다.
아래 MS 사이트에 설명이 잘 되어 있지만 저의 경우에는 호스트 머신과 Window Server 2016 insider preview  VM이 인터넷이 안되는 환경이라 Hyper-v 호스트 서버에 Window Server 2016 insider preview VM을 설치하고 인터넷이 되는 환경에서 우분투를 다운 받고 해당 파일을 VM으로 복사후 설치 하였으니 참고 부탁 드립니다.
Windows Server 2016 Installation Guide
https://msdn.microsoft.com/commandline/wsl/install-on-server

[Window Server 2016 inside preview 16257버전에 Ubuntu 설치 하기]
1. 먼저 Hyper-v 호스트 서버에 Window Server 2016 inside preview 16257 설치 ISO파일을 다운로드 후 VM을 설치 합니다.
   VM 설치 방법은 워낙 간단하고 많이 알려져 있어서 간단하게 축약합니다.^^

Window Server 2016 inside preview 16257 Datacenter 버전을 선택하고 설치를 완료 합니다.

설치가 완료되면 패스워드 설정 후 해당 머신을 로그온 하여 IP 할당 및  Remote Management 등의 세팅을 완료 합니다.
Configure a Server Core installation of Windows Server 2016 with Sconfig.cmd
https://docs.microsoft.com/en-us/windows-server/get-started/sconfig-on-ws2016

그리고 Powershell을 실행 후 설치 된 VM의 버전을 확인 후

아래와 같은 커멘드로 Windows-subsystem-Linux Feature를 설치 합니다.

 

Windows-subsystem-Linux Feature의 설치가 완료되면 해당 VM은 인터넷이 안되는 환경이기 때문에 인터넷이 가능한 PC나 서버에서
Ubuntu설치 파일을 다운로드 합니다.
Windows Server 2016 Installation Guide
https://msdn.microsoft.com/commandline/wsl/install-on-server
download Ubuntu app
Ubuntu

파워셀로 다운로 예

다운로드 한 Ubuntu설치 파일을 Hyper-v 호스트에 복사 후 해당 파일을 copy-vmfile 명령어를 이용해서 해당 VM으로 복사 합니다

VM에 copy된 Ubuntu 압축 파일을 폴더를 생성 한 후 expand-archive 명령어를 이용해서 압축을 해제 합니다.

압축을 푼 후 해당 폴더로 이동하여 Ubuntu.exe 파일을 실행하여 인스톨을 진행합니다.

인스톨이 완료 되면 root 패스워드를 입력하고 정상 동작 하는지 확인을 합니다.

SSH 커멘트를 이용해서 해당 VM의 gateway인 시스토 스위치에도 접속을 해 보고

Top 커멘드로 메모리 리소스 사용률도 확인하고

lscpu 커멘드로 CPU의 상태와 lsb_release -a 커멘드로 설치 된 우분투의 버전도 확인 해 보았습니다.

WSL의 동작 방식을 공부 좀 하고 포스팅 후
그 다음엔 해당 머신에 Ansible을 설치하고 구성 하고 공유해보겠습니다.

Usng Ansible through Windows 10's Subsystem for Linux
https://www.jeffgeerling.com/blog/2017/using-ansible-through-windows-10s-subsystem-linux

Windows Support
http://docs.ansible.com/ansible/latest/intro_windows.html

감사합니다.

[참고 자료]
Windows Server 2016 Installation Guide
https://msdn.microsoft.com/commandline/wsl/install-on-server


Copy-VMFile
https://technet.microsoft.com/en-us/itpro/powershell/windows/hyper-v/copy-vmfile

Details on How Linux Runs Natively on Windows
https://www.infoq.com/news/2016/04/linux-windows

Windows Subsystem for Linux: Architectural Overview
https://channel9.msdn.com/Blogs/Seth-Juarez/Windows-Subsystem-for-Linux-Architectural-Overview

Comment 0

Cisco UCS Blade 서버에 Windows Server 2016을 설치 해 보았습니다. 상세 그림이 없어서 시스템 구성이  한눈에 와 닿지 않을 수 있지만 외장 스토리지가 연결 되어있고 해당 외장 스토리지에 OS가 설치 되는 구조 입니다.

 

설치와 관련한 자세한 방법은 아래와 같습니다.

[ ]

  • Windows Server 2016 Ent on UCS blade Server

 

[구성 하드웨어]

  • XIO Storage
  • Cisco MDS 9148
  • UCS 관리용 Windows 2008R2
  • Cisco UCS 6410XP Fabric Interconnect
  • Cisco Nexus 5596UP
  • UCS B200 M3 Blade Server

 

[사전 준비 사항]

  • Windows Server 2016 ISO 파일
  • Cisco UCS Virtual Interface Card Drivers (UCS 펌웨어 확인 후 호환 가능한 파일 다운로드)
    시스코
    홈페이지  통해서 다운로드 가능하나 일반 사용자 계정으로는 다운로드 불가
    등록
    파트너사 계정으로 다운로드 가능!!
  • 블레이드 서버에 외장 스토리지의 LUN 할당

[설치 방법]

UCS manager 설치 관리 서버에 접속 UCS Manager 실행 접속

UCS manager에서 서버 Windows Server 2016 설치 UCS 서버를 선택 geneneral => KVM console

콘솔화면에서 Virtual Media탭을 선택하고 아래와 같이 미리 다운로드 받은 Windows 설치 이미지를 삽입 한 후 reset을 클릭 합니다.

Gracefully restart OS를 선택 하고 OK를 누릅니다.

아래와 같은 팝업이 뜨면 OK를 클릭합니다.

아래 그림 처럼 KVM 탭을 클릭하여 서버의 부팅 상태를 확인 합니다.

아래와 같은 부팅 화면에서 키보드의 F6을 눌러 부팅 메뉴로 들어갑니다.

부팅 디바이스 선택 화면에서 Cisco vKVM-Mapped DVD를 선택 합니다.
Windows ISO 를 연결 한 디바이스 입니다.

ISO가 연결 된 가상 DVD를 통해 Windows Server의 부팅 파일이  로딩됨을 확인 합니다. 

Windows Server 2016설치 화면에서 다음을 설치 언어와 국가등을 선택하고 다음을 클릭 합니다.

Install Now를 클릭하여 설치를 진행합니다.

설치를 원하는 OS의 유형을 선택합니다. 저는 GUI가 필요하여 아래와 같이 Desktop Experience를 선택 하였습니다.

Windows Setup 화면에서 Custom을 선택 한 후 다음을 클릭합니다.

일반적인 경우라면 아래화면에서 OS 설치가 가능한 Disk가 확인 되지만 UCS B200 M3 Blade Server  경우 서버 자체
내장 디스크가 없기 때문에 외장 SAN 스토리지가 연결 되어 있고 해당 스토리지를 OS가 인식 할 수 있도록
스토리지를 연결 할 드라이버의 설치가 필요 합니다.

이에 아래 그럼에서 처럼 Load driver를 선택 합니다.

 

미리 다운 받아 놓은 시스코 드라이버 팩을 가상 디스크로 연결 하고 드라이버를 선택 합니다.
어떤 드라이버가 필요 한지는 사전에 미리 확인이 필요하나 UCS 블레이드의 경우 스토리지 연결을 위해서
Fnic이 필요하며 현재 UCS의 펌웨웨 버전에서는 Windows Server 2012R2까지만 호환이 되기 때문에
저의 경우 Windows server 2016을 설치 하기위해서 2012R2 용 드라이버를 선택 하였으니 참고 부탁 드립니다.

아래와 같이 스토리지 연결을 위한 fnic 드라이브를 선택 합니다.

그리고 다음을 누르면 아래 그럼처럼 "Windows can't be installed on~" 메시지가 나타나면 다시 Load Driver를
선택 한 후 KVM 화면에서 Virtual Media탭을 선택 한 후 설치 ISO가 연결 된 드라이브를 선택 합니다.

위 단계에서 스토리지 드라이버의 설치를 위해서 가상 디스크에 ISO의 연결을 해지하고 스토리지 드라이버를
인식 시켰기 때문에 드라이버의 인식이 완료 된 후 다시 OS 설치 파일을 연결 한 것입니다.

Windows Server 2016 ISO파일이 다시 연결 된 후 외장 SAN 스토리지로 OS가 설치 됨을 확인 할 수 있습니다.

OS의 설치가 완료 된 후 해당 서버로 로그온 하여 시스템 정보를 확인 해 보았습니다.

감사합니다.

[참고 자료]
Cisco UCS Virtual Interface Card Drivers Installation Guide

http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/os-install-guides/3-1/b_Cisco_VIC_Drivers_Installation_Guide/b_Cisco_VIC_Drivers_Installation_Guide_chapter_01.html

 

 

Comment 0

조직에서 WSUS를 이용 하고 있다면  WUinstall이라는 툴을 이용하면 Windows update를 좀더 편하게 할 수 있습니다.
해당 프로그램을 작업 스케줄로 등록하여 자동으로 업데이트 파일 다운로드 및 설치, 재 시작이 가능 하며 ,
psexec를 이용한다면
작업 스케줄 등록이 아니더라도 Remote 서버의 업데이트를 관리 서버 한 대에서 일괄적으로 진행 할 수 있습니다.

WUinstall 프로그램은 아래사이트에서 다운로드가 가능 한데 현재 제공하는 버전은 Free Trial 과 구매 버전 밖에 없습니다.
https://wuinstall.com/

최신 Free trial 버전의 경우 일정 기간이 지나면 무료 이용이 불가능 합니다만 구글링을 조금해서 약간 오래 된 
Wuinstall 1.x 버전을 구하신다면 옵션에 제약이 있긴 하지만 기본적으로 업데이트를 search, download, install,reboot 하는 것이
가능 하니 굳이 최신 버전이 필요하지 않다면 조금의 구글링으로 이전 버전을 다운로드 후 테스트 해 보시기 바랍니다.

예전에는 아래 그림 처럼 Free 버전과 Pro버전으로 제공 되었는데 이게  Free Trial 버전과 구매 버전으로 바뀐 것 같습니다.


Wuinstall을 이용해서 Windows update를 작업 스케줄에 등록하여 업데이트의 설치 및 재 시작을 하는 상세 방법은 아래와 같습니다.

먼저 Wuinstall을 다운로드 받아 적당한 곳에 압축을 풉니다. 그럼 아래 그림에서 처럼 Wuinstall.exe 파일과 관련 문서 폴더가 있습니다. 



Wuisntall.exe파일을 적당한 곳에 옮겨 놓고 작업 스케줄 등록을 위한 스크립으를 만듭니다. Wuinsall의 이용 방법은
다운로드 받은 폴더의 docs를 이용하시면 됩니다.

cmd /c c:\tools\wuinstall\WUInstall.exe /install /reboot 10 >> c:\tools\wuinstall\insall.log 2>>&1

위 커멘드를 update.cmd로 저장합니다.

작업 스케줄을 실행하고 작업 스케줄을 실행할 계정과 권한을 적용하고 작업 스케줄 이름을 입력합니다.
만약 로그파일을 로컬이 아닌 원격 서버의 공유 폴더에 저장하고 싶을 경우에는 system 계정이 아닌 별도
계정을 적용하시면 됩니다만 해당 계정이 반드시 작업 스케줄이 실행되는 서버의 local admin 그룹에 포함 되어 있어야
Windows update가 가능 하니 참고 하시기 바랍니다.

Action탭에서 위에서 만든 실행 할 스크립트를 선택후 적용합니다.

스크립트와 작업 스케줄에서 정상 등록하는지 실행을 해 봅니다.
이 부분은 주의가 필요한데 최소 스크립트를 만들 때 위 에서처럼 /install 옵션이 아닌 /search 옵션만
준다면 search만 하므로 테스트가 용이하니 참고 하십시오.

위 스크립트처럼 install까지 테스트가 필요하다면 반드시 테스트 환경에서^^


여튼 위 작업을 실행하게 되면 로그를 통해서를 wuinstall이 /insall과 /reboot 10 옵션으로 실행 된 것을 확인 할 수 
있습니다.

미리 적영 되어 있는 WSUS를 찾아서 자동으로 업데이트를 시작하고 업데이트의 설치가 완료되면 10초 후 시스템을
재 시작 합니다.



테스트가 잘 되었다면 Trigger를 통해서 점검과 같은 특정 시간에 예약 스케줄을 등록하고 업데이트를 진행하시면 됩니다.


참고로 작업 스케줄을 각 서버마다 등록하고 한대의 서버에서 파워셀로 해당 작업을 실행하는 커멘드를 실행하거나
혹은 Psexec를 이용해서 특정 서버에서 원격 서버의 Windowus update도 가능하니 자세한 내용은 메뉴얼을 참고 하시기 바랍니다.

고맙습니다.

[참고자료]
Wuinstall
https://wuinstall.com/

Automatically updating a new windows installation
https://www.experts-exchange.com/articles/6852/Automatically-updating-a-new-windows-installation-scripted.html


Comment 0