Container technology는 packaging technology

기존의 가상 머신을 기반으로 한 application 배포 방식을 완전히 다른 관점에서 진행할 수 있도록 함.

 

가상머신을 바탕으로 app을 배포한다면, 아래의 왼쪽 그림과 같이 VM 하나에 guestOs를 올려 host와는 독립적인 개별의 운영체제 위에 application을 실행한다.

반면 Container를 바탕으로 app을 배포한다면 hostOs위에 컨테이너 기술을 사용하여 독립적인 환경을 보장하고 app을 올린다. 즉 경량화된 배포가 가능해졌다. 

https://gotocloud.co.kr/?p=2320

 

 

컨테이너 기술은 어떻게 구현할 수 있는가? 는 isolation에 기반을 두고 있다. 역사를 살펴보자.

- Unix V7(1979) - chroot 시스템을 콜을 통해 루트 디렉토리를 파일 시스템의 새로운 곳으로 변경하는 것이 가능해진다. 

- FreeBSD Jail - 운영체제 수준의 가상화. 컴퓨터 시스템을 여러 개의 독립적인 작은 시스템으로 분리하는 기술. 

- Linux VServer : jail과 동일하게 운영체제 수준의 가상화. 컴퓨터 시스템의 리소를 분리하는 기술. 

- Solaris Containers: 운영체제 수준의 가상화 기법. zone의 개념을 도입. 각각의 존에 node name, 가상 네트워크에 대한 접근 , 저장장치가 할당됨. 

- Open VZ: 오픈소스로 제공하는 운영체제 수준의 가상화 기술. 리눅스 기반

Process COntainer: cp. memory, disk i/o, network와 같은 컴퓨터 자원에 대한 프로세스의 사용량을 제한하고 격리시키기 위한 기술. cgroup으로 명칭 변경됨. 이후 커널 2.6.24에 공식 포함. 

- LXC : 리눅스 기반 운영체제 수준 가상화 기술. 리눅스 커널이 제공하는 croup 기능과 namespace isolation 기능을 사용. 

cgroup은 컴퓨터 자원에 대한 사용제한과 우선순위를 제공해주는 리눅스 커널이 제공하는 기능

namespace isolation은 process tree, networking, user id 와 같은 운영체제 환경을 application 관점에서 분리시키는 것. chroot의 확장된 형태

- docker : LXC를 이용하여 컨테이너를 쉽게 활용할 수 있는 기술. 0.9 버전에서 LXC를 libcontainer로 대체. Build Once, Run Anywhere 개념 실현

- kubernetes: 컨테이너 오케스트레이션 툴. CNCF에 기증

 

 

이후에는 리눅스 컨테이너를 알아보겠다.

 

 

모두를 위한 클라우드 컴퓨팅 <노서영 지음> 책을 바탕으로 작성하였다.

File System은 항상 모호하게.. 잡히지 않는 개념인 듯하다. 이참에 한 번 정리를 해보자..라고 생각해서 끄적끄적 적어본다. 정확하지 않은 개념이 포함되어 있을 수 있다. 학부 수준이 운영체제를 공부하며 정리한 글임을 명시한다.

File system?


file을 운영체제에서 관리하는 것. 파일 및 파일의 메타데이터, 디렉토리 정보등을 관리하는 것, 파일의 저장 방법을 결정하고 파일을 보호하는 등.. 저장 장치에 데이터를 저장, 액세스 및 구성하는 방법을 정의한다.
왜.. 운영체제 수업을 들을 때 가령 디렉토리를 저장하는 여러 방법을 배우게 된다. 파일 시스템은 이런 식으로 여러 방법 중 하나의 방안을 택하여 구현한 것이라고 생각하면 되려나?

 

partition?

partition은 기본적으로 저장장치 구역을 나눈다. 그냥 드라이브를 '논리적'으로 분할하는 것이다. 디스크 여러 개를 하나의 파티션으로 구성하는 것도 partition이다.

 

volume과는 개념이 조금 다르다. partition은 정말 물리적 저장 장치를 나눈 것이라면, volume은 운영체제가 논리적으로 인식하는 저장 공간을 의미한다.  즉 단일 파일 시스템을 사용하여 액세스 할 수 있는 저장 공간을 의미한다.

partiton -> 파일 시스템으로 포맷 -> volume 

아 추가로 여러 개의 파티션을 합쳐서 하나의 볼륨으로 만드는게 RAID이다.

RAID01도 있는데 이건 0에 하위로 1이 조합된 개념이다. LVM도 찾아보자. Logical Volume Management이다.

partition - https://soft.plusblog.co.kr/46

뭐 아무튼 이렇게 partition을 나눈 후 각각의 partition에 file system을 까는 게 가능하다. (swapping 용도로도 사용 가능하다고 한다)

 

mounting?

https://operatingsystems.tistory.com/entry/OS-File-System-1

위의 블로그를 참고하여 작성한다. /usr/src/sys를 /usr/include/sys를 링크를 통해서 연결하면 두 개는 같은 파일이 된다.

즉 같은 metadata를 가지고 있다. (inode table index도 같겠징) 

 

마운팅이란? 하나의 파일 시스템을 다른 파일 시스템의 어떤 location 에 붙이는 것. 

 

mountpoint(dev)는 비어있는 것이 일반적이라고 한다.

 

https://beatmejy.tistory.com/30

 

이 사진도 이해에 좋은 것 같아서 첨부한다.

 

 

https://operatingsystems.tistory.com/entry/OS-File-System-Protection < 읽어보면 좋을 것 같다.

+ Recent posts