가상화(Virtualization)는 컴퓨터에서 컴퓨터, 리소스의 추상화를 일컫는 광범위한 용어이다 ‘물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술’로 정의할 수 있다 이것은 다중 논리 리소스로서의 기능을 하는 것처럼 보이는 서버, 운영 체제, 응용 프로그램, 또는 저장 장치와 같은 하나의 단일 물리 리소스를 만들어 내거나 단일 논리 리소스처럼 보이는 저장 장치나 서버와 같은 여러 개의 물리적 리소스를 만들어 낼 수 있다 이러한 개념을 가상화라 하며, 가상화의 개념이 적용된 체계를 가상화 시스템이라고 부른다 일반적으로 서버, 스토리지, 네트워크와 같은 전통적인 단위 하드웨어 자원에 많이 적용되어왔다 현재는 하드웨어 차원의 IT 리소스에만 한정되지 않고 애플리케이션, 미들웨어, 분산시스템 및 가상화 자원들 자체를 포함하여 비실체적인 자원들에 대해서도 적용 되고 있다 물리적 자원을 Sharing, Aggregation, Emulation, Insulation 하여 가상자원으로써 사용할 수 있다.
1) 공유(Sharing) :
가장 대표적인 가상화의 기능으로서 다수의 많은 가상자원들이 하나의 동일한 물리적자원과 연결되어있거나 가리키는것을 말한다. 물리적 자원의 일부분을 가상화 된 자원마다 할당하거나 혹은 물리적 자원에 대하여 타임쉐어링 기법으로 공유하는 방식이 주로 사용된다. 이러한 형태의 가상화는 가상화자원을 사용하는 여러사용자들(애플리케이션또는서비스)이 물리적자원을 공유하게 해주며, 이때 각 사용자는 마치 자기가 해당 자원을 혼자서만 사용하는것과 같은 착각을 하게된다. 대표적 사례로는 서버내의 논리적파티셔닝(LPARs), 가상머신(VM), 가상디스크, 가상LAN(VLANs)을들수있다.
2) 단일화(Aggregation) :
공유의 반대되는 가상화 개념으로서, 가상자원은 여러개의 물리적자원들에 걸쳐서 만들어질 수 있으며, 이를통해 외견상 전체용량을 증가시키고 전체적인 관점에서 활용과 관리를 단순화 시켜줄 수 있다. 예를들어, 스토리지 가상화는여러개의 물리적디스크 시스템에 남아있는 각각의 유휴디스크들을 하나의 가상화 된 디스크로 만들어주는데, 이때 가상화된 디스크는 가상디스크를 만드는데 사용되어진 어떤 물리적 디스크보다도 더 커질수있다.
3) 에뮬레이션(Emulation) :
물리적자원 자체에는 원래부터 존재하지 않았지만 가상자원에는 어떤기능들이나 특성들을 마치 처음부터 존재했던것처럼 가질수 있다. 예를들어 IP 네트워크상에서 가상SCSI 버스를 구현하는 iSCSI 또는 물리적디스크 스토리지상에 구현된 가상테이프 스토리지 등이 여기에 속한다. 또 다른 형태의 에뮬레이션에는 여러개의 제각기 다른 물리적자원들을 표준 구성요소형태인것처럼 가상자원으로 표시하는것이 있다. 여러종류의 이더넷 인터페이스를 마치 하나의특정한 표준이더넷 인터페이스 모델로 나타내는것이 그 예이다.
4) 절연 (Insulation) :
가상화된 자원들과 물리적자원들간의 상호맵핑은 가상화자원들 또는 가상화자원들을 사용하는 사용자들에게 아무런 영향을 미치지 않으면서 물리적자원들이 교체될 수 있도록 해준다. 이것은 투명한변경(Transparent Change)이라고 불리우며, 투명한변경은 가상화에 있어서 하나의 부가적인 혜택이기도 하지만, 때때로 그 자체가 하나의 기술로서 중요한의미를 갖기도 한다. CPUgard 옵션처럼 어떤 가상 프로세서가 결함이 발생하였거나 혹은 곧 발생하려는 물리적 프로세서에서 다른 정상적인 물리적 프로세서로 자동적으로 옮겨간다거나, 디스크의 결함을 사용자들로부터 숨기기위해다중디스크(Redundant Disk)를사용하는 RAID 스토리지 컨트롤러가 대표적인 사례들이다. 달리말해 장애방지(Failure Proof)의 효과라고 볼 수 있다.
가상화 종류
- 서버 가상화
- 네트워크 가상화
- 스토리지 가상화
* 본문에서는 서버 가상화만을 다룬다.
서버 가상화
1) Managed Runtime
2) 물리적파티셔닝(Physical Partitioning)
3) 가상머신(Virtual Machine)
4) 논리적파티셔닝(Logical Partitioning)
5) I/O 가상화
최근의 서버 가상화는 위의 기술이 각각 사용되는 것이 아니라 하나의 통합기술로서 적용되어진다. ( 물리적 파티셔닝은 제외. ex - IBM社 LPAR )
서버 가상화의 솔루션으로서 '하이퍼바이저'라는 키워드가 존재한다. 서버 가상화의 핵심은 하이퍼바이저라는 하나의 커맨더에 의해 모든 것들이 Managed되는 것이다. 리소스 관리는 물론, 논리적 파티셔닝을 하고 그 위에 VM을 올린다.
하이퍼바이저 종류
1) Native, Bard-metal Type( Host OS 없음)
Ex) ESXi, XenServer, Hyper-v
하드웨어에 직접 설치되어 여러 개의 OS를 돌린다 호스트OS가 없어 리소스를 따로 할당하지 않아도 되며 호스트형 가상화에 비해 오버헤드가 적고, 리소스 관리가 유연하다 자체적으로 관리기능을 가지고 있지 않아 별도의 관리 콘솔 혹은 관리컴퓨터가 필요하다
Type 1 하이퍼바이저는 다시한번 종류를 다음과 같이 나눌 수 있다
1 - 1) 전가상화
히드웨어를 모두 가상화(Full Virtualization)하여 호스팅되는 OS의 수정 없이 다양한 OS를 지원해줄수 있다 각 Guest(OS)의 동작 하나하나가 하이퍼바이저에 의해 관리 되도록 전체를 가상화하기 때문에 퍼포먼스 저하가 생김
1 - 2) 반가상화
하드웨어를 반가상화(Para Virtualization)하여 호스팅되는 Guest(OS)가 직접적으로 하드웨어 제어를 하이퍼 콜( Hyper Call )을 통해서 수행한다. 게스트 OS가 하이퍼바이저가 직접 하지 않고 하이퍼 콜을 통해서 하드웨어 동작이 수행되기 때문에 하이퍼바이저의 부하가 낮아진다 퍼포먼스가 좋은 편
2) Host Type( Host OS 존재 )
Ex) VMWare Workstation, Virtual Box
호스트 운영체제에서 실행되며 이것의 관리하에 운영체제가 관리된다 게스트 OS의 종류에 제약이 적고, 손쉽게 도입이 가능하다 그러나 네이티브 방식에 비해 오버헤드가 크다
가상화 장단점
장점
단점
높아진 자원 활용률
낮아진 관리 비용
사용의 유연성
향상된 보안
높아진 가용성
증가된 확장성
물리적 장애 발생시 가상화 서버 전체에 영향
직관적이지 않은 환경(가상)의 유지보수 어려움
병목현상 고려 필요
라이선스 관리 복잡
가상화 벤더/브랜드 종류 및 장단점
VMWare – VMWare workstation, vCenter
강력한 기능, 편리성, 성능, 높은 안정성
일부 기능 라이선스 필요
하이퍼바이저 - ESXi( ESX 업그레이드 ) = vSphere
Citrix – XenServer
효율적 자원 관리, 젠서버(Server)에서 구동, recovery 편리
32비트 환경 제공 X, 윈도우 화면 전환 느림
하이퍼바이저 - XenServer
Oracle – Virtual Box
무료(오픈소스), 작은 용량, 높은 호환성
기능 제한, 단순 작업 시 사용 용이
하이퍼바이저 - VM
IBM – PowerVM
프로세서 간 자유로운 자원이동 가능, 동작중인 AIX 및 Linux VM을 서버간 이동 가능
레퍼런스가 부족
하이퍼바이저 - z/VM
MS – Hyper-V
윈도우에 내장된 가상머신, 접근 용이, 빠른 속도
높은 요구사항, Hyper-V 설치 시 인텔 가상화 기술을 독점(Hyper-V 전용으로 고정)
하이퍼바이저 - Hyper-V
대부분 리눅스 커널 기반의 KVM ( Kernel-based Virtual Machine )이라는 하이퍼바이저 오픈소스 기반의 커스터마이징 하이퍼바이저이다. Citrix XenServer같은 경우는 Xen의 XenProject( Xen )을 사용
송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당합니다. IP는 ‘패킷’과 ‘데이터그램’이라는 단위로 나뉘어 전송되며 비신뢰성(Unreliability)과 비연결성(Connectionlessness)이라는 특징을 가지고 있습니다. 연결 세션을 구성하지 않고 흐름에 관여하지 않기 때문에 무결성을 보장할수 없습니다.
IP 주소 체계
각각의 Host들을 구분하기 위해 IP 주소라는 것을 사용합니다. IP 주소는 Host를 나타내는 고유의 IP가 되기에 중복되면 안됍니다. 단 반대로 여러 개의 IP가 하나의 Hos를 나타낼 수 있습니다.
IPv4의 경우 위와 같이 32bit 2진 형태의 포맷을 가지고 있으며 표현시에는 8비트씩 구분하여 10진법으로 나타냅니다. 구분점은 점(.)으로 표시하고 각 부분을 옥텟(Octet)이라고 부릅니다. 4 옥텟의 IPv4 주소 체계는 각 옥텟이 0 ~ 255( 2^8 )범위로 나타낼 수 있습니다. 따라서 전체 IP 주소는 256 *256 *256 *256 = 약 42억개의 주소를 중복없이 나타낼 수 있습니다.
Class
원래 IPv4주소는 8비트 네트워크/ 나머지 호스트 주소로 단순하게 구분되어 있었으나 오늘날 기존에 비해 더욱 커지고 복잡해진 네트워크 영역 덕분에 각기 다른 크기의 네트워크 영역이 총 5개의 Class 단위로 정의 되었습니다.
* 각 Class의 처음과 마지막 주소는 각각 해당 네트워크 자체주소와 브로드캐스트용 주소로 예약되어 있습니다. -> ( 일반목적 Class별 IP 표현개수 = 이론상 표현개수 – 2 )
IP ID = 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX = 2^4 * 2^8 * 2^8 * 2^8 ( 224.X.X.X ~ 239.X.X.X )
E Class ( 예비, 실험용 )
IP ID = 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX = 2^4 * 2^8 * 2^8 * 2^8 ( 240.X.X.X ~ 255.X.X.X )
공인, 사설 IP
앞에서 언급한 IP는 전부 공인 IP입니다. 인터넷에 보급에 따라 이러한 공인 IP 주소 또한 고갈의 문제가 제시되었습니다. 그래서 나온 대책이 ‘사설 IP’ 주소의 도입입니다. 외부와 연결되지 않는 네트워크에서 굳이 공인 IP를 사용하지 말고 자체적인 사설 IP를 돌려 씀으로써 공인 IP의 소모를 줄이는 방법입니다. 사설 IP의 주소 범위는 클래스별로 다음과 같습니다.
A Class = 10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
B Class = 172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)
C Class = 192.168.0.0 ~ 192.168.0.0/16
2. TCP( Transfer Control Protocol )란?
네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있습니다. 네트워크 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC793에 기술되어 있습니다.
TCP 특징
데이터 송수신 시 Byte 단위로 처리
양방향 통신 허용
오류 검증가능
연결 지향
Congestion / Flow Control
Buffer 사용
TCP 연결 설정 과정
1. 클라이언트가 서버에게 SYN segment를 보냄
2. 서버에서 SYN를 받고 SYNACK로 응답
3. 클라이언트에서도 SYNACK에 대한 ACK를 다시 보냄. 이 단계부터 데이터가 포함될 수 있음
+ 이 과정을 Three way handshake라 부른다.
TCP 연결 해제 과정
1. 클라이언트 end-system은 FIN segment를 서버에 보냄
2. 서버는 FIN을 받고 ACK로 응답. 일정시간 대기 후에 FIN segment를 클라이언트에 보냄
3. 클라이언트는 FIN을 받고 ACK로 응답.
4. 서버는 ACK를 받고 일정시간 대기 후에 연결 종료
+ 일정시간 대기하는 이유는 아직 못보낸 데이터가 존재할 수 있기 때문
Flow Control ( 흐름 제어 )란?
Sender는 Receiver의 Buffer가 overflow되지 않을만큼 적당한 속도와 양의 데이터그램을 보낸다. 송수신자 사이의 데이터 처리율 차이에 대한 해결방법
Congestion Control ( 혼잡 제어 )란?
Sender는 Network상의 Buffer(Router)가 overflow 되지 않을만큼 적당한 속도와 양의 데이터그램을 보내거나, 다른 경로를 찾는다. 송신자와 네트워크의 데이터 처리율 차이에 대한 해결방법
3. 결론
IP > 3L Protocol
TCP > 4L Protocol
인터넷 통신에 가장 많이 사용하는 프로토콜인 IP의 신뢰성을 보장하기 위해 상위 프로토콜인 TCP가 같이 자주 쓰이며 이를 TCP/IP라고 부릅니다.
WAS와 혼동되는 용어 중 WS가 있습니다. WS는 Web Server의 약자로 http 요청을 처리할 수 있습니다 클라이언트가 GET, POST, DELETE 등의 메소드를 이용해 Request를 했을 때 어떠한 결과를 돌려주는 기능을 합니다. 대표적으로 Apache가 있습니다 그렇다면 WAS와는 어떤 차이가 있을까요? WAS는 웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말합니다 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이어트에 전달해주는 역할을 하는 것이 바로 웹 컨테이너 입니다 대표적으로 Tomcat이 있습니다 이미지나 단순 html파일과 같이 정적인 데이터의 처리의 경우 WS를 이용하는 것이 빠르고 안정적이며 DB와 연결되어 데이터를 주고 받거나 데이터 핸들링이 필요한 경우에는 WAS를 활용해야합니다 두 서버의 목적의 차이 때문에 두 개의 서버를 연동해서 사용하면 더욱 효과적인 서비스를 제공할 수 있고 자주 같이 사용하는 두 프로그램을 합쳐 Apache Tomcat이라고도 부릅니다. 요약하면 WAS란 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어이며, 동적 서버 콘텐츠를 수행하는 프로그램입니다.