리눅스

· 리눅스
이전 글 https://braindisk.tistory.com/141 리눅스 UTS namespace 이전 글 https://braindisk.tistory.com/140 리눅스 namespace 기본 개념 namespace는 하나의 system에서 수행되지만, 각각 별개의 독립된 공간인 것 처럼 격리된 환경을 제공하는 lightweight 가상화 기술입니다... braindisk.tistory.com IPC namespace란 우선 IPC는 inter-process-communication의 약자이며 프로세스 간 통신을 위한 경로를 의미합니다. Linux에서 사용되는 대표적인 IPC 방식은 Pipe, Signal, Message queue 등이 있습니다. 외부 프로세스와의 통신은 주로 Socket을 사..
· 리눅스
이전 글 https://braindisk.tistory.com/140 리눅스 namespace 기본 개념 namespace는 하나의 system에서 수행되지만, 각각 별개의 독립된 공간인 것 처럼 격리된 환경을 제공하는 lightweight 가상화 기술입니다. 최근 유명한 Container 가상화 기술인 Docker나 LXC의 기 braindisk.tistory.com UTS namespace란 system의 hostname을 namespace 별로 격리시켜 주는 기능입니다. 자세히 말하자면, Linux system call 중 하나인 uname에서 utsname이라는 struct에 정의된 식별자 중 nodename을 isolate하는 것입니다. 일단 이해하기 어려운데요,, Linux system cal..
· 리눅스
기본 개념 namespace는 하나의 system에서 수행되지만, 각각 별개의 독립된 공간인 것 처럼 격리된 환경을 제공하는 lightweight 가상화 기술입니다. 최근 유명한 Container 가상화 기술인 Docker나 LXC의 기반이 되는 기술입니다. namespace는 Hardware resource 레벨의 가상화가 아니고, 단지 각각의 고립된 환경만 제공하는 기술입니다. Linux에서 namespace는 6가지로 분류됩니다. UTS namespace IPC namespace PID namespace NS namespace NET namespace USER namespace namespace 구현하기 Linux에서 namespace를 구현할 때는, clone()이나 unshare() 또는 set..
· 리눅스
Cgroup 기본 개념 Cgroup은 Control Group의 약자로 다수의 Process가 포함되어 있는 Process Group 단위로 컴퓨팅 자원의 사용량을 제한하고 격리시키는 Linux의 기능입니다. 여기서 컴퓨팅 자원은 CPU, Memory, Disk, Network를 의미합니다. Cgroup은 주로 Container의 Resource 제어를 위해서 많이 사용됩니다. 위 그림은 Container와 Cgroup의 관계를 나타내고 있습니다. Container가 생성되면 Container의 Process들을 담당하는 Container Cgroup이 생성됩니다. Container의 모든 Process들은 해당 Container Cgroup에 소속됩니다. Container 내부 Process들이 For..
· 리눅스
기본 개념 유닉스 운영체제에서 chroot는 현재 실행 중인 프로세스와 차일드 프로세스 그룹에서 루트 디렉터리를 변경하는 작업입니다. 이렇게 수정된 환경에서 실행되는 프로세스는 지정된 루트 디렉터리 밖의 파일들에 접근할 수 없으므로 (즉, 일반적으로는 접근이 불가능하므로) chroot 감옥이라고 부릅니다. 사용 목적 chroot는 다음의 목적에 유용하게 쓰일 수 있습니다. 테스트 및 개발 의존성 제어 호환성 복구 권한 분리 예시로 bash를 사용하는 어떤 프로세스를 chroot로 격리하고자 합니다. 격리된 환경에서는 밖의 파일들에 접근할 수 없으므로 해당 격리 환경에 bash를 사용하기 위한 의존성을 주입해주어야 합니다. 먼저 ldd 명령어를 사용하여 /bin/bash의 의존성을 확인합니다. $ ldd ..
· 리눅스
서버가 죽었다는 이야기를 듣고 후다닥 문제를 파악해보았다. 오늘 뭔 일이 있긴 했다. (알고보니 프론트엔드의 무한 렌더링 문제였다) 일단 서버를 다시 동작시키고 메모리 사용량을 확인해보았는데 메모리가 좀 부족해보였다. 워낙 사양이 낮은 t2.micro에 스프링 앱을 두 개나 돌리고 있으니 그럴만 했다. 여기에 사용자 요청이 조금만 들어오면 메모리가 부족해서 서버가 쉽게 다운 될 수 있으므로 swap 메모리를 확보해두기로 하였다. 사용 가능한 하드웨어 용량 확인 4GB 스왑 파일 생성 sudo dd if=/dev/zero of=/swapfile bs=128M count=32 # 128M x 32 권한 설정 sudo chmod 600 /swapfile 스왑 영역(파일)으로 지정 sudo mkswap /swa..
@xftg77g
'리눅스' 카테고리의 글 목록