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
이외에도mke2fs
는ext2
,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
파일의 필드-
- 파일 시스템 장치(레이블명)
-
- 마운트 포인터(디렉터리명)
-
- 파일 시스템 형식(ext2, ext3 등)
-
- 옵션(Read Only 및 Read Write)
-
- 파일 점검 옵션 :
0
,1
- 파일 점검 옵션 :
-
fstab
옵션default
: 일반적인 파일 시스템auto
: 부팅 시에 자동으로 마운트 함.exec
: 실행 파일이 실행되게 허용suid
:setuid
와setgid
를 허용ro
; 읽기 전용 파일 시스템rw
: 읽고 쓰기가 가능한 파일 시스템user
: 일반 사용자도 마운트할 수 있는 파일 시스템nouser
:root
만 마운트할 수 있는 파일 시스템noauto
: 부팅 시에 자동으로 마운트하지 않음.noexec
: 실행 파일이 실행되지 못함.nosuid
:setuid
와setgid
를 허용하지 않음.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
를 실행함.
- 만약 CD-ROM에서 CD를 빼려면 마운트를 해제하고,
# 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 |