갬미의 성장일기

Day 31 - 가상화, 가상머신 만들기(Virtual Box, CentOS) 본문

Cloud/Cloud 공부일기

Day 31 - 가상화, 가상머신 만들기(Virtual Box, CentOS)

갬미 2022. 2. 21. 23:37

오늘 배운 내용

- 가상화가 왜 필요할까?

- local pc에 Virtual Box - CentOS 설치하기 

가상화가 왜 필요할까?

가상화란 Host 환경에 HyperVisor 라는 가상머신 OS를 깔고 그 위에 [게스트머신 - OS - APP]을 설치하여 host 자원을 할당받아 사용하는 것을 말한다 

[게스트머신 - OS - APP] = VM 

 

왜 가상화가 필요할까?

- 만약 host가 고장나버린다면? 모든 서비스가 다운된다

- host의 자원을 효율적으로 사용할 수 있다

 

가상화해도 host가 고장나면 서비스가 중단되는것 아닌가요?

만약 여러대의 Host를 클러스터로 묶는다면 하나의 host에서 다른 host환경으로 VM을 쉽게 옮길 수 있다

다른 host환경으로 VM을 옮기는것을 migration이라고 한다

migration은 두가지 종류가 있다 

1. Cold Migration : VM이 옮겨지는 동안 사용자가 재부팅을 경험할 수 있다

                        - host가 예상치못하게 고장났을때 

2. Live Migration : VM이 옮겨지는 동안 끊김없이 VM을 사용할 수 있다 

                        - host 유지보수 할때 (running server -> running server)

 

어떻게 VM이 그렇게 빨리 옮겨지나요?

VM을 실행하기 위해 필요한 메타데이터가 파일형태로 남아 이 파일만 복사/붙여넣기 하듯이 사용하면 되기 때문이다

 

VM이 많은 양의 스토리지를 할당받아 사용하고 있었다면 migration이 오래걸리는거 아닌가요?

컴퓨팅 자원은 cpu, memory, storage로 크게 나눌수 있다

이때 서버 구조를 보면

host - cpu, memory 서버와

storage 서버가 구분되어 돌아가고있다 , storage는 서버에 직접 붙어 구동되지 않고 별도의 network에서 컴퓨팅 자원 network와 빠른 속도로 소통하고 있다 

 

컴퓨팅 네트워크와 스토리지 네트워크는 완전히 구분되어있고, EC2를 만들때 스토리지 네트워크에서 할당받아오기때문에 VM을 옮길때 스토리지는 도착 위치만 바꿔주면 된다 -> 그래서 빠르다

 

AWS에서 EC2를 꺼도 요금이 부과되는 이유도 위와같은 구조때문이다 

CPU, Memory와 같은 컴퓨팅 자원은 EC2가 켜지면 할당되지만

스토리지의 경우 EC2가 생겼을때 할당되기 때문에 EC2가 꺼져도 할당이 풀리지 않는다 

EC2를 종료한 경우에도 스토리지가 할당되어있다면 이에 대한 요금이 부과된다 

 

가상화 OS 하이퍼바이저에는 두가지 종류가 있다

https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80

만약 내의 PC에 가상환경을 만들어 사용한다면 Type2 하이퍼바이저이다 

Type 1 : 따로 OS없이 바로 hypervisor 

          종류: Xen, hyper-v ,ESXI, hvm

Type 2: local host의 OS가 있고 그 위에 Hyperviser  -> 속도가 느려 보통 test용으로 많이 쓰임 (비용이 들지 않아 간단한 실험을 하기에 적합)

          종류: VMware workstation, Oracle virtual box

 

가상화 종류 

1. 전가상화 : GM이 Hyperviser의 존재를 알고 있다 / Hyperviser는 host 인덱스를 가지고 있기때문에 GM이 Hyperviser에 요청을 보내면 바로 host를 연결할 수 있다

2. 반가상화: GM이 Hyperviser의 존재를 모르고 있다 / GM은 host에 요청하듯 Hyperviser에 요청을 보내고 Hyperviser는 host와 연결하기 때문에 속도가 느리다. 하지만 전가상화에 비해 호환성이 좋다는 장점이 있다

요즘은 Hyperviser의 발전으로 전가상화와 반가상화의 속도차이가 거의 없어 반가상화를 주로 사용하고 있다 

 

Virtual Box - CentOS 설치하기 

- virtual box 다운로드

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

실습환경에 맞는 운영체제를 선택해서 다운로드

 

- Cent OS 다운로드

 

Download

Home Download Architectures Packages Others x86_64 RPMs Cloud | Containers | Vagrant ARM64 (aarch64) RPMs Cloud | Containers | Vagrant IBM Power BE (ppc64) RPMs Cloud | Containers | Vagrant IBM Power (ppc64le) RPMs Cloud | Containers | Vagrant ARM32 (armhf

www.centos.org

각 국가에서 운영하는 미러링 사이트가 있다 - 아무거나 들어가서 다운받아도 된다 

미니멀로 다운받아준다

 

가상머신 만들기 

새로만들기 클릭

머신을 저장할 경로, 이름, OS 종류등을 선택하여 다음 클릭

메모리 크기는 각자 사정에 맞게 설정 (나는 1024MB)

새 가상 하드디스크 만들기

VMDK 선택 (호환성이 좋아서)

동적으로 그때그때 필요할 때 늘려도 되고 고정크기로 해도 된다

상황에 맞게 크기를 조절한다

VM 생성 완료

 

가상머신에 Cent OS 설치하기

선택 후 다운받아 놓은 Cent OS 이미지 경로를 넣어준다

VM실행해서 기초 세팅하기

DATE & TIME 은 서울로 설정

 INSTALL DESTINATION은 들어가서 그냥 Done을 누른다 

클릭

ON으로 설정 -> Host name : VM1으로 바꾼다(안해도 됨)

이후 begin install -> password 설정

 

virtual box 설치완료

내 PC를 호스트 삼아 EC2(VM)을 설치한것

ping test

클라우드 환경이랑 같은 

Linux가 필요하면 이랗게 쓰면 된다

 

클라우드에서 OS 깔때 왜이렇게 빨리 되는가 ?

 이미 OS 깐걸로 이미지를 만들어놓고 그걸로 배포하기 때문!

 

우리도 해보자

실행중인 VM 전원을 끈다 

-> 우클릭 . 복제

MAC 주소가 겹치면 충돌이 나기 때문에 꼭 새주소로 하기

다음 -> 완전한 복제 -> 복제

복제뜨면 호스트이름등이 같음

 

nginx 설치하기

일단 VM에서 ip를 확인한다

미니멀로 설치하여 network관련 tool이 설치 안되어 있으니까 일단 설치

yum install net-tools -y 

설치후 ifconfig

네트워크 NAT, Host only 모두 사용하기 ( NAT - 외부 통신용 / Host only - 내 로컬과 연결용 (PuTTY등,,))

일단 VM 종료후 설정 들어가기

Host only 네트워크를 추가한다 

이후 igconfig 확인

 

centOS NGINX 설치

https://velog.io/@tlsalsckd13/CentOS-7%EC%97%90-nginx-%EC%84%A4%EC%B9%98

 

CentOS 7에 nginx 설치

CentOS 7에 nginx 설치 하는 과정먼저 AWS EC2 인스턴스, GCP VM 인스턴스 등 인스턴스 하나를 생성하고 ROOT 모드로 실행한다.그리고 다음과 같이 입력한다.아래와 같이 파일을 작성한다.파일을 작성한

velog.io

안뜨면 잠시 방화벽을 내려야 한다

systemctl stop firewalld

start - 데몬 서비스 실행 

데몬? - 서비스를 위해서 실행되고 있는 서비스 : 가게를 open하고 문을 열어놓는다

systemctl start - 서비스를 실행하겠다 

systemctl enable - 서비스를 재부팅해도 실행하겠다 

 

만약 host가 죽어서 VM이 마이그레이션 되었는데 서비스가 enable되어있지 않다면 

-> VM은 살았지만 서비스는 살아나지 않는다 

 

1. start , stop -> now

2. enable, disavle -> booting할때 

 

index 간단히 바꾸기

echo "Hi gymin" > /usr/share/nginx/html/index.html

오늘의 회고

  • 내컴퓨터에서 가상머신을 만들어보다니 너무 신기했다 
  • 그간 뜬구름처럼 떠다니던 개념을 하나씩 알게되어 좋다
  • AWS없이 리눅스를 사용하고 싶을때 구름 IDE같은 서비스를 찾아가지말고 내 가상머신을 이용하면 쉽고 빠르게 사용할 수 있을 것 같다 ><
Comments