리눅스(우분투)에 마인크래프트 버킷 및 서버 (설치)구축! 

linux(ubuntu)에 minecraft bucket 및 server (설치)구축! 


일정시간이 지나면 마인크래프트가 하고 싶어진다. 롤이나 오버워치 등 경쟁하는 게임이 아니어서

아무 생각 없이 하기 좋은 게임이면서, 힐링을 하고 싶어서 해지는 것 같기도 하다.
(스트레스 받는건 다른 겜에 비해 덜하긴 하지만 있긴 함)

그래서 마인크래프트를 하기 위해 서버를 구축하기로 했다!

원래 동아리 서버로 구축을 했는데...이제 쓸 수 없는 상황이다보니 다른 방법을 강구했어야 했다.

예전부터 굴러다니던 라즈베리파이를 사용해서 서버를 구축해보면 어떨까! 라는 생각이 들었고, 실행에 옮겼다.

결과부터 말하자면 라즈베리파이3에 마인크래프트 서버를 올리고 접속까지 가능했으나! 라즈베리파이의 한정된 자원때문에 

원활하게 할 순 없었다. 

만약 라즈베리파이3으로 마인크래프트 서버로 사용하고자한다면 포기하라고 이야기해주고 싶다. 

나중에 짱짱한 리눅스 서버가 생긴다면 다시 구축할 일이 있을거라 생각하여 포스팅한다.
(다른 사람도 구축할 때 필요하다면 쓰시고..)


서버 버전 및 사양, 권장사양

OS : ubuntu 18.04 , 라즈베리파이3 버전(64BIT)
Linux ubuntu 4.15.0-1031-raspi2 #33-Ubuntu SMP PREEMPT Wed Jan 16 09:52:45 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
CPU : Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
RAM : 1GB RAM
LAN : BCM43438 wireless LAN and Bluetooth Low Energy (BLE) on board 100 Base Ethernet
HDD : 16GB 


아래는 마인크래프트 권장사양이라고 한다. 
(이거보고 라즈베리파이3에서 돌릴 생각한거였는데, 어림없었다고 한다)

콘솔기준이며, GUI은 좀 더 많은 자원을 요구한다. 


(소규모)

(중규모~) 



1. 자바 설치 (자바가 설치되어 있으면 스킵)

(sudo) apt-get install default-jdk


2. 자바 확인

java -version

자바 설치하고 확인했는데, 확인이 안된다면 환경변수 설정 필요


3. Screen 설치

(sudo) apt-get install screen

SSH로 서버를 구동했다면 해당 터미널을 종료시키지 못한다.
종료시키면 서버가 꺼져버리기 때문에 screen을 통해서 이 문제를 해결한다.


 4. 폴더 생성

(sudo) mkdir minecraft

마인크래프트를 저장하기 위함이다.

경로는 어디든 딱히 상관없으며 각자 마음에 드는 곳, 이름으로 지정한다.


5. BuildTools.jar 다운로드

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastBuild/

BuildTools.jar

wget을 통해 BuildTools.jar를 다운로드 받는다.
(wget이 없다면 (sudo) apt-get install wget으로 설치가 가능할 것이다. 안되면 다른 블로그 참조하여 설치)


wget을 사용할 수 없다면 윈도우에서 다운을 받아 FTP로 넘기는 방법이 있다.
(FTP로 넘기는 방법은 다른 글에 있으니 참조)


https://hub.spigotmc.org/jenkins/job/BuildTools/ 

링크를 통해서 최신버전을 다운 받는 것을 추천
(wget링크도 위에 맞게 변경 필요)

아래는 설치이후 캡처해서 많아보이는거지, BuildTools.jar만 있으면 된다. 



6. BuildTools.jar 실행

(sudo) java -Xmx1G -jar BuildTools.jar

BuildTools를 다운 받는 경로에서 위의 명령어를 입력해준다.

java로 실행하며, 최대 1GB의 메모리를 이용하여 BuildTools를 실행한다.

메모리는 딱히 큰 영향이 없어 보이므로 그냥 1GB를 설정하고 실행한다.

512mb로 실행하고 싶다면 " java - Xmx512M -jar BuildTools.jar "로 하면 된다.  


7. BuildTools.jar를 통한 1.14.2버전 설치

java -Xmx1G -jar BuildTools.jar --rev 1.14.2

설치하면서 꼬였는데, 아마 6번을 건너뛰고 이 명령어를 치면 될 것 같은데, 일단 내가 했던대로 올림

BuildTools.jar를 통해 1.14.2버전을 설치하겠다는 것이다.

다른 버전을 원하면 1.14.2말고 다른 것을 입력하면 되고, 참고할 사이트는 다음과 같다.
https://www.spigotmc.org/wiki/buildtools/#1-11

실행하면 위와 비슷한 결과를  얻을 수 있을 것이다. 


8. BuildTools.jar를 통해 설치한 minecraft_server.1.14.2.jar 파일 확인

다른 블로그에서는 spigot-1.XX.X.jar 파일이 떨어진다는데, 없어서 헤맸다.

BuildTools.jar이 있는 경로에서 work라는 폴더가 있을 것이다. work폴더로 이동하면 아래와 같이 나올 것이다.
(설치한 뒤라서 여러 파일이 있는데, minecraft_server.1.xx.x.jar만 있으면 된다)

하지만 이것들을 다 지우고 다시 같이 해볼 수 있도록 하겠다.


9. minecraft_server.1.14.2.jar 파일을 이용해서 설치 진행

screen -S Minecraft

아까 설치했던, screen을 사용할 때다. screen을 설치한 이유가 터미널을 종료했을 때도 서버를 살아 있게하기 위해서다.

위의 명령어를 입력하면 새창이 뜰 것이다.


이 후 새창에서 아래의 명령어를 입력한다.

java -Xmx600M -jar mincraft_server.1.14.2.jar


위의 명령어를 치면 다음과 같이 에러를 뿜으면서 멈출 것이다. 잘되어 가고있는 중이니 걱정안해도 된다.
(-Xmx600M은 본인의 컴퓨팅 능력에 따라 설정하면 된다... 600M한건 라즈베리파이가 야캐서요)


그리고 파일을 보면 eula.txt 파일과 server.properties 파일이 생겼다.



10. eula.txt과 server.properties 파일 설정

vim eula.txt

난 vim을 쓰고 있어서 vim을 통해 eula.txt 파일을 열었다. vi나 다른 텍스트편집기로도 가능하다.

그리고 아래와 같이 false -> true로 바꾸고 저장하면 된다. 


다음은 server.properties설정이다.  

vim server.properties

다음은 server.properties에 있는 설정값들인데 익숙할 것이다. 우리가 고쳐야할건 그다지 없다.
(고친건 빨간색으로 표기)

다른 설정들은 자기의 여건에 맞게 수정하면 된다.

broadcast-rcon-to-ops=true
view-distance=10
max-build-height=256
server-ip=192.168.25.36    // 기본 값은 설정되어 있지 않고 서버로 쓸거라서 IP입력 (추후 다시 설명)
level-seed=
rcon.port=25575
gamemode=survival
server-port=25565
allow-nether=true
enable-command-block=false
enable-rcon=false
enable-query=false
op-permission-level=4
prevent-proxy-connections=false
generator-settings=
resource-pack=
level-name=world
rcon.password=
player-idle-timeout=0
motd=A Minecraft Server
query.port=25565
force-gamemode=false
hardcore=false
white-list=false
broadcast-console-to-ops=true
pvp=true
spawn-npcs=true
generate-structures=true
spawn-animals=true
snooper-enabled=true
difficulty=normal        // 기본 값은 eazy, 그냥 노말로 바꾸고 싶었음 (난이도 조절)
network-compression-threshold=256
level-type=default
spawn-monsters=true
max-tick-time=60000
enforce-whitelist=false
use-native-transport=true
max-players=20
resource-pack-sha1=
spawn-protection=16
online-mode=false        // 기본값은 true, true로 설정되어 있으면 정품 사용자만 접근 가능
allow-flight=false
max-world-size=29999984


** 중요 **

server-ip를 설정할 때 신경써야 할 것이 있다.

가. 공유기를 통해 서버를 구동하는 경우
  1) 이 경우 공유기에서 마인크래프트가 있는 서버로 포트 포워딩을 진행해주어야한다.(25565 ->25565)
  2) 마인크래프트 서버는 server-ip에 공유기에 찍히는 공인 IP를 적으면 안되고, 공유기에서 받은 사설 IP주소를 적어야한다.
  3) 같은 공유기 대역대에서 서버에 접근하려면 공인 IP를 쓰면 안되고, 사설 IP 주소를 통해 접속
  4) 같은 공유기 대역이 아닌(테더링, 다른 지역 등)에서 서버에 접근하려면 공인 IP를 통해 접근 (확인필요)
  5) 25565포트에 대한 방화벽 해제 필요

나. 공유기 없이 바로 사용하는 경우(확인필요)
  1) 사설 IP가 아닌 공인 IP를 server-ip에 적어야함
  2) 접속은 공인 IP를 통해 접속
  3) 25565포트에 대한 방화벽 해제 필요


11. minecraft_server.1.14.2.jar 파일을 이용해서 다시 설치 진행

java -Xmx1G -jar minecraft_server.1.14.2.jar

9번에서 했던 것을 다시 진행한다
(다시 말하지만, -Xmx1G는 자신의 환경에 맞게 설정)

그럼 아래와 같이 잘 진행 될 것이다. 


그럼 아래와 같이 Done!이 뜰 것이다.
(라즈베리파이가 야캐서 Can't keep up!이 뜨네요 ㅠㅠ) 



12. 마인크래프트로 접속되는지 확인

아주 잘된다.

라즈베리파이가 좀 더 튼튼했더라면, 이 서버로 마인크래프트를 즐겼겠지만, 서버환경이 너무 열악하여
다음에 기약에해야 겠다


13. 터미널 종료 후 잘돌아가는지 확인

터미널을 종료하고도 서버가 잘 돌아가는지 확인해야한다.

우리는 screen을 통해 새로 생성된 터미널에서 서버를 실행시켰다.  

해당 터미널을 종료해보고 잘 돌아가는 지 확인해보자.

(sudo) ps -elf | grep mine

현재 마인크래프트 서버 프로세스가 올라가 있는지 확인해본다.

아래의 사진을 보면 잘 구동중인 듯 하다. 


(sudo)  top

top명령어를 통해 자원관리를 보아도 잘 돌아가고있다.
(java혼자서 리소스 다잡아먹고 있네 ㅠㅠ 불쌍한 라즈베리파이)

옆에 마인크래프트도 잘 돌아가는 것을 확인 할 수 있다.




끝내면서..

리눅스(linux)환경인 우분투(ubuntu)에서 마인크래프트 1.14.2 버전 서버를 구축했고, 구동까지 완료했다.

다른 블로그를 많이 참조했는데, 설명과 사진이 다르고 뭔가 설명이 와닿지 않았다. 그래서 나름대로 직관적이고 필요하다고

생각하는 부분만 적었고, 설명했다. (내 기준으로 쓴거라 다른 사람이 보면 이게 뭐야?! 할 수도 있겠지만)

다음에 서버를 구축 

라즈베리파이3의 컴퓨팅 파워가 좀 더 강했으면 계속 굴렸을텐데, 아깝다. 다음에 마인크래프트하는 날을 기약하면서

이만 글을 줄이겠다.

수고링~




마인크래프트(MineCraft) 1.14.2 소닉 쉐이더 설치


윈도우 기준

1. 마인크래프트 버전 1.14.2 한번 실행 후 종료


2. 옵티파인 설치시 자바가 깔려 있어야 함

java -version 명령어를 통해 자바 설치 확인 및 비트 확인

32비트로도 구동가능하나 본인 운영체제가 64비트이면 64비트 설치 추천

자바가 안깔려 있다면 아래 링크에서 설치

https://java.com/ko/download/


3. 소닉 쉐이더 설치 전 옵티파인 설치 진행

https://optifine.net/downloads   

위의 링크에 들어가서 Preview version을 클릭하면 아래와 같은 화면이 나옴

1.14.2 버전에 맞는 파일 다운로드 진행

preview_OptiFine_1.14.2_HD_U_F1_pre13.jar

다운로드 후 바로 실행하면되고, 마인크래프트 설치시 기본경로로 되어있다면, 이것도 기본경로로 설치하면 상관없음
(별도 경로 지정시 경로 맞춰줘야 함)




4. 소닉 쉐이더 설치

소닉 쉐이더에는 여러가지 버전이 있음

자신의 컴퓨터에 자신이 있다면 Extreme-Volumetric lighting하면된다.
자신이 없다면 Medium, High 등 적용해보면서 제일 적당한 것으로 선택

Extreme-Volumetric lighting은 엔비디아 RTX 시리즈에 나온 레이트레이싱 기능과 유사하다고 생각됨.
(Medium이나 High 버전은 실행 안시켜봄)

좌 : 일반 마인크래프트, 우 : Extreme-Volumetric lighting 소닉쉐이더 적용


5. 소닉쉐이더 적용

소닉쉐이더를  다운로드 했으면, 

윈도우키+R누르고 %appdata% 실행

.minecraft 폴더에  들어간  후 shaderpacks 폴더를 찾아 다운로드한 파일을 그대로 넣어 주면 됨
(폴더가 없으면 shaderpacks 생성하고 넣으면 됨)
(쉐이더 파일은 압축 풀 필요 없이 그대로 넣으면 됨)


6. 마인크래프트 실행
실행하면 1.14.2-Optifine이 플레이버튼에 추가 되었을테고, 그대로 실행하면됨


7. 마인크래프트 실행 후 적용
마인크래프트에 접속해서 설정 -> 비디오설정 -> 쉐이더 -> 다운받은 소닉쉐이더 적용 
(옵션 설정하면서 본인 컴퓨터에 맞는 설정 값 찾아서 사용)


끝.

추가 정보 : 횃불 들었을 때 주변을 밝게하고 싶으면 옵티파인 설치 후 설정 -> 비디오 설정 -> 동적 조명에서
"빠르게" 또는 "화려하게"로 바꿈




우분투(Ubuntu) 리눅스 SSH 설정 및 연결 방법


라즈베리파이3에 우분투를 올리면서, SSH를 연결하려고 했다. 

근데 피치못할 문제때문에 시간이 좀 잡아먹어서 안까먹을려고 포스팅




apt-getupdate

 (sudo) apt-get update


ssh openssh-server 설치 

apt-get install openssh-server


ssh 클라이언트와 서버를 동시에 설치

 (sudo) apt-get install ssh


방화벽 해제

 (sudo) ufw enable
(sudo) ufw allow 22
(sudo) ufw reload


ssh 서비스 시작

 (sudo) service ssh start



제대로 구동되는지 확인

 (sudo) service ssh status
(sudo) ps -ef | grep sshd
(sudo) netstat -ntlp | grep sshd

* 공유기 포트포워딩 *

필자는 SK 공유기를 사용하고 있고, 공유기 접속 IP는 192.168.25.1

로그인하고 방화벽 -> 포트포워딩탭에서 추가해준다.

외부에서 공유기 접속할때 22번포트로 접속하면 내부IP주소+포트로 포워딩해주는 것이다.





* 공유기 사용할 때 중요 *

만약 공유기를 쓰고 있으면 고려해야 할 것이 하나 더 있다.

같은 공유기내에서 서버, 데스크탑이 있고 데스크탑에서 서버로 SSH 접속하려고 하면

외부 공인 IP주소가 아니라 내부 공유기가 할당한 IP주소를 입력해야 접속이 된다.

(같은 공유기 대역이면 공인IP가 아닌 사설IP로 SSH 접속)


같은 공유기를 사용하고 있지 않다면
(테더링, 다른 장소 등)

원래 접속하던대로 공인 IP로 SSH 붙으면 된다. 








라즈베리파이3 리눅스 OS (우분투) 설치 방법


오랜만의 포스팅


학생때 어쩌다 얻게된 라즈베리파이3이 있었다. 

항상 라즈베리파이3으로 뭔가를 해보고싶다.. 라고 생각만했지 이러저러한 이유로 계속 안하고 있었다.(귀찮아서)

그러다가 라즈베리파이3에 마인크래프트 서버를 올리고, 개인 개발서버로 쓰자! 라고 생각해서 오늘 추진하게 되었다.
(결과적으로 라즈베리파이3에  마인크래프트 서버를 올렸으나, 쾌적한 서버가 아니어서 비추)



라즈베리파이3 OS 종류 및 선택

라즈베리파이3을 쓰기로 마음먹고, 제일 먼저했던 고민은 어떤 운영체제를 사용할 것인가? 였다.

기존에 쓰던 우분투(서버), 우분투(데스크탑), 우분투(마테), 서버용으로 많이쓰는 CentOS, 라즈베리파이 전용 Raspian,
윈도우 10 IoT 등을 고려했다.

결과적으로 우분투18.04(라즈베리파이)버전을 선택했다. 

아무래도 우분투가 익숙하기도 하고, 나중에 여러모로 하기에 편할 것 같아서 선택했다.
(라즈비안, 마테를 고민했으나 역시 오리지널이 제일 자료도 많을거 같으니 선택)


라즈베리파이3 우분투(Ubuntu) 설치


https://www.raspberrypi.org/downloads/
위의 링크를 클릭하면 위의 홈페이지가 나오는데, Ubuntu Server를 선카드 하면 된다.

그럼 아래와 같은 창이 나오고 맨 밑에 Ubuntu server image for Raspberry Pi3을 클릭하면 된다. 


그럼 압축파일을 다운받게 될 것이고, 압축을 풀면 ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img 파일이 떨어진다.

이미지 파일을 구했으니, 이제  microSD카드에다가 구우면 된다.

microSD카드는 그냥 컴퓨터에 연결하기 어렵기때문에 리더기가 필요하다!

기본적으로 라즈베리파이3 세트를 사면 다 포함되어있다. 근데 잃어버려서 다이소가서 2000원짜리 sd카드 리더기를 샀다.

근데 sd카드 리더기가 이상했던지, SD카드를 꼽았는데도 인식이 안됐다.. 그래서 막 쑤셔넣다가.. 이래됐다..

덕분에 다이소 가서 5000원짜리 SD카드리더기와 micro SD카드를 또 샀다!(내돈!!)


(5000원 짜리  SD카드 리더기)


다시 돌아와서, Micro SD카드를 리더기에 꼽는다. 본체에 연결한다. 그리고 도구를 써서 부팅디스크를 만들면 된다.

win32diskimager-1.0.0-install.z01 win32diskimager-1.0.0-install.zip

(URL : https://sourceforge.net/projects/win32diskimager/)

microSD카드에 구울 도구들이다.

도구를 실행하면 위와 같은 프로그램이 시작될 것이다. Image File에는 아까 다운받았던 .img파일을 놓고

Device는 SD카드를 선택하면된다!(다른 것 선택하지 말것)

그리고 하단에 Write를 누르면 끝이다!
(5~10분소요)


완료되면 위와 같이 system-boot이 나오는 것을 확인할 수 있다.

그럼 이제 sd카드 리더기에서 micro SD카드를 꺼내서~ 라즈베리파이에 뾱! 하고 꼽아주면된다!!



(내 라즈베리파이 3)

위 그림 뒤에 micro SD카드 꼽는 곳이 있다.
(라즈베리파이를 케이스에 고정하려고 나사를 꼽아야되는 데 여간 귀찮은게 아니었다)

SD카드를 꼽고, HDMI을 모니터에 연결하고, 파워를 꼽으면 바로 부팅이 된다!  (진짜 바로!)


(바로 실행된다!)

실행되면 끝이다! 

설치시간은 한 10~15분 정도 소요되는 것같았으며, 공유기를 통해 랜선을 꼽았는데, 인터넷도 바로 잡아줬다.

이후 로그인이 나오는데

ID: ubuntu, PWD : ubuntu

로 로그인을 하면된다. 그리고 로그인하게 되면 바로 비번바꾸라고 하니, 바꿔주면 된다.


마지막으로 시간을 동기화하기 위해 date명령어를 입력한다.

아마 UTC기준으로 시간이 찍혀있을 것이고, 한국시간으로 맞춰줘야한다.

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

다시 date를 하면 KST라고 찍힐 것이다. 

그리고 시간이 안맞다면 아래와 같은 명령어로 동기화시켜준다.

(sudo) apt-get install rdate
(sudo) rdate -s time.bora.net


그리고 다시 date 명령어를 통해 시간을 확인한다. 




sd카드 리더기가 고장안나고 뻘짓만 안했으면, 1시간이내에 설치가 가능했을거라 생각한다.

앞으로 라즈베리파이3 서버로 요것저것 만들 예정이다.




 

종류 설명
A형 가입시 선취판매수수료를 받으며, 연간 보수가 낮은 방식
B형 펀드 환매시 후취판매수수료를 받으며, 연간 보수가 낮은 방식
C형 선, 후취 판매수수료를 받지 않으며, 연간 보수가 높은 방식
D형 선,  후취 판매수수료를 받는 방식, A와 B의 절충형
E형 인터넷을 통해 가입이 가능한 온라인 전용 방식
F형 재간접 방식
I형 기관투자자 전용
P형/PRS형 연금전용 펀드
S형 펀드 슈퍼마켓전용 펀드 총수수료가 가장 저렴한 방식
T형 소득공제가 가능한 장기 투자 방식
W형 랩어카운트 형

개인 투자자가 사용하는 방식은 보통 A,  B, C, D, E, P, S형

위의 방식은 2개이상이 복잡적으로 적용할 수 있는데, 
대표적으로 A-E형, C-E형 , C-P형 등이 존재함. 2개이상의 형태가 적용된 것을 각 종류의 특성이 반영이 됨
ex) CPE형 : 연금저축전용이면서 선,후취 판매수수료를 받지 않으며, 인터넷에서만 가입이 가능 함

투자기간에 따라 보편적으로 아래와 같이 가입하는 것이 수수료면에서 이득
(각 펀드마다 수수료 비율이 다르기때문에 확인하여 가입필요)

단기투자는 B, C형(3년이내)
중기투자는 D형(3년~5년)
장기투자는 A형(3년 이상)
+ 인터넷 가입인 e형이 붙으면 더 쌈
+ 연금펀드 목적인 p형이 붙으면 더 쌈

적립형 펀드같은 경우에는 매달 선취 판매수수료를 내야하므로
거치식보다는 조금 더 C형이 유리할 것으로 판단
(장기로 갈수록 A형이 유리한 것은 똑같음)

결론 끝. 추가 설명이 필요 없다면 아래는 안읽어도 됨

KB국민은행 주주가치 펀드

국민은행 펀드의 각 형태별 수수료이다. 3년까지는 C-E가 A-E보다 수수료가 싼것을 알 수 있다. 

 

KB증권 피델리티 비교 

KB증권에서 C-e와 A-e를 비교하면 총보수가 A-e가 더 비싼 것을 알 수 있고,
A-e가 C-e에 비해 수수료가 0.15%싸다. 
계산해보면 선취판매수수료인 0.5%랑 비슷해지는 시점은 3년내외이다. 
만약 해당 펀드를 3년이상 가지고 있을거면 A-e가 낫고, 그 이하면 C-e가 낫다.

http://www.hankookilbo.com/News/Read/201504271572448814

 

'금융' 카테고리의 다른 글

펀드 수수료(클래스) 종류 및 기간별 추천 방식  (0) 2019.04.21

3장 VMware vSphere 가상화 기초 지식


 vSphere 서버 가상화의 핵심적인 기술을 알아볼 예정이다.


vSphere CPU 가상화 동작 개요

vSphere의 하이퍼바이저, 즉 ESXi에서는 다음과 같이 물리적인 CPU를 가상화하여 가상머신에 할당할 수 있다.

특징은 다음과 같다.

첫번째, 물린 서버에 존재하는 복수의 논리 CPU의 부하를 동적으로 로드밸런싱이 가능하다. 
물리 CPU는 소켓 단위로 존재한다. 소켓은 다시 코어로 나누어진다. 일반적인 pc에서는 1개, 즉 1개의 소켓만이 존재한다. 전산센터에서 사용하는 x86 IU서버에는 기본적으로 2개의 소켓이 탑재된다. 소켓은 흔히 코어라고 하는 작은 연산 회로로 나누어진다. 서버용 CPU는 적게는 쿼드코어 ~ 16코어까지 지원하는 제품이 출시되고 있다. 2소켓의 CPU라면 최대 32코어까지 제공할 수 있다. 여기에 코어를 다시 쓰레드로 쪼개는 하이퍼쓰레드까지 지원하면 64쓰레드까지 지원하는 엄청난 리소스가 된다.

이러한 리소스들을 ESXi가 가상 CPU로 할당하게 된다. 각 가상머신은 하ㅣ퍼바이저인 ESXi 서버로부터 가상cpU(vCPU)를 할당받아 동작한다. 이때 여러대의 가상머신에 할당되는 CPU는 결국 물리적인 CPU의 리소스를 사용하게 되는데 여러 대의 가상머신들이 물리적인 CPU 코어를 할당받을 수 있다. 이런 경우 물리적인 CPU, 코어의 리소스를 ESXi 서버가 실시간으로 여러 대의 가상 머신에 동적으로 분배한다. 이것을 CPU 리소스 로드 밸런싱이라고 한다.

두번째, 가상머신이 이용하는 CPU리소스를 동적으로 분배하여 특정 CPU에 부하가 집중되는 것을 방지한다. ESXi서버는 동적으로 물리 CPU와 가상CPU에 대해 모니터링을 실시한다. 이때 부하가 발생하는지 확인한다. 부하가 발생하면 시분할 방식을 통해 프로세스를 처리하여 부하가 집중되는 것을 방지한다.

세번째, 수십 밀리 세컨드 단위로 전체의 CPU를 체크하여 가상머신의 워크로드를 이동한다. ESXi 서버는 물리적인 CPU상태를 체크하면서 여유가 있는 CPU리소스를 확인하고 전체 가상머신에 골고루 할당한다.


vSphere 메모리 가상화 기술 개요

물리적인 서버의 메모리를 가상화로 전환했을 때 효율적으로 운용하기 위해 네 가지의 메모리 가상화 기술을 제공한다. 이를 통해 전체 가상머신의 메모리 총합이 물리적인 서버의 메모리량을 초과하더라도 가상머신의 전원을 구동 가능하도록 하는 메모리 오버커밋 기능을 제공한다.

투명한 페이지 공유 기술과 메모리 벌루닝 기술은 메모리를 효율적으로 관리하기 위한 기술이고, 메모리 압축 기술과 VMKernel 스왑 기술은 시스템을 보호하기 위한 기술이다.

투명한 페이지 공유

게스트 OS의 시스템 영역 등, 가상머신 사이에서 동일한 정적 페이지를 공유하는 기능이다.  여러 대의 가상머신이 하나의 물리적인 서버 위에서 운용될 때 동일한 종류의 가상머신일 경우 같은 페이지를 사용하기도 한다. 가상머신은 메모리를 자기 자신만 사용하고 있다고 착각한다. 하지만 하이퍼바이저 입장에서 본다면 게스트OS의  동일한 페이지가 각 가상머신마다 있기때문에 이런 동일한 가상 페이지를 물리적인 하드웨어의 같은 페이지를 참조하도록 설정한다.


메모리 벌루닝(memory Ballooning)

동작을 멈추고 있는(Idle) 상태의 가상머신이 보유하고 있는 메모리 영역을 회수하여, 다른 가상머신에게 할당해주는 기능이다. 가상머신이 바쁜경우 게스트 OS는 가상머신의 메모리를 일부 점유해서 사용한다. 여러 대의 가상머신이 구동되는 경우에 가상머신의 사용하지 않는 메모리를 모니터링하고 있다가 사용하지 않는 메모리 영역을 회수한다. 이는 다른 가상머신에서 메모리가 모자라 하이퍼바이저에게 요구할 때 발생한다.
하이퍼바이저는 현재 Active하게 동작하고 있지 않는 가상머신에 대해 벌루닝작업을 수행한다. 가상머신의 메모리 공간에 실제 메모리를 전체 사용하는 것 처럼 조작한다. 이는 가상머신에 설치되어 있는 VMware Tool의 Driver를 통해 이루어진다. 명령을 받은 가상머신은 자신의 메모리가 가득 찬 것처럼 착각해 가상머신의 메모리를 Swap Out시킨다. 기존 물리서버는 디스크에 스왑을 했지만 가상머신에서는 메모리로 Swap OUT이 된다. 가상머신에게는 디스크에 Swap Out하는 것처럼 착각하게 만드는 것이다. 이를 통해 가상머신의 메모리를 회수해 Busy한 가상머신에게 할당한다. 이것이 메모리 벌루닝이다. 

메모리 압축

메모리 데이터를 압축해 VMKernel 스왑을 줄이고 퍼포먼스 저하를 방지하는 기능이다.

이 기능은 메모리에 동일한(중복된) 데이터가 있다면 동일한 데이터를 메모리 안에서 압축하는 기능이다 메모리에 동일한 데이터가 있다면 동일한 데이터를 메모리안에서 압축하는 기능이다. 이를 통해 메모리를 절감할 수 있다. 이 기능은 메모리 요구가 발생하고 메모리를 회수할 수 없는 상황이 되었을 경우 발생한다. 가상머신들 중에서도 우선순위가 낮은 가상머신들의 메모리 영역을 압축해서 물리 메모리의 Compression Cache(압축 캐시)에 저장한다. 이를 통해 회수된 영역은 메모리가 모자란 가상머신에 할당된다. 압축된 영역에 물리 메모리상에 압축을 풀면서 접근해야하기때문에 아주 약간의 성능저하가 있을 수 있지만 크게 영향을 주는 정도는 아니다.

VMKernel 스왑

물리메모리가 부족한 경우 VMKernel은 가상머신의 메모리를 디스크의 스왑파일에 swap out한다. VMKernel 스왑은 실제 하이퍼바이저에서 모든 가상머신이 Busy하여 메모리를 실제로 하드디스크로 Swap out할 때 발생하는 혀상이다. 메모리에 있는 내용을 디스크에 Swap out하기때문에 성능에 영향을 미친다. 가능하면 하이퍼바이저는 이런 형태의 Swap out을 방지하기 위해 모든 기능을 총동원한다. 그래도 힘든 경우에 어쩔 수 없이 swap을 발생시켜 디스크로 메모리의 내용을 Swap out한다. 


3.2 스토리지 가상화의 핵심 기술
스토리지의 가상화는 하드웨어 방식과 소프트웨어 방식으로 나눌 수 있다. 하드웨어 방식은 각 스토리지 하드웨어 밴더가 제공한다. 하드웨어 내부에 있는 컨트롤러 등을 통해 이기종 스토리지를 가상화하는 방식이다. 하지만 Vmware 차원에서의 스토리지 가상화에 대해서만 알아볼 수 있도록 하겠다.

RAID 기술 (Redundant Array of Independent Disks)
여러 개의 물리적인 디스크를 하나로 모아서 논리적인 유닛으로 만드는 것을 말함. 이를 통해 하나의 논리적인 드라이브로 만들 수 있다. 이런 RAID에는 다양한 구성 방식이 존재한다. 일반적으로 RAID 0이 많이 쓰이며, 기업에서는 RAID 5,6 등이 사용된다. 고가용성을 위햐서 RAID1 혹은 RAID 0+1같은 변종도 사용한다.

RAID 0(Striping)
데이터를 두 개 이상의 디스크에 똑같이 분할하여 저장한다. 하나의 디스크에 장애가 발생하면 장애가 발생한 부분의 디스크는 복구가 불가능하다. 기업의 중요한 데이터를 저장하기에는 권장되지 않는 방식이다.

RAID 1(Mirroring)
데이터를 2개의 디스크에 동시 저장한다. 한 개의 데이터를 양쪽의 디스크에 동시에 저장해야 하기 때문에 RAID0보다는 성능적인 차원에서 느리다. 하지만 DISK1에서 장애가 발생해도 DISK2에 동일한 데이터가 있기때문에 가용성 부분에서는 안정적이다. 

RAID 1+0
RAID0과 1의 장점을 결합한 형태이다. RAID 1로 미러링한다음 스프라이트 하는 방식이다. 물론 그 만큼의 디스크가 더 필요하게 되지만 기업환경에서는 안정적이며 성능에서도 떨어지지않기때문에 RAID 5,6 과 더불어 많이 사용하는 형태이다. 

RAID 5(Parity)
한동안기업형 스토리지에서 가장 많이 사용하던 방싱이다. 3개 이상의 디스크를 구성한다. 데이터를 RAID0방식으로 저장하지만 중간에 parity형태의 데이터를 동시에 저장한다. parity를 통해 각 블록의 정보를 저장하고 있다가 disk에 장애가 발생하면 나머지 디스크들에서 정보를 얻어서 복구하는 방식이다.  보통 RAID 5는 disk 1개의 분량의 결함까지 보장할 수 있다. 2개 이상의 disk에 동시 장애가 발생하면 나머지 하나의 디스크의 데이터는 보장할 수 없다.

RAID 6(Double Parity)
RAID 5에서 1개의 디스크 장애만 보장했다면 6에서는 2개의 디스크의 장애까지 보장할 수 있다. 즉 Parity 형태의 복구 디스크가 2개가 필요하다. 전체 가용용량은 줄어들지만 최근 엔터프라이즈 스토리지에서는 대세가 되어가고 있다. 


스토리지 연결 방식 - DAS, NAS, SAN

DAS(Direct Attached Storage)
서버와 스토리지가 직접 연결되는 방식이다. 네트워크 상의 다른 서버는 저장된 데이터에 엑세스할 수 없다. 서버와 스토리지는 FC(Fibre Chnnel) Cable로 직접 연결된다.

NAS(Network Attached Storage)
DAS가 직접 연결된 것이라면 NAS는 네트워크로 저장소에 연결하는 방식이다. 여러 컴퓨터가 동일한 저장소 공간을 공유할 수 있다. 하드디스크를 중앙에서 관리할 수 있어서 오버헤드가 적게 걸린다. 구축이 용이하며 상대적으로 저렴하다.

SAN(Storage Area Network)
디스크 어레이(외장 스토리지) 컨트롤러 및 테이프 라이브러리와 같은 컴퓨터 스토리지 디바이스를 서버와 연결하기 위해 설계된 방식이다. 컴퓨터 시스템과 스위치 사이에서 데이터를 전송한다. 스위치는 일반 네트워크 스위치가 아닌 SAN 방식을 지원하는 FC(Fibre Channel) 스위치이다. 흔히 FC 케이블이라는 전용 케이블을 사용하여 서버와 스토리지 그리고 FC스위치를 연결하여 FC 데이터통신을 한다. 고가이며 구축이 까다롭다.


VMware에서 지원하는 전송방식
VMware vSphere는 스토리지 접속을 위한 다양한 프로토콜을 지원하고 있다. 크게 4가지(FC,iSCSI,FCoE,NFS)프로토콜을 통한 전송 방식을 지원한다. 

FC(Fibre Channel)
일반적으로 기업 내부에서 SAN을 구축할 경우 가장 많이 사용하는 통신 방식이다. 흔히 FC SAN이라고 부른다. FC SAN은 서버 및 vSphere의 하이퍼바이저인 ESXi 호스트를 고성능 스토리지에 연결하는 특수한 고속의 네트워크이다. 이 네트워크는 Fibre Channel 프로토콜을 통해 SCSI 트래픽을 가상 시스템에서 FC SAN 장비들로 전송한다.
FC SAN에 연결하기 위해서 호스트에 HBA(Host bus Adapter)라는 장비가 설치되어 있어야한다. FC포트 개수는 정해져 있다. 그래서  FC방식에도 스위치가 있다. 이런 스위치를 통해 서버와 스토리지가 접속되며 DAS 방식이 아니더라도 FC 스위치에서 여러 대의 서버와 스토리지가 FC 프로토콜을 통해 데이터를 주고 받는다. 이러한 형태가 바로 SAN(Storage Area Network)방식이다. 
ESXi 호스트가 Fibre Channel 어댑터(HBA)를 통해 Fibre Channel 스위치와 스토리지 어레이로 구성된 SAN에 연결이 된다. 이렇게 연결됨에 따라 스토리지 어레이(기업용 스토리지)에서 생성된 LUN을 서버에 할당하여 사용할 수 있다. NUN에 엑세스해서 vSphere에서 사용할 데이터스토어를 생성할 수 있다.

*LUN(Logical Unit Number) : SCSI 방식에서 논리적으로 사용되는 고유 식별자 번호이다. 일반적으로 스토리지에서 많이 사용되는 용어로서 호스트, 즉 서버가 외장형 스토리지에 접근하는 단위로 많이 사용 된다. 외장형 스토리지 어레이 장치는 서버에게 LUN단위의 논리 디스크를 제공한다. 실무에서는 RAID를 스토리지 어레이 장치에서 생성하고(RAID 그룹) 이렇게 생성된 RAID 그룹에서 다시 LUN을 생성한다. 이렇게 생성된 LUN을 SAN Switch 등을 통해 호스트에 엑세스 가능하도록 제공한다. 

iSCSI(Internet SCSI)
FC가 별도의 SAN 네트워크를 구축하는 형태였다면 iSCSI는 우리가 일반적으로 사용하는 기존 네트워크를 통해 스토리지를 연결하는 방식이다. iSCSI는 일반적인 RJ45 방식의 네트워크 케이블로 연결한 다음 네트워크 통신을 통해 SCSI 스토리지 트래픽을 TCP/IP 프로토콜로 패키징해서 전송하는 방식이다. iSCSI 연결해서 ESXi 호스트는 네트워크 상에 있는 iSCSI 스토리지 시스템과 통신하는 이니시에이터 역할을 수행한다. 또한 iSCSI 스토리지는 타켓(Target)이라고 부른다. 
ESXi 호스트에서 iSCSI 연결방식은 두가지가 있다. 하드웨어 iSCSI는 ESXi 호스트가 iSCSI 및 네트워크 처리를 오프로드할 수 있는 별도의 어댑터를 통해 스토리지에 연결되는 방식이다. 소프트웨어 iSCSI는 VMKernel에 있는 소프트웨어 기반의 이니시에이터 프로그램을 사용하여 스토리지에 연결한다. vCenter에서 Enable하여 활성화 할 수 있다.

FCoE(Fibre Channerl over Ethernet)
SAN 방식이 FC Cable을 이용해 별도의 SAN 네트워크를 구성하는 방식이었다면, FCoE 방식은 네트워크를 통해 Fibre Channerl 프로토콜을 전송하는 방식이다. 별도의 SAN 네트워크를 위한 장비가 필요하지 않고 고속의 네트워크만 주어진다면 기존 네트워크 라인을 통해서도 SAN 형태의 스토리지를 연결할 수 있는 방식이다. 대부분의 10G 네트워크 라인을 전제로 하며 안정적인 FCoE연결을 위한 별도의 스위치로 연결하는 방식이 대세로 자리잡고 있다.
FCoE는 일반 네트워크를 위한 연결 방식은 두가지가 있다.(iSCI와 동일) 하드웨어 FCoE는 ESXi 호스트가 FCoE 및 네트워크 처리를 오프로드할 수 있는 별도의 어댑터를 통해 스토리지에 연결된다. 소프트웨어 FCoE는 ESXi 호스트가VMKernel에 있는 소프트웨어 기반의 FCoE연결 프로그램을 사용하여 스토리지에 연결한다. vCenter에서 Enable하여 활성화할 수 있다.

NFS(NEtwork File Share)
NAS 방식으로 연결할 경우 NFS 프로토콜을 통해 스토리지에 접속한다. ESXi 호스트는 표준 TCP/IP 네트워크를 통해 원격 파일 서버에 연결하여 가상머신 및 데이터를 저장한다. ESXi 호스트에 NFS 클라이언트가 기본적으로 제공된다. 네트워크 연결이므로 별도의 HBA와 같은 장치가 필요치 않으며 서버에서 제공하는 네트워크 라인을 통해 NAS장비에 접속할 수 있다. 이 구성에서는 VMFS와 같은 데이터스토어를 생성하는 것이 아니라 NFS 영역에 가상머신 및 데이터를 직접 저장한다. 


VMware의 (논리) 스토리지 가상화 방식
ESXi 호스트에서 여러 가지 프로토콜(FC, iSCSI, FCoE, NAS)을 통해 스토리지 어레이의 LUN을 인식한 후에 VMware에서 인식할 수 있는 파일 포맷으로 LUN을 포맷한다. 즉, LIN을 VMware의 파일시스템으로 포맷한다. 이렇게 VMware의 파일시스템으로 포맷된 것을 VMware에서는  데이터스토어라고 한다. 그리고 그 파일 시스템을 VMFS(Virtual Machine File System)이라고 한다. VMFS는 퍼포먼스 중심의 VMware 전용 클러스터 파일 시스템이다. 이 VMFS 파일시스템으로 포맷된 데이터 스토어에 가상머신 즉, Virtual Machine이 저장된다.
VMware는 각 ESXi 호스트를 여러대로 묶는 클러스터링을 구성할 수 있다. 클러스터링 구성을 통해 여러 대의 ESXi 호스트가 동일한 스토리지 볼륨(LUN)에 엑세스할 수 있다. 이는 ESXi에서 배타적인 lock 관리가 가능하기때문이다. 일반적인 OS는 동시에 동일한 스토리지 볼륨을 볼 수 있는 베타적인lock 관리가 불가능하다. 하지만 Vmware에서는 베타적인 lock 관리 솔루션이 내장되어 있으므로 별도 솔루션의 도움 없이 ESXi 호스트가 동시에 여러 개의 스토리지 볼륨을 액세스하도록 제어할 수 있다. 이 경우 가상머신에서 발행하는 SCSI커맨드는 물리 스토리지에 직접 발행하게 된다. 
VMware에서 제공하는 가상 디스크 방식에는 VMDK와 RDM 방식이 있다. VMDK는 VMware에서 제공하는 전형적인 가상 디스크이다. VMFS안에 파일 형태로 직접 저장된다.
이에 반해 RDM은 가상머신이 실제 LUN에 엑세스해야 할 필요가 있을 경우 사용하다. 이떄 RDM은 가상머신과 물리 LUN을 연결하는 주소, 즉 포인터라고 생각하면 된다. RDM은 다시 물리 RDM 방식과 가상 RDM방식으로 나누어진다. 


네트워크 가상화의 핵심 기술

1. 가상머신 : 가상 네트워크 디바이스를 통해서 액세스를 요구한다.

2. 가상NIC : VMKernel과 가상머신 사이에 위치하여 네트워크 패킷을 전송하거나 수신하는 부분을 담당합니다. 가상 NIC은 IP 및 MAC 주소를 가질 수 있다.

3. 가상 스위치 : vSphere 가상 네트워크 환경에서 핵심적인 역할을 수행하는 부분이다. 네트워크 I/O의 에뮬레이션을 담당한다.  가상머신 및 VMKernel용의 포트 그룹을 설정한다. vSphere에서의 가상 스위치는 표준 가상 스위치와 분산 가상 스위치, 두가지 형태가 존재한다. 역할과 기능이 각 스위치별로 차이가 있다.

포트그룹 : vSphere에서 중요한 개념이다. 포트 그룹은 VMKerenel이나 VM들에 특화된 서비스를 제공하는 가상 스위치의 논리적인 그룹이다. 가상 스위치는 하나의 VMKernel 포트나 가상머신 포트 그룹을 가질 수 있다.

VMKernel 포트 그룹 : 하이퍼바이저 관리 트래픽, vMotion, HA, FT, iSCSI 스토리지 연결, VSAN, NAS연결 등의 다양한 구성을 만드는 특화된 포트 그룹이다. vSphere가 가진 특화된 기능들을 구성하기 위해서는 반드시 VMKernel 포트 그룹을 통해 별도의 트래픽을 전송하도록 구성해야한다.

VM 포트 그룹 : VM들이 동일한 포트 그룹이나 물리 네트워크에 구성된 다른 가상머신에 접근할 수 있게 해주는 가상 스위치 안의 포트 그룹이다. 

4. 물리 NIC : vSphere 가상화 환경에서 물리 NIC는 어떤 역할도 수행하지 않는다. 가상 환경이 아닌 일반적인 구성에서는 물리 NIC에 IP 및 MAC주소가 할당되지만 가상 환경에서는 IP 및 MAC을 가지지 않는다. IP 및 MAC주소는 가상머신의 가상 NIC에 할당 된다.

5. 물리 스위치 : 물리 네트워크 환경을 제공하는 스위치 장비. 고객이 보유한 스위치 장비라고 보면 된다. ESXi 서버는 네트워크 라인을 통해 고객의 네트워크 스위치 장비에 연결된다. 만약 물리적인 스위치에 VLAN 구성이 되어있다면 vSphere 가상 네트워크 환경에서도 VLAN 설정을 해주어야 한다. 


vSphere 가상 네트워크 스위치의 특징

vSphere에서 제공하는 가상 네트워크 스위치는 물리 스위치와는 구별되는 특징을 가지고 있다. 

1. 물리 NIC은 IP Address를 가지지 않는다.
  통신에 필요한 IP와 MAC은 가상머신이 가지고 있다.

2. 가상 스위치는 Path-Through의 역할을 수행
  가상 스위치는 네트워크 패킷을 통과시키는 PAth-Through의 역할을 수행하는 Edge 스위치라고 생각하면 된다. 물리 NIC을 통해 내부로 들어온 네트워크 패킷은 가상 스위치를 통해 가상머신에 전달된다. 이때 가상 스위치와 물리 스위치는 물리NIC라는 케이블로 연결되어 있다고 생각하면 편하다. 스위치이므로 VLAN 설정도 가능하며 Ling Aggregation설정도 가능하다.
하지만 물리적 스위치와 비교하여 가상 스위치엔느 다음과 같은 차이점이 있다.

1) Telent과 같은 접속을 통해 가상 스위치를 조작할 수 없다. 즉, 커맨드를 통해 관리하는 형태가 아닌 vCenter의 GUI를 통한 조작만 가능하다.
2) 내부적으로 생성하는 가상 스위치들은 서로 연결될 일이 없기 때문에 루프 현상에 빠질 일이 없다. 이때문에 가상 스위치 환경에서는 복잡하게 STP를 위한 설정을 할 필요가 없다.
3) 연결되어 있는 VM의 MAC주소를 이미 알고 있기때문에 MAC주소를 학습할 필요가 없다.


가상화 환경에서 VLAN을 설정하는 방법

가상화 환경에서 VLAN은 중요한 역할을 수행한다. VLAN은 Virtual LAN, 즉 논리적인 가상의 LAN환경을 구성할 수 있따. 트래픽이 동일한 물리 VLAN 세그먼트나 동일한 물리 스위치를 공유하면서 트래픽을 효율적으로 분리하며, 브로드캐스트를 나누어주는 역할을 한다. 또한, 특정 VLAN에 속하는 트래픽 구별을 위해 태킹을 지원하기 위해 IEEE 802.lq표준을 지원한다. 

++++

그림추가

++++

1. 가상 스위치의 배치
가상 스위치를 어떻게 생성할 것인지 결정해야한다. 목적별 트래픽을 분산할 수 있기 때문에 하나의 가상 스위치보다는 여러 개의 목적별 가상 스위치를 만들어서 적용하는 것이 좋다. 하지만 이렇게 가상 스위치를 나누기 위해서는 물리 NIC의 개수가 많아야 한다. 

2. NIC 티밍의 설정
NIC 티밍은 하나의 그룹으로 묶는다는 뜻이다. 네트워크의 로드밸런싱이나 Active-Standby 구성을 할 경우 사용한다. NIC 티밍은 ESXi 호스트 차원에서 수행하는 경우와 가상머신 차원에서 수행하는 경우가 있다. ESXi 호스트 차원에서 수행하는 티밍은 관리 포트라던지 HA,FT등의 트래픽에 대한 로드 밸런싱 혹은 ActiveStandby 구성이다. 이는 가상 스위치에서 구성할 수 있습니다. 또 하나의 티밍은 가상머신 차원에서의 NIC 티밍이며 이는 게스트 OS안에서 수행한다.  게스트 OS안에서도 티밍 설정을 해야하는 경우가 있다.


물리 스위치와의 접속시 고려사항
1. VLAN 구성 여부. 가상머신들을 별도의 네트워크로 구분해야 한다면 VLAN 구성을 염두에 두어야한다. 이를 위해서는 기업의 네트워크 담당자들과 VLAN 구성에 대해 사전에 미리 협의해야한다. 
2. Ling Aggregation 구성. 부족한 네트워크 트래픽을 보완하기 위해 여러 개의 네트워크 라인을 묶어서 하나의 라인처럼 제공하는 것을 Link Aggregation이라고 부름. Link Aggregation 구성 시에도 네트워크 담당자들과 어떤 식으로 구성할지 논의해야 한다. 


vSphere 분산 스위치의 특징
vSphere는 기본이 클러스터 환경이다. 클러스터 환경에서는 2대 이상, 1000대나 10000대까지 ESXi호스트를 구성할 수 있다. 1000대를 일일이 구현하려면 많은 번거로움이 있다. 이러한 번거로움을 줄이기위해 vSphere에서 제공하는 Host Profile이라는 기능을 사용한다면 동일한 ESXi 서버에 동일한 Profile을 적용하여 같은 네트워크 구성을 자동으로 맞춰줄 수도 있다. 하지만 이것도 역시 번거로운 방법이다.
이렇게 ESXi 호스트마다 표준 스위치 설정을 하는 것은 상당히 번거로운 작업이다. 특히 호스트가 4대 이상을 넘어가면 가상 네트워크 설정이 변경될 때마다 다른 호스트에도 동일한 설정을 해야하기때문에 상당한 시간이 소요 된다.
그래서 VMware에서는 여러 대의 ESXi호스트를 동일하게 관리하기 위해 분산 스위치를 만들었다. 분산 스위치는 vCenter에서 여러 대의 ESXi 호스트의 표준 스위치를 통합하여 하나의 거대한 스위치로 만드는 기능이다. 각 호스트의 표준 스위치들이 모여서 하나의 분산 스위치가 되는 것이다.

++++++++==

사진2

++++++++

가상 네트워크 인프라(NSX)
NSX는 SDDC를 구성하는 VMware의 전략중에 SDN(SoftWare Defined Network) 전략을 구현해주는 솔루션이다. 네트워크 가상화를 구현해주는 솔루션. 네트워크 가상화는 실제 네트워크 장비들을 가상화로 구현하는 것이다. 라우터, 방화벽, 스위치같은 네트워크 장비들을 가상화 형태로 제공해주겠다는 것이다.
NSX는 네트워크를 구성하는 여러 계층의 서비스를 가상화 형태로 제공한다. 이를 통해 네트워크 운영 방식을 자동화 할 수 있고 다양한 기능을 애플리케이션이나 플랫폼 상에서 제공할 수 있다.

NSX의 주요 기능

1. 보안
마이크로 세분화라는 기능으로 가상머신 애플리케이션마다 세분화된 보안 정책을 적용할 수 있는 기능이다. 이를 통해 위협 요소를 상호 격리함으로써 데이터센터에서 더 나은 보안 모델을 제공한다.

2. 가상 네트워크 자동화 프로비저닝
하드웨어에 비해 가상 네트워크의 생성, 저장, 삭제 및 복원이 쉽기 때문에 가상 네트워크를 자동화할 수 있으며 탄력적이고 경제적인 데이터센터 운영이 가능하다. 하드웨어로는 며칠 혹은 몇 주나 걸리는 작업들이 가상 네트워크를 통하면 몇 분이내로 단축한다. 네트워크 장비들의 연결을 데이터센터 내부에 들어가서 일일이 수작업으로 처리하지 않아도 된다. 클릭 몇번이면 모든 장비들을 연결할 수 있기때문이다. 

3. 네트워크 하드웨어의 소프트웨어화
네트워크 장비가 소프트웨어가 되기 때문에 더이상 기존 애플리케이션 인프라의 확장 및 수정에 많은 시간 및 장비를 투입할 필요가 없다. 새로운 비즈니스 상황에 맞게 애플리케이션을 개발, 테스트, 구축하는 시간을 몇 분만에 구현이 가능하다.



2장 VMware vSphere 개요


VMware가 vSphere라는 이름을 붙이기 시작한것은 버전4때부터이다. 그 이전에는 VI3으로 판매되었다.

vSphere로 이름을 바꾸면서 vSphere를 클라우드 기반을 만드는 클라우드 OS라 정의하였고 이는 현재까지 이어져오고 있다.

vSphere6으로와서 호스트 메모리는 12TB까지 지원하며 CPU는 480개 클러스터 구성시 호스트는 64개까지 지원하고 있다.

또한 하나의 VM에서 지원하는 vCPU는 128개까지이며, VM당 최대 지원 가능한 메모리는 4TB이다. 


VMware vSphere 제품 패키지 종류

vSphere 6제품을 기준으로

클라우드를 지원하기 위해 가장 기본이 되는 제품(Compute, Networking, Storage)이 바로 vSphere이다.

vSphere 6은 기본적으로 3가지 에디션을 제공하고 있다. Standard, Enterprise, Enterprise Plus

vSphere 6은 CPU 단위로 라이센스를 책정하고 있다. EXSI가 탑재될 물리적인 서버의 CPU가 몇개냐에 다라 라이센스 가격이 달라진다. vCenter 또한 별도의 라이센스가 필요하다.

분산 스위치, 네트워크I/O 컨트롤 및 스토리지 I/O 컨트롤과 같은 고급 기능을 사용하려면 Enterpirse Plus 에디션

DRS 및 DPm 기능까지만 사용하려면 Enterprise 에디션

기본적인 기능만 필요하면 Standard 에디션

소규모 SB기업의 경우 Essential 에디션Essential 에디션은 ESXi호스트를 3대까지만 확장할 수 있는 소규모 기업형 제품

기업형으로 사용하기 위해서는 최소 Essential Plus제품을 구매해야한다. 기본적인 vMotion, Storage vmotion, VMware HA의 최소한의 필수 기능을 사용할 수 있다.


VMware가 제시하는 가상화 인프라의 미래 SDDC(Softeware Defined DataCenter) 

정의 : 데이터센터의 모든 인프라스트럭쳐가 가상화되고 서비스로 제공되며, 데이터센터 전체를 소프트웨어로 구성하여 자동으로 제어 관리할 수 있는 데이터 센터 

SDDC의 요소

Compute 

Cpmpute 요소는 현재 우리가 배우고 있는 vSphere기반의 컴퓨팅 가상화이다. CPU, Memory, Disk 등이 컴퓨팅 가상화의 대상이다. 이런 CPU 가상화 부분은 서버 활용 극대화 및 유연한 운영을 위해 필요하다. 서버는 더이상 하드웨어적으로 존재하는 것이 아닌 가상화의 일부 요소가 된다. 서버들은 거대한 가상화 자원 풀로서의 역할을 수행하며 이를 통해 어플리케이션은 하드웨어에 종속되지 않고 단위 서비스화할 수 있다.

Networking 요소

가상으로 구축 가능한 네트워크 요소들이다. 즉, 네트워크 서비스 및 장비에 대한 자동화 부분이다. 기존에 하드웨어 장비로 존재하던 스위치, 라우터, 방화벽 등이 가상화로 전환된다. 

Storage 요소

가상으로 구축 가능한 스토리지 구성요소이다. 더이상 기존에 구축하던 외장형의 스토리지 장비가 필요없어지게 된다. 모든 구성요소들은 서버의 로컬 내장 디스크인 HDD와 SSD로 구현된다. 기존 스토리지 장비 또한 가상화의 한 요소로 전체적으로 관리된다. 기존 하드웨어 중심의 스토리지 관리에서 VM중심의 스토리지 관리로 이동하는 것이다. 모든 스토리지 개체는 정책 기반으로 관리되며 용량, 가용성, 성능에 따라 자동으로 할당 및 프로비저닝이 된다.

Management 요소

자동화 정책에 기반한 클라우드 매니지먼트 요소이다. 서버, 스토리지, 네트워크의 각 구성 요소가 가상화되고 이를 Private Cloud 형태로 구축하고 Public Cloud와 Hybrid Cloud를 연결하는 전체적인 매니지먼트가 완성된다. management 솔루션을 통해 일관된 거버넌스 프레임 워크를 제공하고 모든 서비스에 대한 주문형 엑세스가 가능해진다.


*가상화가 나오기 전에는 서버,스토리지, 네트워크와 DB와 같은 솔루션이 결합된 제품을 어플라이언스라고 했다. 하지만 가상화 및 클라우드 시대로 접어들면서 이런 용어가 컨버지드라는 형태로 변화했다. 컨버지드 인프라는 융합된 제품이라는 의미로 보면 된다.  서버, 네트워크, 스토리지 및 가상화, 가상화 매니지먼트 솔루션이 별도로 존재하지 않고 유기적으로 연결되어 제공되는 형태를 컨버지드 인프라라고 한다. 이 경우 서버, 네트워크, 스토리지 및 가상화, 가상화 매니지먼트 솔루션을 별도로 설치하지 않아도 되고 이미 사전에 통합 설치되어 고객에게 제공되기 때문에 사전 설치 비용 및 운영 비용이 절감되는 효과를 누릴 수 있다.

1장 x86 가상화를 이해하기 위한 기초지식


x86 가상화란?

가상화는 매우 오래된 기술이다. 1960년대부터 시작된 IBM의 메인프레이부터 가상화 기술은 탑재되어 왔다. 이후 유닉스 시스템을 거쳐 현재는 우리가 일반적으로 알고 있는 인텔 및 AMD cpu가 탑재된 x86 서버 및 데스크톱에도 가상화가 탑재 되었습니다. 기업의 데이터센터에서만 사용되던 기술이 이제는 일반 사용자까지 내려오게 되었다.

이제 x8가상화는 메인프레임과 유닉스를 넘어서 절대강자의 대중화된 기술이 되었다. 우리가 요즘 매일 듣는 클라우드 컴퓨팅기술은 바로 이 x86가상화를 기반으로 이루어지고 있다. 아마존 웹서비스, MS 애저, 구글 클라우드 등 현존하는 클라우드 컴퓨팅이라고 하는 것들은 대부분 x86 가상화기반이라고 생각하면 된다.

x86가상화는 x86기반의 게스트 운영체제(윈도우,리눅스)가 하이퍼바이저라고 하는 가상화 레이어 위에서 구동하는 방식이다.

x86아키텍처는 CISC(Complex Instruction Set Computer)기반인데 CISC란 소프트웨어 특히, 컴파일러 작성을 쉽게 하기 위해 하드웨어화할 수 있는 것들은 가능한 모두 하드웨어에게 맡긴다는 원칙 아래 설계된 컴퓨터이다.

우리가 알고 있는 대중화된 Intel CPU 혹은 AMD가 장착된 PC는 모두 x86계열이다.


x86 가상화 제품 종류

VMware의 vSphere

Citrix의 XenServer

Microsoft사의 Hyper-V

Linux기반의 KVM


**x86가상화 제품들은 유닉스 서버를 지원하지 않는다. CISC와 RISC 칩의 설계 방식이 다르기 때문에.


서버가상화란?

한대의 물리적인 서버에 여러 대의 논리적인 가상머신을 작동시키는 것이다. 각 가상머신에는 OS가 설치된다.(Guest OS). 게스트 OS는 각기 독자적으로 운영되면 어플리케이션도 독립해서 설치할 수 있다. 각 Vm은 완전히 독립되어 있으며 서로 직접적인 영향을 미치지 않는다. 이러한 가상머신들은 물리적인 서버에 설치된 하이퍼바이저(가상머신모니터(VMM)라고도 부름)에 의해 관리된다.


서버가상화의 특징


격리

가상머신을 물리 하드웨어로부터 완전히 분리할 수 있다. 기존 전통적인 방식에서는 물리 서버에 OS를 직접 설치하는 방식이었기 때문에 물리 서버와 OS를 분리할 수 없었다. 물리 서버와의 구속력이 아주 타이트했다. 하지만 가상머신은 물리 서버와 OS사이에서 가상머신이라는 논리적인 형태를 생성함으로써 물리 서버와 OS를 쉽게 분리할 수 있다.

캡슐화

물리적인 서버는 하나의 알약과 비슷하다. 그 알약에 들어 있는 수많은 캡슐이 가상머신이라고 생각하면 된다. 하나의 알약안에 여러 개의 캡슐이 존재하는 형태라고 보면 된다. 하나의 캡슐은 각기 고유한 역할을 수행하지만 다른 캡술과 분명히 다르다.

하드웨어 비의존성

가상머신은 캡슐화와 격리에 의해 더이상 물리적인 서버에 종족되지 않는다. 논리적인 서버인 가상머신으로 구성되기때문에 논리적인 레벨에서 관리가 된다. 심지어 서로 다른 물리적인 서버의 경계를 넘어 이동할 수 있다.


서버 가상화의 장점

서버 리소스를 공유하여 비용 절감 가능

기존의 x86서버는 실제 물리 서버의 평균 10~15퍼센트의 리소스만을 사용한다. 서버 가상화를 활용하면서 사용율이 낮은 서버들을 한 대의 가상화 서버로 통합할 수 있다. 한대의 물리적인 서버에 여러 대의 가상 서버를 동시에 운용할 수 있으므로, 기존에 한 대의 서버에 들어가던 전력 비용, 통신비용으로 다수의 서버를 운용할 수 있어서 비용 절감 효과를 누릴 수 있다.

유지보수의 편의성 증대

기존 물리적인 서버의 경우 서버와 OS의 의존도가 높기 때문에 서벙 ㅔ유지보수 및 장애가 발생하면 서버의 전원을 차단해야 하므로 OS의 가동이 중지된다. 하지만 서버 가상화를 운영한다면, 그리고 서버 가상화 클러스터가 구축되어 있다면 가상머신을 다른 서버로 이동한 다음 장애가 발생한 물리 서버를 손쉽게 조치할 수 있다.

시스템 가용성 증대

물리적인 서버에 장애가 발생하면 동작하던 OS의 가용성이 떨어진다. 이때 클러스터로 궝된 가상머신 팜은 장애가 발생한 서버 위에서 동작하는 가상머신들을 다른 쪽으로 자동으로 이동시킨다. 이런 기능을 이용해 관리의 개입이 없더라도 가상머신의 가용성을 보장할 수 있다.


하이퍼바이저란?

하이퍼바이저를 그대로 번역하면 '무언가를 뛰어넘는 가리개 막' 정도로 해석할 수 있다. 위키에서는 하이퍼바이저를 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행시키기 위한 논리적 플랫폼을 말한다. 가상화 머신 모니터라고 정의하고 있다.

하이퍼바이저를 이야기할 때 빠지지 않는 용어가 베어메탈이다. 베어메탈은 말 그대로 '헐벗은 금속'이란 의미이다. 의역하자면 빈 깡통이다. 빈 깡통이니까 OS가 설치되기 전의 서버라고 생각하면 된다. 예전엔 이 서버에 OS를 직접 설치했다. 윈도우 서버, 리눅스 서버 등 서버에 직접 설치했다. 그러나 일반적인 랙 서버에 탑재되는 범용 OS들의 활용률은 낮았다. x86서버가 유닉스 서버 대비 중요도가 덜한 서비스에 사용되니 OS의 사용률이 평균 10%가 넘어서는 일이 없었다.

데이터센터의 랙 서버는 늘어나는데 비효율적으로 사용되는 현상이 많아 진덧이다. 이런 상황에서 x86 가상화가 나왔고 x86 가상화를 구현하는 핵심이 바로 하이퍼바이저이다. 하이퍼바이저는 기존 서버와 OS의 관계를 허무는 역할을 했다. 서버라는 하드웨어에 얇은 막을 하나 설치하고 그 막을 통해 물리적인 서버를 통제한다. 그리고 그 위에 여러 개의 OS가 동작할 수 있는 가상머신을 만들 수 있는 바탕을 이루는 역할을 했다.


하이퍼바이저의 종류

bare-metal 방식

서버에 하이퍼바이저 제품을 직접 설치하는 방식이다. Vmware의 ESXi server, Citrix의 XenServer, MS의 Hyper-V 서버 등이 베어메탈 방식의 하이퍼바이저다. OS처럼 설치하는 가상화 제품이라고 생각하면 된다. 설치 CD가 제공되고 OS 설치하듯이 진행하면 된다.

대부분의 IT데이터센터에서는 이러한 방식으로 x86 가상화를 구축하고 있다.

호스티드 방식(Hosted)방식

기존에 설치된 OS 위에 응용 어플리케이션으로 가상화 제품을 설치하고 그 위에 또다시 가상머신을 만들어서 운영하는 방식이다.Vmware의 VMware Workstation Pro, VMware Player Pro, Oracle의 Virtual Box등이 대표적인 프로그램이다.

 이러한 방식은 IT데이터센터에서는 사용되지 않는 방식이며 개인용 개발 및 테스트를 할 경우에 사용되고 있다. 


x86 가상화 아키텍쳐 구현 방식

하이퍼바이저를 이해하기 위해서는 운영체제의 유저 모드와 커널 모드를 이해해야한다.

가상화와 연관된 유저 모드와 커널 모드를 이해하기 위해서는 x86 CPU의 Protection Ring 모드를 이해해야한다. 유저모드와 커널모드가 Ring 모드의 전환과 밀접한 연관관계가 있기 때문이다.

베어메탈에 윈도우OS, 리눅스 OS를 설치하면 하드웨어-운영체제라는 2개의 층이 형성된다. OS가 설치되면 하드웨어의 주소를 직접 다루는 부분과 어플리케이션을 다루는 부분이 분리된다. OS에서 하드웨어를 직접 핸들링할 경우에 다루는 모드를 커널모드라고 부른다. 일반적 사용자 측면인 어플리케이션 측면에서 핸들링하는 부분을 유저모드라고 부른다. 커널모드는 사용자가 알 필요가 없다. OS에서 디바이스 제어하는 경우에 주로 커널 모드가 동작한다.

가상화를 도입하게 되면 이부분에서 문제가 발생한다. 물리 서버에서 하나의 OS가 아닌 여러 개의 OS가 물리적인 하드웨어를 동시에 컨트롤해야한다. 만약 여러대의 OS가 같은 하드웨어 주소를 참조하여 핸들링한다고 하면 문제가 발생한다. 이런 문제를 막기위해 하이퍼바이저가 중간에서 중재역할을 해야한다.

이 중재역할을 어떻게 구현할 것인가? 처음에는 하이퍼바이저가 모든 OS의 커널 모드 콜을 중간에서 받아 에뮬레이션으로 처리했다. 하드웨어적인 도움을 받지 못하고 소프트웨어로 처리하려고 하니 전체적인 성능저하가 있었다. 하지만 현재는 CPU를 제조하는 업체에서 이 부분을 하드웨어적으로 지원하게 되었다. 그래서 만들어진 기능이 Intel-VT와 AMD-V이다. 

전통적인 방식에서는 RIng0이 OS의 커널모드와 대응하고 Ring3이 유저모드와 대응된다. OS가 어플리케이션에 대한 명령어를 날리면 Ring3이 동작하고 커널모드에 대한 명령이 오면 ring0이 대응한다. 

Intel VT-x 및 AMD-V 환경에서는 이 Inter VT-x 및 AMD-V를 ring -1으로 설정하고 기존의 ring 0을 게스트 운영체제로, Ring 3을 어플리케이션으로 만들었다. 이렇게 만들어서 기존과 동일하게 하드웨어를 호출하고 어플리케이션 콜을 호출할 수 있도록 하였다. 이 것을 Root모드라고 부른다.

 



APT 공격을 이용한 침해사고 실습 -3-

가상머신을 이용하여 외부망, 방화벽, 내부망을 설정하고 APT 공격을 통하여 외부망에서 내부망에 접근할 수 있도록하며, 
내부 DB서버를 공격하여 값을 빼내는 실습을 진행해볼 것이다.

들어가기전에 간단하게 가상머신의 환경 구조를 보겠다.

                                       

                  <일반적인 가상환경>                                                    <Vmware vSphere등 기업에서 사용하는 것>

이러한 환경 구조를 가지며, 일반적으로 기업에서 사용하는 것이 더 빠르다.


APT 공격을 위한 구성도는 다음과 같다.


+ Recent posts