리눅스에 대해 배웠다.
오늘은 실습이 주를 이뤘다. 각각의 명령어가 무슨 일을 하는지 모르다 보니 사실상 한컴타자연습 느낌.. 이렇구나 하고 넘어가는 정도라 다시 정리…!
CGroup(Control Group)
개념
- 프로세서가 사용하는 자원(CPU, 메모리, 디스크, I/O, 네트워크 대역폭 등) 관리 및 제한
- 애플리케이션의 성능 최적화 및 제어
- 프로세스를 그룹으로 묶고 사용할 수 있는 자원을 제한, 제어하는 방식
주요 기능
- 리소스 제한 : 자원을 제한해 안정성 보장
- 리소스 우선순위 : 중요도에 따른 자원을 할당 및 제한
- 리소스 계정 : 그룹 별 자원 사용량 모니터링 및 통계 정보 제공
- 리소스 격리 : 다른 프로세서 그룹 간의 자원 사용을 격리하여 타 그룹에 영향이 미치지 않도록 함
구조
- cpu : 사용량 제한 및 보장
- cpuacct : 사용량 모니터링
- memory : 사용량 제한 및 통계 제공
- blkio : 블록(디스크) I/O 사용량 제한 및 모니터링
- net_cls : 네트워크 트래픽 분류 및 제한
- freezer: 프로세스 중단, 재개
- devices: 장치 접근 제어
- hugetlb: 큰 페이지 메모리 사용량 제한
- perf_event: 성능 이벤트 모니터링
사용법
|
|
NameSpace
개념
- 프로세스가 시스템 리소스를 격리하여 독립된 환경에서 실행되도록 하는 기술
- 컨테이너 기술에서 중요하게 사용
종류
- Mount Namespace : 파일 시스템 마운트를 격리하여 각각 독립적인 파일 시스템 트리를 갖고 있다.
- Process ID Namespace : 프로세스 ID 격리하고 독립된 프로세스 ID 공간을 가지므로, 네임스페이스 마다 동일한 PID를 가질수 있다.
- Network Namespace(net) : 네트워크 장치, IP 주소, 포트 번호 등을 격리하여 독립적인 네트워크 스택을 가지며 네임스페이스 간 장치를 독립적으로 사용 가능
- User Namespace : 사용자와 그룹 ID를 격리하여 비루트 사용자가 네임스페이스 내에 루트 권한을 가질수 있다.
- IPC Namespace(ipc) : 프로세스간 통신(메시지, 큐, 세마포어, 공유 메모리 등)을 격리하여 타 네임스페이스와 충돌 없이 사용 가능하다.
- UTS Namespace(uts) : 호스트와 도메인 이름을 격리하여 독립적으로 사용 가능, 이는 컨테이너화 된 시스템 식별 정보를 별도 설정하기 유용하다.
사용법
|
|
Chroot(Change Root)
개념
- 특정 디렉토리를 시스템의 루트 디렉토리로 설정하여 그 안에서 실행되는 프로그램이 해당 디렉토리를 루트로 인식(chroot jail)
- 시스템 일부를 격리하여 제한된 환경에서 테스트나 보안 목적으로 사용
- 특정 디렉토리를 빠져나가지 못하기 때문에 감옥 이라고도 부른다.
주요 기능
- 보안 : 사용자가 시스템의 다른 부분에 접근하지 못하도록 한다.
- 테스트 : 새로운 소프트웨어나 설정을 격리된 환경에서 테스트
사용법
|
|
UDS(Unix Domain Socket)
개념
- 동일한 컴퓨터 내의 프로세스 간 통신(Inter-Process Communication, IPC)를 위한 매커니즘 중 하나
- TCP/IP 네트워크 소켓과 유사하지만 로컬 파일 시스템을 통해 통신
주요 특징
- 로컬 통신 : 호스트 내에세 실행되는 프로세스 간의 통신을 지원해 네트워크 소켓에 비해 성능 우수
- 파일 시스템을 이용한 주소 지정 : 파일 시스템 경로를 사용해 소켓을 식별하며 /tmp/mysocket과 같은 파일 경로 사용
- 데이터 전송 속도 : 네트워크 계층을 거치지 않아 빠른 데이터 전송 가능(네트워크 스택의 오버헤드를 줄이기 때문)
- 보안 : 파일 시스템 권한 설정을 통해 접근 제어, 특정 사용자나 프로세스만 소켓에 접근하도록 제한
사용법
|
|
|
|
|
|
OverlayFS
개념
- 여러 디렉토리를 하나의 계층적 파일 시스템으로 병합 후 제공
- 읽기 전용 파일 시스템에 쓰기 가능한 레이어를 추가해 기본 파일 시스템을 변경 없이 수정, 추가 가능
주요 특징
- 파일 시스템 계층화 : 읽기 전용 및 쓰기 가능한 계층을 병합 후 사용
- 스냅샷 및 버전관리 : 파일 시스템의 상태를 스냅샷으로 저장 필요 시 복원
- 컨테이너 : Docker와 같은 컨테이너 기술에서 이미지 레이어링을 위해 사용
구조
- Lowerdir : 읽기 전용 파일 시스템
- Upperdir : 쓰기 전용 파일 시스템
- Workdir : Lowerdir과 Upperdir의 변경사항 추적을 위한 디렉토리, Docker에서 해당 디렉토리가 없으면 동작x
- Merged : Lowerdir과 Upperdir을 합쳐서 만든 현재 상태의 파일 시스템 디렉토리
작동방식
- 새로운 파일 생성 : Upperdir에 파일 생성
- 기존 파일 읽기 : 파일이 Upperdir에 있으면 Upperdir에서 읽고 없으면 Lowerdir에서 읽음
- 기존 파일 수정 : 파일이 Upperdir에 없으면 Lowerdir에서 Upperdir로 복사 후 수정
- 파일 삭제 : 파일이 Upperdir에 있으면 삭제, Lowerdir에 있으면 Upperdir에 삭제 마커 생성
사용법
|
|