별의 공부 블로그 🧑🏻‍💻
728x90
728x170

46. 리눅스 개요

1. 리눅스(Linux)

  • 리눅스의 윈도우, 유닉스, iOS와 같은 운영체제의 한 종류
  • 컴퓨터 시스템의 하드웨어를 효율저으로 관리하기 위한 시스템 소프트웨어
  • 1989년 핀란드 헬싱키 대학에 재학 중이던 리누스 토르발스(Linus Torvalds) 가 개발한 것
  • 유닉스(Unix)를 기반으로 개발
  • 공개용(Open Source) 운영체제
  • 기존 유닉스와 다르게 대형 서버를 위해서 개발된 운영체제가 아닌, 개인 컴퓨터나 워크스테이션을 위해 개발됨.
    • 소스 코드부터 운영체제 사용까지 모두 무료로 공개된 운영체제
  • 리눅스를 설치하고 사용자(End User)가 자신의 운영체제를 수정하여 사용할 수 있음.

 

2. 리눅스의 특징

(1) 다중 사용자(Multi User)

  • 리눅스는 여러 명의 사용자가 네트워크를 통해서 접속하여 컴퓨터 시스템을 사용할 수 있도록 지원함.
  • 다중 사용자를 지원하기 때문에 사용자 별 권한 관리와 자원 관리를 지원함.

(2) 다중 작업(Multi-Tasking)

  • 운영체제 내에서 여러 개의 프로세스(Process)를 동시에 실행시켜 CPU를 스케줄링하여 사용할 수 있음.
  • 여러 개의 프로세스가 동시에 실행되기 때문에 각 프로세스 간에 작업 순서 조정과 같은 스케줄링 기능을 가지고 있음.
  • 이러한 스케줄링은 기본적으로 시간(Time Slice) 사용량만큼 자원을 할당하여 사용할 수 있게 하는 시분할 시스템(Time Sharing System) 을 지원함.

(3) 다중 처리기(Multi-Processor)

  • 컴퓨터 시스템에 1개 이상의 CPU가 탑재되어 있는 경우, 여러 개의 CPU를 지원해주는 다중 처리기를 지원함.
  • 작업을 병렬적으로 처리하여 시스템을 효율적으로 사용함.

(4) 다중 플랫폼(Multi-Platform)

  • 리눅스는 여러 종류의 CPU를 지원함.
    • 인텔
    • Sun Sparc
    • Power PC
  • 대부분의 플랫폼을 지원하고 성능을 낼 수 있음.

(5) 계층형 파일 시스템(File System)

  • 리눅스 파일 시스템
    • 계층형 구조
    • 루트(Root)를 기반으로 하위 디렉터리를 이루는 계층형 파일 시스템
    • 디렉터리를 쉽게 추가하고 관리할 수 있음.
      • 파일 시스템을 효율적으로 관리할 수 있음.
  • 리눅스 뿐만 아니라 윈도우, 유닉스 또한 계층형 파일 시스템으로 구성되어 있음.

(6) POSIX와 호환

  • POSIX
    • 유닉스 시스템의 표준 인터페이스를 정의한 것
    • 다양한 유닉스 계열의 운영체제의 공통적인 API를 제시함.
    • 유닉스 계열 시스템 간에 이식성을 높이기 위해서 IEEE가 지정한 인터페이스 규격
  • 리눅스는 POSIX 표준을 따름.

(7) 우수한 네트워킹(Networking)

  • 리눅스의 강력한 네트워킹 기능은 다양한 프로토콜을 지원함.
    • TCP/IP
    • IPX/SPC
    • Appletalk
    • Bluetooth
  • 리눅스 설치 후에 IP 주소, 게이트웨이(Gateway), 서브넷(Subnet) 등을 설정하면 바로 네트워크를 사용할 수 있음.

(8) 가상 콘솔(Virtual Console)

  • 리눅스는 기본적으로 6개의 가상 콘솔이 있음.
    • 각 창마다 서로 다른 작업을 수행할 수 있어서 물리적 모니터의 한계를 극복함.

(9) 가상 기억장치(Virtual Memory)

  • 주기억장치(Main Memory)의 한계를 극복하기 위해서 보조기억장치를 마치 주기억장치처럼 사용할 수 있게하여 주기억장치의 공간을 증대시키는 방법
  • 가상 기억장치는 기억 공간을 확대하여 기억장치를 효율적으로 사용할 수 있도록 함.
    • 시스템을 안정적으로 사용할 수 있게 됨.

 

3. 리눅스의 구조

  • 리눅스는 운영체제(Operating System)의 한 종류
    • 운영체제가 가지는 기능은 기본적으로 모두 가지고 있음.
      • 프로세서 관리
      • 메모리 관리
      • 입출력 장치 관리
      • 프로세스 관리
      • 사용자 관리
      • 보안 관리
      • 로그 관리
      • 하드웨어 관리
    • 파일들을 관리하기 위한 파일 시스템을 갖고 있음.

(1) 커널(Kernel)

  • 리눅스는 커널(Kernel), 셀(Shell), 파일 시스템(File System) 으로 구성됨.
  • 커널은 운영체제의 핵심 기능으로 프로세서, 프로세스, 메모리 입출력 장치 등의 기능을 수행함.
  • 커널(Kernel)의 기능
    • 프로세서(Processor) 사용 관리
    • 주기억장치(Main Memory) 사용 관리
    • 실행 중인 프로세스 관리 (Process Management)
    • 주변 장치와 입출력 관리 (Device Management)
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 157540 100192 562160    0    0     1     5    2    1  0  0 100  0  0

(2) 셀(Shell)

  • 사용자의 명령을 입력 받아서 실행하기 위한 인터프리터(Interpreter) 기능 수행
  • 예) 사용자가 ps 명령어를 입력하면 프로세스 정보를 출력해줌.
  • 셀(Shell)의 기능
    • 사용자의 명령어 실행
    • 사용자가 명령어를 입력하면 바로 실행시키는 인터프리터 기능을 제공함.
    • 리눅스 표준 셀 : bash
      • 이외에도 다양한 셀 제공
        • C Shell
        • Korn Shell
# which sh                       // which 명령은 실행하는 프로그램의 경로를 출력함.
/bin/sh
# sh                             // 셀(Shell) 실행
# ls                             // 파일 리스트를 출력하는 ls 명령어 실행
Study

(3) 파일 시스템(File System)

  • 저장 장치(디스크, USB, SSD 등)에 보관되어 있는 파일을 관리하기 위한 것
  • 디렉터리를 변경, 삭제하고 디렉터리 내에 파일을 생성, 변경, 삭제 할 수 있음.
  • 파일 시스템(File System)의 기능
    • 사용자 파일과 디렉터리 관리
    • 파일과 디렉터리 등에 권한을 설정하고 해제
    • 파일의 연결 정보인 링크를 관리
      • 파일의 소유자, 그룹, 파일 생성 일자, 변경 일자 등을 관리
  • 파일 시스템은 루트(Root) 디렉터리를 중심으로 하위 디렉터리로 구성됨.
    • 이러한 형태를 계층형 파일 시스템이라고 함.

(4) 리눅스 계층

  • 커널(Kernel)
    • 주기억장치에 상주하여 사용자 프로그램을 관리함.
    • 리눅스 운영체제의 핵심.
    • 커널 구성
      • 프로세스
      • 메모리
      • 입출력(I/O)
      • 파일 관리
  • 셀(Shell)
    • 명령어 해석기/번역기
    • 사용자 명령의 입출력 수행하여 프로그램 실행
    • 종류
      • Bourne 셀
      • C 셀
      • Korn 셀
  • 파일 시스템(File System)
    • 여러 가지 정보를 저장하는 기본적인 구조
    • 시스템 관리를 위한 기본 환경을 제공하는 계층적인 트리 구조 형태
      • 디렉터리
      • 서브 디렉터리
      • 파일 등

 

4. 리눅스 파일 시스템

  • 파일 시스템을 생성하기 위해서는 하드 디스크를 초기화하고, 필요하면 파티션(Partition)을 수행하여 하드 디스크를 분할해야 함.
  • 파티션을 수행하는 리눅스 명령어 : fdisk
  • 윈도우의 C 드라이브, D 드라이브와 마찬가지로 1개의 하드 디스크를 여러 개로 분리하여 분리 공간에 따라 다른 용도로 사용할 수 있음.

(1) fdisk

  • 하드 디스크 초기화 및 파티션을 생성하는 것
  • fdisk [-l][-v][-s 파티션][장치명] 형태로 실행함.
# fdisk -l                    // 파티션 정보 확인
Disk /dev/loop0: 99.2 MiB, 103964672 bytes, 203056 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 55.5 MiB, 58159104 bytes, 113592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 99.2 MiB, 104030208 bytes, 203184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 55.5 MiB, 58142720 bytes, 113560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop5: 32.3 MiB, 33894400 bytes, 66200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop6: 33.3 MiB, 34959360 bytes, 68280 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/xvda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb7a20700

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     2048 62914526 62912479  30G 83 Linux
  • fdisk 옵션
    • -l : 현재 파일 시스템 목록 확인
    • -v : 버전 정보 확인
    • -s 장치명 : 입려 장치 크기 출력
    • -d : 파티션 삭제
    • -n : 새로운 파티션 생성
    • -p : 현재 파티션 설정 상태 확인

(2) mkfs

  • 하드 디스크를 파티션 했으면, 해당 파티션에 파일 시스템을 생성해야 함.
  • 하드 디스크를 생성하기 위해서 mkfs 명령어를 실행하면 됨.
  • mkfs는 리눅스에서 파일 시스템을 생성하는 명령어로 mkfs [옵션][장치이름] 형태로 실행함.
# mkfs -V                // 파일 시스템 버전 확인
mkfs from util-linux 2.31.1
  • mkfs 옵션
    • -V : 실행되는 파일 시스템의 특정 명령어 등 모든 정보 출력
    • -t : 파일 시스템 형식 선택
    • -c
      • Bad Block 검사
      • Bad Block 리스트 초기화
        • -l : 파일로부터 초기 Bad Block을 읽음.
    • -v : 현재 진행 사항 출력
  • 파일 시스템 생성 예제
#mkfs -t ext4 /dev/sdb1            // ext 파일 시스템을 생성함.
  • mkfs 이외에도 mke2fsext2, ext3, `ext4 파일 시스템을 생성하는 명령임.
    • mke2fs -j : 저널링 파일 시스템을 ext3로 생성

(3) fsck

  • 파일 시스템의 무결성을 검사하는 명령어
  • 파일 시스템에는 상위 디렉터리, 하위 디렉터리 그리고 파일 간의 링크 정보(심볼릭 링크) 등을 가지고 있어야 함.
    • 이러한 정보에 오류가 발생되면 파일 시스템의 구조를 파악할 수 없음.
      • 이때는 리눅스의 fsck를 통해서 파일 시스템의 무결성을 검사하고, 오류가 발생하면 수정할 수 있음.
  • fsck는 기본적으로 부팅 단계에서 자동적으로 실행되고, 필요에 따라 직접 실행할 수도 있음.
# fsck -A -V                            // fsck로 파일 시스템의 무결성을 검증함.
fsck from util-linux 2.31.1
Checking all file systems.
  • fsck 옵션
    • -s : 대화형 모드에서 여러 파일 시스템을 점검할 때, fsck 동작을 시리얼화 함.
    • -t : 검사를 수행할 때 파일 시스템을 지정
    • -A : /etc/fstab 파일에 기술된 파일 시스템을 모두 검사
    • -N : 검사는 수행하지 않고, 수행될 내용을 출력함.
    • -P : 병렬 처리를 수행하여 루트 파일 시스템 점검
    • -R : 루트 파일 시스템은 제외
    • -V : 명령을 포함하여 세부 내역을 출력함.
  • 파일 시스템 옵션
    • -a : 무결성 검사 후에 자동 검사 수행
    • -r : 대화형 모드를 수행하여 오류 수정
    • -n: 오류를 수정하지 않고 표준 출력으로 출력
    • -y : 특정 파일 시스템에 대해서 오류를 자동 수정함.

(4) mount

  • 리눅스 컴퓨터 시스템 A에 tmp라는 디렉터리가 있을 때, tmp 디렉터리를 리눅스 컴퓨터 시스템 B에서 연결하고 사용하는 것이 마운트(Mount) 임.
  • 단순하게 디렉터리만 연결하여 사용하는 것이 아니라, CD-ROM, USB 등과 같은 장치를 연결할 때도 사용됨.
  • mount라는 명령어를 실행하여 연결을 수행할 수 있음.
    • 리눅스에서는 특정 디렉터리를 연결할 경우, mount 명령을 사용함.
  • -a 옵션은 명시된 파일 시스템에 대해서 마운트를 수행함.
# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=486688k,nr_inodes=121672,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=100212k,mode=755)
/dev/xvda1 on / type ext4 (rw,relatime,discard)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13836)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
/var/lib/snapd/snaps/amazon-ssm-agent_2996.snap on /snap/amazon-ssm-agent/2996 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core18_1988.snap on /snap/core18/1988 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/amazon-ssm-agent_3552.snap on /snap/amazon-ssm-agent/3552 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_10908.snap on /snap/core/10908 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core18_1997.snap on /snap/core18/1997 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_10958.snap on /snap/core/10958 type squashfs (ro,nodev,relatime,x-gdu.hide)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=100208k,mode=700,uid=1000,gid=1000)
  • mount 명령
mount [-hV]
mount -a [-fnrvw] [-t 파일 시스템 유형]
mount [-fnrvw] [-o 옵션[, ...]] 장치 | 디렉터리
mount [-fnrvw] [-t 파일 시스템 유형] [-o옵션] 장치 디렉터리
  • mount 명령 옵션
    • -v : 자세한 정보 출력 모드
    • -f : 마운트 할 수 있는지 점검
    • -n : /etc/mtab 파일에 쓰기 작업을 하지 않고 마운트
    • -r : 읽기만 가능하도록 마운트 함.
    • -w : 읽기 및 쓰기 모드로 마운트 함.
    • -t vfstype : -t 다음에 쓰이는 인수로 파일 시스템 유형 저장
  • fstab 파일
    • mount를 수행할 때 참조하는 파일
    • 파일 시스템 마운트에 관한 정보를 가지고 있음.
# cat /etc/fstab
LABEL=cloudimg-rootfs    /     ext4    defaults,discard    0 0
[파일 시스템 장치][마운트 포인트][파일 시스템 종류][옵션][덤프][파일점검 옵션]
  • fstab 파일의 필드
      1. 파일 시스템 장치(레이블명)
      1. 마운트 포인터(디렉터리명)
      1. 파일 시스템 형식(ext2, ext3 등)
      1. 옵션(Read Only 및 Read Write)
      1. 파일 점검 옵션 : 0, 1
  • fstab 옵션
    • default : 일반적인 파일 시스템
    • auto : 부팅 시에 자동으로 마운트 함.
    • exec : 실행 파일이 실행되게 허용
    • suid : setuidsetgid를 허용
    • ro ; 읽기 전용 파일 시스템
    • rw : 읽고 쓰기가 가능한 파일 시스템
    • user : 일반 사용자도 마운트할 수 있는 파일 시스템
    • nouser : root만 마운트할 수 있는 파일 시스템
    • noauto : 부팅 시에 자동으로 마운트하지 않음.
    • noexec : 실행 파일이 실행되지 못함.
    • nosuid : setuidsetgid를 허용하지 않음.
    • usrquota : 개별 사용자의 쿼터 설정이 가능한 파일 시스템을 의미함.
    • grpquota : 그룹별 쿼터 설정이 가능한 파일 시스템
  • 덤프(Dump)
    • 0 혹은 1
      • 0 : 덤프가 실행되지 않음.
      • 1 : 백업을 위해서 덤프가 가능함.
  • 파일 점검 옵션
    • 0 : 부팅 시에 fsck가 실행되지 않음.
    • 1 : 루트 파일 시스템
    • 2 : 루트 파일 시스템을 제외한 나머지 파일 시스템
  • umount
    • 마운트를 해제하는 명령
    • umount [-nv] 장치 혹은 디렉터리명 형태로 사용
    • 옵션
      • -n : /etc/mtab 파일을 변경하지 않고 마운트 해제
      • -v : 정보 출력
      • -a : /etc/mtab 파일에 지정된 파일 시스템 모두 해제
      • -t 파일 시스템명 : 지정된 파일 시스템 해제
  • CD-ROM과 같은 하드웨어는 마운트를 수행해서 사용할 수 있음.
    • 만약 CD-ROM에서 CD를 빼려면 마운트를 해제하고, eject 명령을 실행하면 됨.
    • 만약 /mnt/cdrom으로 마운트 되어 있다면 umount/mnt/cdrom을 실행하고 eject를 실행함.
# mount /dev/cdrom /mnt/cdrom                        // CDROM을 마운트함.
# umount /mnt/cdrom                                  // CDROM을 마운트 해제함.
# eject                                              // CD를 꺼냄

 


 

내용 출처 : 이기적 네트워크관리사 1·2급 필기 (임호진, 황성하 공저, 영진닷컴)

 

728x90
그리드형(광고전용)

'Certificate > Network Manager' 카테고리의 다른 글

50. 리눅스 명령어  (0) 2021.04.28
49. 리눅스 권한 관리  (0) 2021.04.28
48. 리눅스 계정 관리  (0) 2021.04.28
47. 리눅스 파일 시스템  (0) 2021.04.27
45. FTP 서버  (0) 2021.04.27
44. 액티브 디렉터리(Active Directory) 구조  (0) 2021.04.26
43. 액티브 디렉터리(Active Directory)  (0) 2021.04.26
42. DNS 레코드(Record)  (0) 2021.04.26
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖