
DevOps와 SE를 위한 리눅스 커널 이야기 - 단단한 서버 구축을 위한 12가지 키워드라는 책 스터디를 진행 했었는데 저는 4장 free 명령이 숨기고 있는 것들에 대해서 정리하고 발표 했었습니다. 이 단원의 내용을 블로깅 해둡니다. cpu는 프로세스의 연산 과정에 필요한 리소스 메모리는 프로세스가 연산할 수 있는 공간을 제공해 주는 리소스 cpu가 사람의 뇌 메모리는 사람이 들어 갈 수 있는 공간 프로세스? 프로세스는 메모리라는 공간에 자신이 필요한 함수를 넣어 두거나 변수에 값을 저장하거나 하는 방식으로 연산을 위한 공간을 확보하고 작업을 진행 메모리 부족 연산을 위한 공간을 확보할 수 없고, 시스템 응답 불가 현상, 큰 성능 저하 메모리 사용량 확인하기 free 명령어 전체 메모리 용량, 사용 ..

if(kakao)2022 이게 돼요? 도커 없이 컨테이너 만들기를 정리해봅니다. 저는 ubuntu server 22.04 환경에서 실습을 진행했습니다. 컨테이너 왜 쓸까? 다양한 서버 환경. 서버의 사양, OS 종류, 설치 환경 운영 비용 증가. 애플리케이션이 동작하는 환경 별로 대응이 어려움 서버 환경에 구애 받지 않을 수 있을까? 앱 전용 환경 만들기 패키징 격리 자원 할당 애플리케이션의 전용 환경을 제공합니다. 컨테이너의 사용 요건 리눅스 기술 런타임(컨테이너 관리 도구) 쿠버네티스 실습 환경 구축 root 사용자로 /tmp 디렉토리 밑에서 실습을 진행합니다. sudo -Es cd /tmp # 필요 패키지 설치 apt-get update \ && apt-get -y install gcc \ && a..

쿠버네티스를 시작하기 전에 도커 스웜 모드와 비교해서 쿠버네티스만이 가지는 고유한 특징들을 살펴보자. 모든 리소스는 오브젝트 형태로 관리된다. 도커 스웜 모드에서 컨테이너의 묶음을 표현하기 위해 서비스라는 것을 사용했는데 이것도 컨테이너 리소스의 집합을 정의한 것이기 때문에 일종의 오브젝트라고 볼 수 있다. 그러나 쿠버네티스는 이러한 개념을 더욱 폭넓고 세밀한 단위로 사용한다. 예를 들어 쿠버네티스에서는 컨테이너의 집합(Pods), 컨테이너의 집합을 관리하는 컨트롤러(Replica Set), 심지어 사용자(Service Account), 노드(Node)까지도 하나의 오브젝트로 사용할 수 있다. 쿠버네티스에서 사용할 수 있는 오브젝트는 kubectl api-resources 명령어를 사용해 확인할 수 있다..

도커 데몬 도커의 구조 $ which docker $ ps aux | grep docker 컨테이너나 이미지를 다루는 명령어는 /usr/bin/docker/에서 실행되지만 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행된다. 이는 docker 명령어가 실제 도커 엔진이 아닌 클라이언트로서의 도커이기 때문이다. 도커의 구조는 크게 두 가지로 나뉜다. 하나는 클라이언트로서의 도커이고, 다른 하나는 서버로서의 도커이다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작한다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 이..
umask 파일이나 디렉터리 생성 시 부여되는 기본 허가권 값을 지정하는 명령이다. umask 명령을 실행하면 설정된 umask값을 확인할 수 있다. 파일의 기본 허가권은 666, 디렉터리의 기본 허가권은 777이다. 사용법 $ umask umask 확인 $ umask -S umask 문자로 확인 $ umask 022 umask 022로 변경 $ umask u=rwx,g=rw,o=rw umask의 값을 문자로 설정(011) umask로 기본 허가권 계산하기 umask 077 : 000 111 111 umask 보수 : 111 000 000 디렉터리 기본 허가권 : 111 111 111 umask 보수, 디렉터리 기본 허가권 AND 연산 : 111 000 000 → drwx------ umask 077 :..
man 로컬 시스템에서 여러 참고 문서들을 이용하여 특정 명령이나 자원들의 메뉴얼을 출력하는 영역으로 유닉스에서는 총 8개의 영역으로 되어 있으나 리눅스 커널 부분이 추가되어 총 9개의 영역으로 구성되어 있다. Manual Section 사용법 $ man [options] [section] command [SPACE] : 한 페이지 밑으로 내려간다 [ENTER] : 한 줄 밑으로 내려간다. [b] : 전 페이지로 올라간다. [q] : man 명령을 종료한다. 주요 옵션 -k 키워드 : 해당 키워드로 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다. -f 키워드 : 해당 키워드에 대한 완벽히 일치되는 매뉴얼 페이지에 대한 정보를 보여준다. -w 키워드 : man 명령 실행 시에 호출되는 '메뉴얼 페이지' ..
인증 관련 서비스 인증 관련 서비스의 이해 인증의 개요 하나의 서버에 사용자 관련 정보를 저장하고, 나머지 다수의 다른 서버에 사용자, 암호, 그룹 정보 등을 제공하는 서비스를 말함 NIS, LDAP, 액티브 디렉터리(윈도우용) NIS(Network Information Service)의 개요 Sun Microsystems사에서 개발 네트워크 기반으로 여러 가지 정보를 제공해 주는 서비스 하나의 서버에 등록된 사용자 계정, 암호, 그룹 정보 등을 공유하여 다른 시스템에 제공하는 서비스 초기에는 YP라는 이름으로 출시가 되어 관련 명령어들이 yp로 시작하는 계기가 됨 보안을 강화하고, 확장성과 유연성을 높인 NIS+를 발표 NIS+는 RPC(Remote Procedure Call)에서 데이터 암호화 및 인..
웹 관련 서비스 웹 관련 서비스의 이해 웹의 개요 WWW(World Wide Web) 인터넷에 연결된 컴퓨터들을 통해 문서나 정보를 공유할 수 있도록 구성한 정보 공간이자 서비스 인터넷상에서 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있는 정보검색 시스템 웹 브라우저라고 부르는 프로그램을 이용해서 탐색 HTML이라는 태그를 이용해서 만듬 웹 서비스 구성 요소 웹 서버 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아 정보제공자가 작성한 웹 페이지나 웹 문서를 전달하는 역할을 수행 아파치, IIS, Nginx, GWS, Cherokee, Lighttpd 등이 있음 로그 관리, 인증, 가상 호스팅, 대용량 파일 지원, 대역폭 제한 등의 기능 웹 문서 웹 서버 프로그램에서는 동적인 페이지..
시스템 분석 시스템 로그 분석 및 관리 시스템 로그의 개요 초기에는 syslog라는 패키지를 사용 syslogd라는 데몬이 /etc/syslog.conf 설정 파일을 기반으로 서비스별 로그 파일을 /var/log 디렉터리에 생성 최근에는 rsyslog(rocket-fast system for log processing) 패키지로 대체 rsyslog는 멀티스레드, TCP, SSL, TLS, RELP(Reliable Event Logging Protocol), 데이터베이스, 보내는 목록 제한, 메시지 일부 필터링, 출력 포맷 제어 등의 다양한 기능 제공 rsyslog 주요파일 /etc/rc.d/init.d/rsyslog : 데몬 /etc/rsyslog.conf : 데몬 환경 설정 /etc/sysconfig/..
장치의 설치 및 관리 장치의 설치 및 관리 모듈 프로그램이나 하드웨어 기능단위, 교환 가능한 구성부분. 보통 모듈이 로드되었다는 것은 커널 밖에 존재하던 해당 드라이버가 커널의 일부로 되었다는 뜻이고, 언로드하면 다시 커널과 별도로 존재. 리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 '*.ko' 형태로 생성 각 시스템에서 가능한 모듈은 '/lib/modules/커널버전/kernel' 디렉터리 안에 생성 모듈관련 명령어 lsmod 리눅스 커널에 적재된 모듈 정보를 출력하는 명령 insmod 커널에 모듈을 적재하는 명령. 해당 모듈 파일이 존재하는 디렉터리까지 이동, 의존성이 있는 모듈인 경우에는 적재 못함. [사용법] $ insmod 모듈_파일명 rmmod 커널에서 모듈을 제거하는 명령. ..
2. 파일 시스템 관리 파일 및 디렉터리 관리 소유권과 허가권 소유권은 사용자 소유권과 그룹 소유권으로 나눔 허가권은 user, group, other로 나눔. 허가권은 10개의 영역으로 나눔. 첫 번째는 파일의 타입, 나머지9개는 각각 3개씩 나누고, 첫 세자리는 파일을 소유한 사용자 권한, 두 번째는 해당 그룹에 속한 사용자들 권한, 마지막은 그 외의 다른 사용자들의 권한. 각 세자리는 rwx(읽기, 쓰기, 실행)로 표시. 없는 경우 -로 표시. 파일의 종류 '-' : 일반파일 d : 디렉터리 l : 링크 파일 b : 블록 디바이스 c : 캐릭터 디바이스 p : named pipe(FIFO) s : 소켓 특수 권한 리눅스의 권한 체계는 3계층 3권한. 그러나 이걸로 원할한 시스템 운영 x.(일반 사용..
1. 사용자 관리 root 관리 사용자 분류 root 사용자 일반 사용자 : 로그인이 가능한 사용자, 시스템 계정 숫자 값 형태의 UID(User Identity)로 관리. root는 0이 할당되고 0번 사용자를 슈퍼유저로 인식 일반 사용자는 1번부터 부여. 시스템 계정 시스템의 필요에 의해 생성된 계정. vim, daemon, adm, game 등 root 계정 관리 다른 슈퍼유저가 존재하는지 점검. PAM을 이용하여 root 계정으로 직접 로그인을 막고, su 명령 사용 유도 TIMEOUT 설정 sudo 이용 사용자 계정 관리 사용자 생성 명령어 사용자 계정 생성: useradd [사용법] $ useradd [option] 사용자계정 이름 옵션 -p : 암호를 추가(--password) -d : 홈 ..