[virtualization] 가상화란?

- 3 mins

가상화

이 글은 가상화라는 개념을 완전히 처음 접하는 사람을 위한 글입니다.

그래서 최대한 상세히 설명하기 위해 예시를 많이 들었는데,

어느정도 개념히 잡힌 사람에게는 과하게 느껴질 수 있으므로 감안해주시면 감사하겠습니다.


나는 맥북을 사용하지만, 개발은 CentOS에서 주로 한다.

또 가끔 엑셀이나 한글 작업을 해야 할 때에는 Window를 띄워서 작업한다.

어떻게 맥북을 사용하는데 Linux나 Window 환경에서 작업이 가능할까?

이런 것들을 가능하게 해주는 것이 바로 가상화이다.

가상머신


참고로 맥에서 부트캠프를 통해 Window를 사용하는 것과는 좀 다르다.

부트캠프는 하드디스크의 일부 공간을 할당해서 아예 Window 자체를 설치하는 것이다.

그래서 맥을 쓰다가 윈도우를 쓰고 싶을때는 재부팅을 해주어야한다.


그에 비해 가상화는 필요할때마다 Window의 가상 이미지를 띄워서 작업하는 것이다.

마치 PC카톡을 사용할때는 켰다가, 사용하지 않을때는 끄는 것처럼 아주 간단하게 말이다.

위 캡쳐 화면처럼, 맥에서 페러렐즈를 통해 재부팅 없이 Window를 껐다 켰다 하는것을 생각해보면 된다.

(‘이미지’라는 용어를 사용했는데, 뒤쪽에서 부연설명 하도록 하겠다)


예시를 들어볼까?

창고가 하나 있다고 생각해보자.

평소에는 음식이나 옷 등을 넣어두는 다용도 창고이지만,

가끔씩 창고 한 켠을 악기 연습 공간으로 사용한다고 하자.

즉, 원래 이 공간은 ‘창고’이지만, 악기 연습을 할 때에는 일부 공간을 ‘연습실’로 사용하는것이다.


비록 진짜 연습실은 아니지만,

악기 연습을 할 때 만큼은 “이 공간은 나만의 연습실이다” 라고 ‘가상’으로 상상한다고 생각하면,

‘가상화’라는 명칭을 좀 더 이해하기 쉬울 것 같다.


그리고 악기 연습이 끝나면 다시 모든 공간은 창고가 된다.

“임시로 악기 연주를 위한 공간을 할당했다”고 볼 수 있다.


이 상황을 위에서 예로 들었던 맥과 윈도우로 바꿔보자.

현재 내 맥북에 여유공간이 200GB정도가 있다.

하지만 가끔 윈도우 작업이 필요할때, 50GB정도를 윈도우를 위한 공간으로 사용하고 싶은 것이다.


그래서 윈도우 가상 머신을 띄우면 200GB중 50GB가 임시로 윈도우를 위해 할당되고,

해당 공간이 할당되어있는 동안에는 그 용량만큼 윈도우를 사용할 수 있다.

윈도우가 할당되어있는 그 때 만큼은 그 공간을 ‘가상’으로 윈도우라고 치는것이다.

마치 평소에 창고로 사용하던 공간의 일부를 연습실로 사용하는 것 처럼 말이다.


참고로 부트캠프의 경우에는 이러한 공간을 ‘임시’로 할당하는 것이 아니라,

아예 50GB 공간을 따로 빼서 윈도우를 설치하는 것이다.

창고의 한쪽에 벽을 세우고 문까지 만들어서, 아예 독립된 공간의 연습실을 만드는 셈이다.

따라서 두 공간을 왔다갔다 할 때에는 열쇠로 문을 연다거나 노크를 한다거나 하는 추가 작업이 필요한데,

맥을 쓰다가 윈도우로 운영체제를 바꾸기 위해 재부팅하는것을 생각해보면 된다.

가상화는 이러한 절차가 필요 없이 간단하게 왔다갔다 할 수 있다.


즉, 가상화를 조금 전문적인 용어로 정의하자면 다음가 같다.

“단일 시스템에서 특정 환경을 위한 전용 리소스를 임시로 할당하는 기술”

이미지

설명을 하면서 계속 “공간을 할당한다”, “윈도우를 띄운다” 라는 표현을 사용했는데,

대체 무슨 말인지 추상적으로 느껴질 수 있다.

“가상 이미지를 띄운다” 라는 표현도 사용했다.


이미지란 일종의 실행 파일이라고 생각하면 된다.

다음 가상머신 캡쳐 화면을 보면 조금은 감이 잡힐 것이다.

가상머신은 앞서 설명한 가상화 기술을 소프트웨어로 구현해놓은 것으로,

가상 이미지를 띄울 수 있게 도와주는 녀석이다.

가상머신

빨간색으로 체크해놓은 곳을 보면 CentOS라는 이름의 이미지가 있다.

위에 있는 ‘시작’ 버튼으로 이 이미지를 실행하기만 하면,

다음과 같이 Window에서 CentOS를 사용할 수 있다.

가상머신

가상화의 개념은 살짝 복잡하지만,

실제로 사용할때는 이렇게 일반적으로 실행하는 프로그램과 전혀 다를게 없다.


근데 한 번 생각해보자.

일단 만들어놓은 이미지는 이렇게 쉽게 사용할 수 있지만,

초기에는 사용자가 직접 운영체제를 설치하고, 필요한 셋팅을 해주어야한다.

만약 가상머신 10개를 만든다고 생각하면 10개를 일일이 셋팅해야한다.


윈도우를 사용하려면 윈도우를 설치해야 하고,

리눅스를 사용하려면 리눅스를 설치해야 한다.

그 외에도 엑셀이나 한글, 혹은 개발에 필요한 여러가지 패키지와 디펜던시 등이 있을 수 있다.

엄청 귀찮지 않겠는가?


하지만 걱정할 필요가 없다.

가상화의 좋은점은 한 번 만들어놓은 이미지를 계속 재사용할 수 있다는 것이다.

심지어 다른 사람이 만든 이미지를 나에게 건네주기만 하면,

나는 단지 프로그램 실행하듯 실행만 하면 된다.


단순히 맥에서 윈도우나 리눅스를 사용할 수 있기때문에 좋은게 아니라,

협업시 개발 환경을 맞추거나, 분산 환경 셋팅을 위해 같은 설정의 노드를 여러대 테스트 할 때에도 효과적이다.

가상머신만 있다면 언제 어디서든 미리 준비한 이미지만 실행해서 당시와 똑같은 환경을 구축할 수 있다.




코딩장이

코딩장이

-장이: [접사] ‘그것과 관련된 기술을 가진 사람’의 뜻을 더하는 접미사.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora