졸업과제 주제로 Linux Container를 이용한 효율적인 자원 분배를 구현하는 것으로 대략적인 목표를 잡았다.

오늘 교수님과의 면담을 통해 'ZNS 이용한 리눅스 컨테이너 I/O 성능 Isolation 기법'으로 주제를 정했다.

ZNS와 Linux Container에 대해 알아보자.

 

ZNS란?

ZNS는 SSD 전체 저장 공간을 작고 일정한 용량의 구역(Zone)으로 나누고 용도와 사용 주기가 같은 데이터를 동일한 구역에 저장해 SSD를 효율적으로 활용할 수 있게 하는 차세대 기술이다.

 

Linux Container란?

Linux Container는 단일 컨트롤 호스트 상에서 여러 개의 고립된 리눅스 시스템을 실행하기 위한 운영 시스템 레벨 가상화 방법이다. 리눅스 커널은 cgroups를 절충하여 가상화 머신을 시작할 필요 없이 자원 할당을 한다.

 

우리는 리눅스 커널 코드를 분석하여 각각의 컨테이너에 할당되는 저장 공간을 효율적으로 조절하는 것을 할 것이다.말만 들어도 굉장히 어려울 것 같기 때문에, 일단 관련된 개념을 좀 공부하고 가자.

 

'리눅스 커널'이라고 말은 계속 했지만 이때까지 터미널과 커널의 개념을 헷갈리고 있었다.

 

Kernel커널은 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램이다. 시스템의 모든 것을 완전히 통제한다.

  • 보안: 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.
  • 자원 관리: 한정된 시스템 자원을 효율적으로 관리하여 프로그램의 실행을 원활하게 한다. 스케쥴링 포함.
  • 추상화: 하드웨어 추상화를 담당한다.

Terminal

컴퓨터나 컴퓨팅 시스템에 데이터를 입력하거나 표시하는 데 쓰이는 전자 하드웨어 기기에서 유래하였다.

Unix, macOS 시스템 상에서 주로 사용되는 단어이기도 하다.

단말 에뮬레이터 또는 Shell이나 Text Terminal로 불리며, GUI 상에서 작동하는 단말 에뮬레이터는 Termianl Window라고 불린다. 

단말 에뮬레이터의 종류에는 Linux Console, PuTTY, Xshell, Win32 Console, Terminal 등이 있다.

 

정리하자면, Kernel은 운영 체제의 핵심이 되는 프로그램이고, Linux Shell은 사용자와 Kernel을 이어 주는 다리 역할을 하는 인터페이스이다.

 

Linux 환경 구축을 위해 열심히 구글링을 해 보니 'Linux Desktop'과 'Linux Server'가 있다는 것을 알았다. 심지어 Linux Server를 설치하기 위해서는 Image 파일(.iso)을 다운받아야 한다. 무슨 차이일까?

 

Linux Desktop은 우리가 생각하는 GUI를 가진 인터페이스이다. 반면 Linux Server는 Linux OS의 변형으로, 시스템 및 네트워크, 웹 서비스, 데이터베이스 등을 관리하기 위해 제작되었다. 우리가 사용하는 Ubuntu Server 역시 Linux Server의 일종이고, GUI가 필요하지 않기 때문에 명령 프롬프트만을 사용하여 실행할 수 있다.

 

여기서 사용되는 .iso 파일은 ISO image라고 불리는데, CD나 DVD의 압축 파일(디스크 이미지)이다. 이해가 잘 안 돼서 더 찾아봤다.

디스크 이미지란 기록 미디어 안에 있는 내용이 저장된 파일을 가리킨다. 그러니까 CD/DVD에 담긴 내용을 파일로 변환해 둔 것이라고 생각하면 된다. 이를 이용하면 실제 CD/DVD 미디어를 사용하는 것처럼 Emulate해서 사용할 수 있다고 한다. 이렇게 Image를 드라이브에서 사용하는 것을 Mount라고 한다.

 

방금 배운 Kernel과 Image의 개념을 합치면 Kernel Image가 무엇을 의미하는지 알 수 있다. 커널이 하나의 파일로 디스크에 저장되어 있는 것이다. 이에 관련된 내용을 잘 정리한 블로그를 첨부하겠다.

 

https://eehoeskrap.tistory.com/255

 

[Linux] 커널 이미지

커널 이미지는 내가 원래 영상처리에서 알던 이미지와 아주 다른 개념이었다. 1. 커널 이미지의 개요 : 리눅스에서 부팅은 도스나 윈도우의 부팅과 상당히 다르며, 도스나 윈도우의 부팅은 컴퓨

eehoeskrap.tistory.com

 

일단 개념 정리는 대충 했다. 사실 거의 1주일간 QEMU/FEMU 설치를 시도했는데 무슨 문제인진 몰라도 컴파일이 안 돼서 면담 전날까지 해결을 못 했다. 이것 때문에 가상머신이랑 Linux Server를 몇 번이나 삭제하고 재설치를 했는지... 심지어 사용하는 사람이 적어서 그런지 구글링을 해도 답이 안 나온다. 조언을 좀 구해봐야겠다.

+ Recent posts