개발자를 위한 인프라 기초 총정리를 재구성했습니다.
출처 : https://futurecreator.github.io/2018/11/09/it-infrastructure-basics/
AIVLE SCHOOL
11주차 _ IT infra _ 4. 서버와 스토리지
리눅스 Linux
하드웨어와 네트워크를 알아봤으니 이제 운영체제에 대해 알아봅시다.
리눅스는 Linus Torvalds 가 개발한 Unix 호환 서버 OS
리눅스 재단에 따르면 퍼블릭 클라우드 워크로드의 90%, 세계 스마트폰의 82%, 임베디드 기기의 62%, 슈퍼컴퓨터 시장의 99%가 리눅스로 동작
다만 리눅스는 서버와 모바일 운영체제로는 많이 쓰이지만 애초에 데스크탑 운영체제로 시작했음에도 데스크톱에서는 많이 쓰이지 않는 편
리눅스는 오픈소스로 여러 기업이나 개인의 참여로 만들어지고 있음
컴퓨터 역사상 가장 많은 인력이 들어간 오픈 소스 프로젝트
아래 그림은 Linux Torvalds 가 구글 그룹스에 처음으로 리눅스를 소개하는 글
리눅스 커널 Linux Kernel
커널이란 OS의 코어가 되는 부분
메모리 관리, 파일 시스템, 프로세스 관리, 디바이스 제어의 역할을 함
안드로이드(Android) 또한 리눅스 커널을 기반으로 만들어짐
디바이스 관리
리눅스 커널은 CPU, 메모리, 디스크, IO 등 하드웨어를 디바이스 드라이버라는 소프트웨어를 이용해 제어
프로세스 관리
리눅스는 프로그램 파일에 쓰여 있는 내용을 읽어서 메모리 상에서 처리하는데 이렇게 실행된 프로그램을 프로세스
이 프로세스를 식별하기 위해 PID(Process ID)를 붙여서 관리하고 각 프로세스에 필요한 자원을 효율적으로 할당
메모리 관리
프로세스에 필요한 메모리를 할당하고 해제
다만 메모리가 부족한 경우에는 하드디스크와 같은 보조기억장치에 가상 메모리 영역을 만들어 사용하는데 이를 스왑(swap)이라고함
쉘 Shell
사용자는 쉘이라는 커맨드라인 인터페이스를 통해 명령어를 커널로 전달할 수 있음
또한 쉘에서 실행하고자 하는 명령을 모아놓은 것을 쉘 스크립트(shell script)라고함
쉘에도 몇 가지 종류가 있음
사용하는 쉘에 따라서 스크립트 작성이 달라짐
이름특징
bash | 명령 이력, 디렉토리 스택, 명령이나 파일명의 자동 완성 기능 등을 지원하는 쉘. 대부분의 Linux 시스템이나 macOS(OS X)에 표준으로 탑재되어 있다. |
csh | C 언어와 비슷한 쉘. BSD 계열 OS에서 주로 사용한다. |
tcsh | csh 를 개선한 버전으로 명령이나 파일명 등의 자동완성 기능 지원. |
zsh | bash 와 호환성이 있고 고속으로 동작하는 쉘. |
파일 시스템
파일 시스템이란 파일에 이름을 붙여서 어디에 저장할지 나타내는 체계
즉 파일을 관리하는 시스템
리눅스 커널은 가상 파일 시스템(Virtual File System, VFS)을 사용
사용자의 입장에서 각 데이터가 저장되어 있는 위치(하드디스크, 메모리, 네트워크 스토리지 등)와 상관없이 그냥 파일처럼 사용할 수 있도록 하는 것
VFS에서는 각 디바이스를 파일로 취급
이름설명
ext2 | 리눅스 운영체제에서 널리 이용되던 파일 시스템. 초기 ext 파일 시스템을 확장했기 때문에 ext2로 불림. |
ext3 | 리눅스에서 주로 사용되는 파일 시스템. 리눅스 커널 2.4.16부터 사용 가능. |
ext4 | ext3의 후속 파일 시스템. 스토리지는 1EiB까지 지원. 파일의 단편화를 방지하는 extent file writing을 지원. |
tmpfs | Unix 계열 OS 에서 임시 파일을 위한 장치. 메모리상에 저장 가능. /tmp 로 마운트되는 경우가 많으며 메모리 상에 저장되어 있어 서버를 재시작하면 파일은 모두 사라짐. |
UnionFS | 여러 개의 디렉토리를 겹쳐서 하나의 디렉토리로 취급할 수 있는 파일 시스템. |
NFS | Unix 에서 이용하는 분산 파일 시스템 및 프로토콜. |
디렉토리 구성
리눅스의 디렉토리 목록은 FHS(Filesystem Hierarchy Standard)라는 규격으로 표준화
대부분의 주요 배포판은 이 FHS를 기반으로 디렉토리를 구성
디렉토리설명
/ | 루트 디렉토리 |
/bin | ls, cp 같은 기본 커맨드를 저장하는 디렉토리. |
/boot | 리눅스 커널(vmlinuz) 등 OS 시작에 필요한 파일을 저장하는디렉토리. |
/dev | 하드디스크, 키보드, 디바이스 파일을 저장하는 디렉토리. |
/etc | OS 나 애플리케이션의 설정 파일을 저장하는 디렉토리. |
/home | 일반 사용자의 홈 디렉토리. root 사용자는 /root 를 홈 디렉토리로 사용. |
/proc | 커널이나 프로세스에 대한 정보가 저장하는 디렉토리. /proc 하위에 있는 숫자 폴더는 프로세스 ID를 의미. |
/sbin | 시스템 관리용 마운트를 저장하는 디렉토리. |
/tmp | 일시적으로 사용하는 파일을 저장하는 임시 디렉토리. 서버를 재시작하면 사라짐. |
/usr | 각종 프로그램이나 커널 소스를 저장하는 디렉토리 |
/var | 시스템 기동과 함께 변하는 파일을 저장하는 디렉토리. |
보안 기능
보안은 범위가 넓어서 대표적인 보안 기능만 살펴봄
계정에 대한 권한 설정
리눅스는 사용자 계정에 권한을 설정할 수 있음
시스템 전체를 관리하는 root 사용자와 그 외 일반 사용자가 있음
또한 미들웨어와 같은 데몬을 작동시키기 위한 시스템 계정도 있음
계정은 그룹으로 묶을 수도 있음
이런 계정과 그룹을 바탕으로 파일이나 디렉토리에 대한 액세스 권한(permission)을 설정 가능
네트워크 필터링
리눅스는 원래 네트워크 상에서 여러 사용자가 이용하는 것을 전제로 만든 OS 이므로 네트워크 관련 기능이 많음
iptables는 리눅스에 내장된 패킷 필터링 및 NAT를 설정할 수 있는 기능
SELinux(Security-Enhanced Linux)
SELinux는 미국 국가안전보장국이 제공하는 리눅스 커널에 강제 액세스 제어 기능을 추가한 기능
리눅스는 root 사용자가 퍼미션에 상관없이 모든 액세스가 가능해서 root 계정이 도난당하면 시스템에 치명적인 영향을 줄 수 있는 단점이 있음
SELinux는 프로세스마다 액세스 제한을 거는 TE(Type Enforcement)와 root 를 포함한 모든 사용자에게 제어를 거는 RBAC(Role-based Access Control) 등으로 root 에게 권한이 집중되는 것을 막아줌
리눅스 배포판 Linux Distribution
보통 리눅스는 커널 위에 각종 커맨드, 라이브러리, 애플리케이션 등을 포함해 배포판이라는 패키지 형태로 배포
굉장히 다양한 배포판이 있음
그도 그럴것이 사람마다 원하는 프로그램이 다르고 오픈소스라서 개인 또는 기업이 직접 수정해서 사용할 수 있기 때문
배포판설명
Debian 계열 | Debian | GNU/LInux 커뮤니티에서 개발한 리눅스 |
KNOPPIX | CD 부팅으로 이용할 수 있는 리눅스 | |
Ubuntu | 풍부한 데스크톱 환경을 제공하는 리눅스 | |
Red Hat 계열 | Fedora | Red Hat 이 지원하는 커뮤니티 Fedora Project 의 리눅스 |
Red Hat Enterprise Linux | Red Hat이 제공하는 상용 리눅스. RHEL. | |
CentOS | RHEL 과 완전한 호환을 지향하는 리눅스 | |
Vine Linux | 일본에서 개발된 리눅스 | |
Slackware 계열 | openSUSE | Novell 이 지원하는 커뮤니티에서 개발된 리눅스 |
SUSE Linux Enterprise | openSUSE 를 기반으로 한 안정화된 상용 리눅스 | |
기타 배포판 | Arch Linux | 패키지 관리 시스템에 Pacman 을 사용하는 리눅스 |
Gentoo Linux | Portage 라는 패키지 관리 시스템을 사용하는 리눅스 |
리눅스 배포판과 관련해 더 다양한 정보가 궁금하시다면 GNU/Linux Distributions Timeline 를 참고
각 배포판을 타임라인으로 정리해놓은 자료
'IT > IT Infra' 카테고리의 다른 글
NPU_프로그래밍 뿐만 아니라 반도체부터 AI에 최적화 할 수 없을까요?" 리벨리온 박성현 대표 (0) | 2023.02.13 |
---|---|
반도체_모빌린트/AI Chips, Startups and Career Paths (0) | 2023.02.13 |
[IT인프라] 11주차_인프라 기초 총정리_4. 네트워크 (0) | 2022.10.28 |
[IT인프라] 11주차_인프라 기초 총정리_3. 하드웨어 (0) | 2022.10.27 |
[IT인프라] 11주차_인프라 기초 총정리_2. 온프레미스와 클라우드 (1) | 2022.10.27 |