웹기획자의 생각정리함

개발자를 위한 인프라 기초 총정리 - 운영체제 본문

웹기획 .

개발자를 위한 인프라 기초 총정리 - 운영체제

webplanner 2021. 5. 21. 09:15

리눅스 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에서는 각 디바이스를 파일로 취급합니다.

https://unix.stackexchange.com/questions/437285/is-the-virtual-file-system-vfs-a-program-or-is-it-just-an-interface

이름설명

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 를 참고하세요. 각 배포판을 타임라인으로 정리해놓은 자료입니다.