가상 머신과 운영체제 이해
가상 머신(Virtual Maching) 개요
- 하나의 하드웨어(CPU, Memory등)에 다수 운영체제를 설치하고, 개별 컴퓨터처럼 동작하도록 하는 프로그램
하이퍼 바이저 또는 버추얼 머신 모니터(VMM)
- 운영 체제와 응용프로그램을 물리적 하드웨어에서 분리하는 프로세스의 소프트웨어
Virtual Machine Type1(native 또는 bare metal)
- 하이퍼 바이저 또는 버추얼 머신 모니터(VMM)가 Hardware에서 직접 구동
=> (예시) Xen, KVM[아마존 클라우드 컴퓨팅 서비스에서 사용]
Virtual Machine Type2
- 하이퍼바이저 또는 버추얼 머신 모니터(VMM)가 Host OS 상위에 설치됨
=> (예시) VMWare, Virtual Box
리눅스 배경지식 이해
리눅스 개요
- 리눅스 토발즈가 대학에 있는 UNIX 컴퓨터를 집에서 쓰기 위해 개발
- 다중 사용자, 다중 작업(시분할 시스템 & 멀티 태스킹)을 지원하는 UNIX와 유사한 운영 체제
GNU(Gnu is Not Unix) 프로젝트
- UNIX 운영체제를 여러 회사에서 각자 개발했는데, 소스를 공유하지 않는 문화에 반발한 것
-> 초기 컴퓨터 개발 공동체의 상호협력적 문화로 돌아갈 것 주장하며 1985년 GNU 선언문 발표
- 이 프로젝트를 지원하기 위해 자유 소프트웨어 재단(FSF) 설립, GNU 공개 라이선스(GPL) 규약 제정
GPL 라이선스
- GPl 프로그램은 사용 목적과 사용 형태에 관계없이 사용할 가능
- 단, 변경된 프로그램을 재배포하는 경우 동일한 GPL 라이선스로 공개해야 함(소스 오픈을 장려하기 위함)
리눅스
- GNU Hard(운영체제 커널 개발): 운영체제에 필요한 라이브러리, 컴파일러, 에디터, 쉘을 개발
-> 개발이 지연되면서 리눅스 토발즈가 리눅스 커널 소스 오픈
-> GNU 프로젝트 산출물과 리눅스 커널이 통합 개발됨
- GNU 프로젝트 기여가 크므로, GNU/Linux라 부르기를 희망했음: 지금도 가끔 GNU/GPL 등의 용어를 볼 수 있음
- 수많은 개발자가 수시로 각 프로그램 개발에 기여하고 프로그램을 활용함
-> 모든 것을 스스로 할 수 있는 좋은 개발자만 깊게 활용 가능
클라우드컴퓨팅 이해
- 서버 환경을 미리 구축해놓고, 간단한 설정으로 바로 사용할 수 있도록 만든 서비스
- 서버 기술의 기초 = 리눅스 이해
- 리눅스 사용 시 환경 구축 필요: 개인 PC에 구축할 경우, PC 환경에 따라 다양한 케이스가 발생할 수 있음
-> 따라서 동일한 환경을 구축하기 위해 클라우드 컴퓨팅 환경에 리눅스 서버 구축