가상화(Virtualization), 리눅스(Linux)

이승준·2023년 10월 10일
post-thumbnail

가상화란 = 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용하는 방식으로부터 감추는 기술

물리적 하드웨어는 은폐하고, 사용자에게는 논리적인 리소스를 제공하여 사용자에게는 실제 컴퓨터처럼 보이도록 하는 것.

물리적인 컴포넌트(Components, HW장치)를 논리적인 객체로 추상화 하는 것을 의미하며, 마치 하나의 장치를 여러 개의 장치인 것처럼 동작 시키거나, 반대로 여러 개의 장치를 묶어 하나의 장치인 것처럼 사용할 수 있는 기술.

가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여 하나의 물리적 머신에서 가상 머신(VM)을 만드는 프로세스로, Hypervisor는 가상화 층을 구현하여 물리적 머신의 컴퓨팅 리소스로부터 가상 환경을 분리하고 가상 머신(VM)을 생성한다.

VM은 물리적 머신과 동일한 역할 및 성능을 수행하지만, CPU와 메모리 및 스토리지와 같은 물리적 머신의 컴퓨팅 리소스를 사용한다. Hypervisor는 필요에 따라 각 VM에 이러한 컴퓨팅 리소스를 할당한다.

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

  • 호스트 컴퓨터의 자원을 가상 머신에게 논리적인 공유 (Sharing) --> 은폐
  • 공유된 자원을 받은 가상 머신들과 호스트 간에는 서로 간에 별개의 머신인 것처럼 작동함
  1. 서버 가상화 (Server Virtualization)
    서버의 효율성을 높이기 위해 등장한 기술로 가상화 개념의 시초

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

하드웨어를 가상화하기 위해서는 하드웨어뿐만 아니라 각각의 가상머신들을 관리할 가상머신모니터(VMM: Virtual Machine Monitor)와 같은 중간 관리자가 필요. 이를 하이퍼바이저라고 하며 VM이 동작할 수 있는 환경을 제공

하이퍼바이저는 하드웨어의 물리적인 리소스를 VM들에게 제공하고, VM과 하드웨어간의 I/O(Input / Output) 명령을 처리. Virtualization Layer(가상 레이어)에 위치하며 하드웨어와 다수의 VM들 사이의 인터페이스라 볼 수 있음

IaaS(Infrastructure as a Service) --> 가상화 기술과 물리적 자원, 즉 인프라만 제공. 제공사 및 서비스명 : AWS EC2(Elastic Compute Cloud), MS Azure, Google GCP 등

PaaS(Platform as a Service) --> 개발에 필요한 환경, 즉 플랫폼까지만 빌려주고 앱과 데이터는 기업이 직접 운영.
제공사 및 서비스명 : Google App Engine, IBM Bluemix, Red Hat OpenShift, AWS Elastic Beanstalk, Azure App Services

SaaS(Software as a Service)
--> 인프라 구축, 업데이트,버그 수정 등 소프트웨어 관련 모든 과정은 SaaS 서비스 업체가 관리하며, 사용자는 웹브라우저를 통해 필요한 애플리케이션만 서비스 형태로 구독해 이용

클라우드 서비스 운영 유형 별 분류

IaaS(Infrastructure as a Service) --> 가상화 기술과 물리적 자원, 즉 인프라만 제공. 제공사 및 서비스명 : AWS EC2(Elastic Compute Cloud), MS Azure, Google GCP 등

PaaS(Platform as a Service) --> 개발에 필요한 환경, 즉 플랫폼까지만 빌려주고 앱과 데이터는 기업이 직접 운영.
제공사 및 서비스명 : Google App Engine, IBM Bluemix, Red Hat OpenShift, AWS Elastic Beanstalk, Azure App Services

SaaS(Software as a Service)
--> 인프라 구축, 업데이트,버그 수정 등 소프트웨어 관련 모든 과정은 SaaS 서비스 업체가 관리하며, 사용자는 웹브라우저를 통해 필요한 애플리케이션만 서비스 형태로 구독해 이용

Micro Service Architecture(MSA) 란?

하나의 큰 애플리케이션을 여러 개의 다른 역할을 수행하는 애플리케이션으로 분리하였을 때 각 애플리케이션을 의미하며, 이렇게 마이크로서비스를 분리하여 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 마이크로서비스 아키텍처라고 함.!

Client/Server Architecture

  • Thin Client
  • Fat Client

Provisioning 이란?

정의 : 어떤 종류의 서비스든 사용자의 요구에 맞게 시스템 자체를 제공 하는 것을 프로비저닝이라고 하며 제공해줄 수 있는 것은 인프라 자원이나 서비스, 또는 장비가 될 수도 있다. 따라서, 클라우드를 도입하거나 클라우드 환경에서 사용하는 것은 클라우드 서비스 제공자로부터 서비스를 Provisioning 받아 사용한다고 보면 된다.

Server Resource Provisioning : CPU, Memory, IO 등과 같은 실제 서버의 자원을 할당해주고 운영할 수 있게 제공해주는 것을 말한다.
OS Provisioning : OS를 서버에 설치하고 구성작업을 해서 사용할 수 있도록 제공하는 것을 말한다.
Software Provisioning : WAS, DBMS 등의 소프트웨어를 설치하고 세팅하여 실행할 수 있도록 제공하는 것을 말한다.
Account Provisioning : 접근 권한을 가진 계정을 제공해주는 것을 말한다. 클라우드 인프라 쪽에서는 해당 업무를 담당하던 관리자가 변경된 경우 권한의 인계를 Account Provisioning 을 통해 하는 경우가 많다.
Storage Provisioning : 데이터를 저장하고 관리할 수 있는 Storage 를 제공할 수 있다. 특히 클라우드에서는 제공하는 Storage 의 종류와 용도에 따라 다양한 방식의 제공이 이루어진다.

롤링(Rolling)

일반적인 배포를 의미하며, 구버전에서 신버전으로 트래픽을 점진적으로 전환하는 배포 방식. 관리는 편하나 배포 중 구버전의 인스턴스가 감소하면서 처리 용량에 문제 발생가능성이 큼

블루그린(Blue Green)

구버전을 블루, 신 버전을 그린이라고 해서 붙여진 이름으로, 배포 시점에서 구버전을 신버전으로 일제히 전환한다. 빠른 롤백이 가능하며, 운영 환경에 영향을 주지 않고 실제 서비스 환경으로 신 버전 테스트가 가능하나, 시스템 자원이 두배로 필요하여 비용이 증가한다.

리눅스 LINUX 구조

Application -> 내장프로그램(윈도우,cd.exe), 외부프로그램

shell -> App과 Kernel을 연결시켜주는 인터페이스 (명령어 해석기 기능, 프로그래밍 기능, 사용자 환경 설정 기능 등 크게 세 가지로 분류 할 수 있다.)

kernel -> (프로세스 관리, 스케줄 관리 등등) <- 코어라고 부름

GUI : Graphical User Interface

Shell 유형

shutdown 및 init

$sudo init 0 => 시스템 종료

$sudo init 6 => 재부팅

$sudo shutdown -r +3 => 3분 후에 시스템을 재시작

$sudo shutdown -h now => 시스템 즉시 종료

$sudo shutdown -h +2 "System is going down in 2 min" => 2분 뒤에 셧다운한다는 메세지 보내고 종료하기

$sudo shutdown -c => 명령 취소하기

윈도우 파일 시스템 종류

FAT(File Allocation Table) - DOS때부터 사용되던 윈도우 계열의 파일시스템으로 FAT16, FAT32 등이 있음
- 저용량에 적합하고 보안성이 좋지 못하지만 다양한 운영체제에서 지원하여 호환성이 좋다.
- 파일 하나의 최대 크기는 4GB
NTFS(New Technology File System) - FAT시스템을 대체하기 위해 개발된 윈도우 파일 시스템으로 최대 파일 크기는 16TB이지만 실질적으로 2TB가 한계
- 사용자마다 다른 보안을 적용할 수 있습니다.
- 파일과 폴더에 개별적으로 권한을 설정할 수 있으며 폴더에 설정한 권한보다 파일에 설정한 권한이 우선
- 시스템 폴더는 Administrators/Power Users 그룹만 수정 가능
- 파일 단위로 계정이 언제 파일을 열어보거나 열려다 실패했는지 알 수 있는 감사(Auditing) 기능이 존재
- 파일 경로가 260글자 이상은 불가
exFAT(Extended File Allocation System) - NTFS의 호환성 문제를 극복하기 위해 나온 파일시스템으로 파일 크기는 무제한. 맥 OS-X에서도 읽기 쓰기가 가능 - 안전성이 낮다는 단점이 있음

리눅스 디렉토리 구조

리눅스 종료법

:q 종료
:q! 강제종료
:w 저장
:w! 강제저장
:wq 저장하고 종료
:wq! 강제 저장하고 종료
esc : 명령모드로
i : insert
a : append
I : 문자시작

profile
can't do it

0개의 댓글