가상화

갱두·2022년 1월 8일
0

📓 도커

목록 보기
1/2

클라우드와 가상화 기술 배경

클라우드 컴퓨팅은 하드웨어와 이들을 연결하는 네트워크로 구성된 환경을 가상화를 통해 통합된 계산, 저장 및 처리가 가능한 환경으로 제공하는 것을 말함

✔️ 컴퓨터와 IT의 발전으로 다수의 서버를 보유한 데이터센터의 필요성이 급증. 하지만 하드웨어 성능이 크게 증가한 것에 비해 서버가 구동하는 어플리케이션의 양이 적어 서버의 성능을 전부 활용하지 못하는 문제점이 발생
=> 이것을 가상화 를 통해 해결하려고 시도

  • 첫 상용 솔루션은 vm웨어에서 제공한 솔루션이라고 함. 그 후 젠(Xen)이나 자체 서버 가상화 플랫폼들이 많이 생김. 이러면서 전반적으로 가상머신의 배포, 이동, 관리 등을 편리하게 해주는 관리, 자동화 및 오케스트레이션 툴들이 생기기 시작

✔️ 기업들은 가상화를 통해 서버를 통합시킴으로서 장비 구매 비용을 아끼고, 유지 보수 비용, 서버 운영 측면에서 이득

  • 평균적으로 대부분의 서버는 보유한 용량 중에 약 10~15% 수준만 사용
  • 가상화를 통해 한 대의 서버에 여러 운영체제를 가동시켜서 다른 서버의 작업을 가져와 분산 처리하면 사용률을 약 70%까지 끌어올릴 수 있음

가상화?

🚀 소프트웨어를 사용하여 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 컴퓨터 하드웨어 상의 추상화 계층 을 구축하는 것

간단하게 예시로 이해해보자

각각 용도가 다른 3개의 물리 서버가 있다. 레거시 어플리케이션과 이를 구동할 수 있는 서버는 계속해서 필요하므로 계속 유지될 필요가 있음.
전통적으로는 위의 이론을 따름. 그러나 가상화를 사용하면 메일 서버를 2개의 고유한 서버로 분할해 독립적인 태스크를 처리하고 레거시 애플리케이션을 마이그레이션할 수 있다. 마찬가지로 하드웨어도 더 효율적으로 사용할 수 있다.

이렇게 사용하면 한 서버에서 사용률을 60%, 또는 90%까지 끌어올릴 수도 있고, 빈 서버를 다른 용도로 사용하거나 냉각 및 유지 비용 등을 줄일 수 있게 됨

📌 결론: 가상화의 대상이 되는 컴퓨팅 자원은 프로세서(CPU), 메모리(Memory), 스토리지(Storage), 네트워크(Network), 그래픽 처리 장치(GPU)가 있으며, 이들로 구성된 서버나 장치들을 가상화함으로써 높은 수준의 자원 사용률과 분산 처리 능력을 얻을 수 있음

🚀 하이퍼바이저 Hypervisor

근데 어떻게 다른 OS들을 사용할 수 있을까???

  • 각 OS마다 리소스를 관리하고 명령어를 해석하는 커널이 있음
  • 그런데 OS마다 명령어를 해석하는 규칙이 다름

하드웨어는 덧셈 연산을 하고 싶다고 하자

  • 그런데 윈도우는 덧셈 명령을 말할 때 Add라고 말하고, 레드햇은 ADD라고 말하고, 맥은 add라고 말한다.
  • 그러면 하드웨어는 뭐가 뭔지 어떻게 알아? 전부 다 덧셈을 가리킨다는건 OS는 알고 있어도 하드웨어는 모름.
  • 특히, 가상화된 GUEST OS가 하드웨어 위에 올라가는데, 그 OS가 뭐든지간에 하드웨어는 OS가 내리는 명령을 알아들을 수 있어야 함.

그래서 하이퍼바이저가 필요함 !

✅ 개념

하드웨어를 가상화하기 위해 하드웨어뿐 아니라 각각의 가상머신들을 관리할 가상머신모니터와 같은 중간 관리자가 필요하고 이를 하이퍼바이저라고 함.

하드웨어의 물리적인 리소스를 VM에게 제공하고, VM과 하드웨어간의 IO 명령을 처리함. 가상 레이어에 위치해서 하드웨어와 다수의 VM사이의 인터페이스라고 할 수 있음

  • 장점 : 하이퍼바이저에 의해 구동되는 VM은 각 VM마다 독립된 가상 하드웨어 자원을 할당받음. 즉 논리적으로 분리되어 있어서 한 VM에 오류가 발생해도 다른 VM으로 퍼지지 않음.
  • 단점 : 대량의 메모리가 필요, CPU 성능 확보가 쉽지 않음

✅ 종류

Type 1

  • 하드웨어 위에서 바로 구동되고 하이퍼바이저가 다수의 VM을 관리하는 형태
  • 가상머신에 설치된 Guest OS는 하드웨어 위에서 하이퍼바이저 다음으로 바로 구동됨

✔️ Type2보다는 더 향상된 성능을 제공하지만, 여러 하드웨어 드라이버를 세팅해야 하며 설치가 어려움

Type 2

  • 하드웨어 위에 Host OS가 있고, 그 위에서 하이퍼바이저가 다른 응용 프로그램과 유사한 형태로 동작
  • 하이퍼바이저에 의해 관리되는 가상머신의 게스트 OS는 하드웨어 위에서 호스트 OS, 하이퍼바이저 다음인 3번째 수준에서 구동됨

✔️ 기존의 컴퓨터 환경에서 하이퍼바이저를 활용하는 거라 설치가 용이하고 구성이 편리한 장점이 있으나 Type1 보다는 성능이 낮음

✅ 방식


각각의 OS의 커널들을 더하라는 하나의 명령어로 번역을 해준다. 그 번역을 해준 "더해라!" 라는 명령어를 하드웨어는 알아듣고 그 더하는 명령을 실행하게 되는 것

✔️ OS에게 자원을 나눠주면서 조율한다
✔️ OS들의 커널을 해석해서 하드웨어에게 알려준다

이게 바로 전가상화 임!

그렇담 반가상화 는 ?

  • 위의 그림처럼 각 OS의 명령어에다가 확성기를 다는 것이다. 그 확성기는 모든 다른 명령어들을 '더해라!'라는 말로 바꿔준다.
  • 근데 확성기가 다 다르게 생겼네욤?
    각 OS들은 Add, ADD, add라는 커널을 가지고 있다. 이 커널들을 '더해라!'로 바꾸는 알고리즘은 과연 모두 같을까? 그렇지 않다. 각 OS마다 모두 다르다.
    => 그래서 (게스트) OS의 커널을 수정해야 한다.

머잇? OS의 커널을 수정한다고 ?? 그걸 다 꺼내서 수정을 한다고 ???

  • 그래서 오픈소스인 리눅스가 가장 먼저 이 방법을 도입했다고 한다~
  • 근데 윈도우는.. 오픈소스가 아닌데 ? 근데 요즘엔 다 Xen 이런데서 제공하는 툴로 수정 가능 하다고 함

✔️ 그럼 반가상화에서 Hypervisor는 번역을 제공하지 않나요?

  • 넵. 자체적으로 커널에 번역을 달아 놓았으니 Hypervisor는 단지 가상화 OS들에게 자원을 어떻게 배분할 것인가? 하는 관리적인 문제들만 다루면 되는 것이다.

정리를 해보자면,

📌 전가상화 (VMware, VirtualBox)

  • 컴퓨팅 시스템의 하드웨어 리소스를 완전하게 가상화하는 방식
  • 게스트 OS 스스로가 게스트 OS인 것을 알지 못하는 상태.
    즉 자신이 하드웨어에 대한 통제권을 쥐고 있다고 인식하나, 사실 게스트 OS가 생각하는 하드웨어는 하이퍼바이저(VMM)가 에뮬레이션 해준 형태. 따라서 게스트 OS에 대한 별다른 수정 없이 구동이 가능
  • 하지만 하이퍼바이저가 모든 명령을 중재해줘야 하기 때문에 느리다는 단점

📌 반가상화 (Xen)

  • 하드웨어를 완전하게 가상화 ❌
  • 하이퍼콜이라는 인터페이스로 직접 하이퍼바이저한테 요청을 날릴 수 있게 해주는 것
    => 그래서 성능이 빠르다는 장점이 있다
  • 하지만 기존 OS는 하이퍼콜이라는 인터페이스를 통해 하이퍼바이저에게 요청을 보내는 걸 못하기 때문에
    • 게스트 OS가 하드웨어의 가상화 여부를 알고 있어야 하며
    • 필요한 경우 하이퍼 콜을 사용할 수 있도록 게스트 OS의 커널을 수정해야 함

✔️ 둘 다 Type 1 일 때

가상화의 종류

1. 서버 가상화

서버의 효율성을 높이기 위해 등장한 기술로 가상화 개념의 시초

✔️ 구성 :

  • 가상화를 가능하게 하는 하이퍼바이저(Hypervisor)
  • 하이퍼바이저에 의해 제어되며 각종 애플리케이션을 실행하기 위한 컴퓨팅 환경인 가상 머신(Virtual Machine, VM) 으로 구성

이 외에도 데스크탑 가상화, 애플리케이션 가상화, 운영체제 가상화, 데이터 가상화, 네트워크 가상화 등이 있음

출처 : https://m.blog.naver.com/shakey7/221599135601
https://blog.naver.com/complusblog/220990379931
https://blog.naver.com/alice_k106/220218878967

profile
👩🏻‍💻🔥

0개의 댓글