구름 쿠버네티스 전문가 과정 6기 - 11일차
리뷰 (Review)
프로세스 (Process)
- 실행 중인 프로그램
- 프로세스 식별 번호 (Process ID) 를 통해 관리
- Kernel에서 PID를 이용하여 프로세스를 관리
- PID는 Kernel에 의해 관리되므로 임의로 부여할 수 없음
- 프로세스 관리는 계층적으로 관리 (Tree 구조)
- 모든 프로세스는 부모 프로세스 식별 번호가 있고, 이는 PPID (Parents PID)로 표시
- 부모 프로세스의 역할
- 자식 프로세스 생성
- 자식 프로세스 종료에 따른 처리 - Kernel에 종료 알림
- 프로세스 상태에 따른 종류
- 정상 프로세스
- 고아 프로세스
- 좀비 프로세스
- 프로세스 실행 형태에 따른 종류
- foreground 프로세스
- background 프로세스
- daemon 프로세스
- ps - 현재 동작중인 프로세스 확인 명령
- ps [옵션]

- grep - 파일 내용 또는 결과 내용에 대하여 패턴으로 검색
- grep [옵션] <검색 패턴> <파일>

- pstree - 프로세스 계층 형식으로 출력
- pstree [옵션]
시그널 (signal)
- 프로세스 간 통신 방법의 한 형태
- kill - 시그널 발생 명령
- kill [옵션, 시그널 번호] <PID>
top
- 전체 프로세스 실시간 실행 상태 모니터링

foreground / background 프로세스
- foreground 프로세스 생성 및 전환
- shell에서 명령 실행
- fg <%작업번호> - background 프로세스를 foreground 프로세스로 전환
- background 프로세스 생성 및 전환
- shell에서 명령 실행 시 명령 마지막에 & 추가해서 background로 실행
- ctrl + z 키 입력을 통해 background로 전환
- bg <%작업번호> - background로 전환
- jobs - 현재 shell의 background 작업 목록 출력
Linux 개요
프로세스 관리
crontab
- 정해진 시간에 정해진 동작 반복 실행
- crontab [옵션] <파일명>
- crontab 파일 편집 명령
- -e : crontab 파일 편집
- -l : crontab 파일 내용 출력
- -r : crontab 파일 삭제
- crond (daemon Process)에 의해 crontab 파일 내용을 참조하여 자동으로 정해진 작업 수행
- 실습 예시) 30 * * * * /usr/bin/ls -F / > ~jwlish/cron.out
- 매시간 30분마다 자동으로 /usr/bin/ls -F / > ~jwlish/cron.out 명령 실행
- 30 : 분 (0 ~ 59)
- * : 시 (0 ~ 23)
- * : 일 (1 ~ 31)
- * : 월 (1 ~ 12)
- * : 요일 (0 ~ 6)
- /usr/bin/ls -F / > ~jwlish/cron.out : 작업 내용
- * 는 설정하지 않는다는 의미
- crontrab -e 명령으로 crontab 파일에 정해진 시간에 작업할 내용을 등록
- crontab 파일 위치 - /var/spool/cron
Linux 파일 시스템
파일 시스템 (File System)
- 파일과 디렉토리 집합을 구조적으로 관리하는 체계
- 어떤 구조를 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재
- 보조 기억 장치(HDD, SSD, ...)에 구성하는 형식
- Linux는 보조 기억 장치 외에도 I/O Device를 사용할 때 해당 장치에 적합한 파일 시스템 적용
- Linux 파일 구조
- inode block - 파일 정보 (inode 번호, 유형, 권한, 소유자, ...)
- data block - 실제 데이터 저장, 기본 크기 4kb
- Linux 파일 종류
- 일반 파일 - 일반 데이터 저장 파일
- inode block + data block
- 일반 파일 하나의 data block 내용
- inode 번호 - 파일 식별자
- 파일 유형
- 파일 권한
- 파일 소유자
- 파일 소유자 그룹
- 파일 생성 / 수정 날짜 시간
- 파일 크기
- 디렉토리 파일 - 디렉토리 정보 저장 파일
- 디렉토리 계층 구조
- Linux 전체 파일과 디렉토리를 어떤 구조로 정리하고 관리할 것인가를 정의한 것
- 실제 파일이 저장되어있는 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근 가능
- 디렉토리 파일은 계층 구조상의 내용을 저장한 파일
- inode block + data block 일반 파일과 구조는 같지만 data block의 내용이 상이
- 디렉토리 파일 하나의 data block 내용
- inode 번호
- 파일명
- 디렉토리 계층 구조
- 특수 파일
- 디바이스 파일
- 디바이스 연결 목적의 파일, 데이터 저장 기능은 없다.
- Linux는 모든 디바이스에 연결하고 사용하기 위해서는 해당 디바이스 연결을 위한 파일이 필요하다.
- /dev 디렉토리에 저장되어 있다.
- 디바이스 파일 종류
- character 디바이스 파일 - 입출력을 character 단위로 수행하는 디바이스 연결
- block 디바이스 파일 - 입출력을 block 단위로 수행하는 디바이스 연결
- 디바이스 파일은 파일 크기가 없고, 디바이스 여러 개를 식별하기 위한 번호 부여
- major 번호 - 장치 식별 번호
- minor 번호 - 해당 장치가 여러 개인 경우 식별 번호
- 파이프 파일 - 프로세스 간 데이터 공유를 위한 파일
- 소켓 파일 - 프로세스 간 데이터 공유를 이용하여 socket을 이용할 때 사용하는 파일
- 디바이스 파일
- 일반 파일 - 일반 데이터 저장 파일
- 저널링
- 데이터를 디스크에 기록하기 전에 먼저 저널에 수정 사항을 기록 - 복구 정보
- 디스크에 데이터를 기록하기 전에 문제가 생긴 경우 저널의 기록을 보고 빠르게 복구 가능
- ext4
- Extended File System 약자
- Linux 기본 (표준) 파일 시스템
- ext2와 ext3 호환 유지
- 1EB (Exa byte, 1EB = 1,024 * 1,024TB) 이상의 볼륨과 16TB 이상 파일 지원
- 서브 디렉토리 수가 64,000까지 지원
- 온라인 조각 모음 지원
- https://ko.wikipedia.org/wiki/Ext4
ext4 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. ext4개발사Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh 등정식 명칭4차 확장 파일 시스템Fourth extended file system도입안정
ko.wikipedia.org
- XFS
- eXetended File System 약자
- 64bit 파일 시스템
- 최대 16EB까지 지원
- CentOS7에서는 기본 파일 시스템으로 사용, ext4도 병행 사용
- Linux 지원 파일 시스템
- msods - MS-DOS 파티션 사용을 위한 파일 시스템
- iso9660 - CD-ROM / DVD 표준 파일 시스템, 읽기 전용
- nfs - netwrok file system, 원격 서버 디스크 연결 시 사용하는 파일 시스템
- NAS - Network 이용하여 HDD / SSD 공유
- ufs - unix file system, 유닉스 표준 파일 시스템
- vfat - Windosw 95, 98, NT 지원 파일 시스템
- Windows에서 NTFS 이전에 사용하던 파일 시스템 - FAT
- 요즘은 FAT을 개선한 FAT32 사용
- hpfs - HPFS 지원 파일 시스템
- ntfs - Windows NTFS 지원 파일 시스템
- sysv - 유닉스 시스템 V 지원 파일 시스템
- hfs - 맥 OS HFS 지원 파일 시스템
- Linux 가상 파일 시스템 (Virtual File System)
- 메모리에 생성되어 관리되는 파일 시스템
- 특수 용도로 사용, 임시 사용인 경우 활용
- 필요시에만 사용하고 없어지는 파일 시스템
- swap - swap 영역을 관리하기 위한 파일 시스템
- tempfs
- Temporary File System
- 메모리에 임시 파일 저장 목적으로 사용
- /tmp 디렉토리의 파일 시스템
- procs
- proc 파일 시스템
- /proc 디렉토리의 파일 시스템
- Linux Kernel 상태 정보를 파일로 저장하여 관리
- ramfs - 램 디스크 지원 파일 시스템
- rootfs
- Root File System
- / (root) 디렉토리 파일 시스템
- 시스템 초기화 및 관리 목적
- Linux 설치 시 필수 파일 시스템 (최소)
- rootfs - / (root) 디렉토리 구성
- swap - swap 용도
- /proc/filesystems - 현재 시스템이 지원하는 파일 시스템
- nodev - 해당 파일 시스템이 블록 장치와 연결되어 있지 않은 가상 파일 시스템을 의미
- /proc/<숫자> - 개별 Process에 대한 정보 저장 디렉토리
- /proc/<문자> - Linux Kernel에서 관리하는 일반적인 정보를 저장하는 디렉토리 / 파일
Linux 디스크 관리
Linux 파일 시스템 마운트
- Linux System에서 외부 장치를 연결하기 위해서는 마운트 작업을 통해 연결 작업 수행 후 사용할 수 있다.
- 마운트(mount) - 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결
- 마운트 포인트(mount point) - 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리
- /etc/fstab - Linux System Booting 시 연결할 외부 장치 연결 정보 저장 파일
- 장치명 : UUID
- 마운트 포인트 : / (root)
- 파일 시스템 종류 : ext4
- 옵션 : error=remount-ro 0
- 덤프 관련 설정 : 0
- 파일 점검 옵션 : 1
- UUID
- Universally Unique IDentifier, 범용 고유 식별자
- 로컬 시스템과 다른 시스템을 유일하게 구분하기 위한 128bit 숫자
- 시스템의 정보와 시간 정보를 조합하여 랜덤으로 생성
- UUID로 지정된 장치는 /dev/disk/by-uuid 디렉토리에서 확인 가능
- 마운트 포인트 - 장치가 연결된 디렉토리
- 옵션 - 파일 시스템 속성
- 덤프 관련 설정
- 0 - 덤프 불가
- 1 - 덤프 가능
- 파일 점검 옵션
- 0 - 부팅 시 fsck 안 함
- 1 - 루트 파일 시스템
- 2 - 루트 파일 시스템 이외
[ 기본정리 ] 마운트
파일 시스템이 디렉토리 계층 구조와 연결되지 않으면 사용자가 해당 파일 시스템에 접근할 수 없다. 이렇게 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결하는 것을 마운트라고
rrhh234cm.tistory.com
새로운 디스크 (HDD or SSD) 연결 절차 → 관리자 권한으로 수행
- 새로운 디스크 파티션 생성 → fdisk
- 생성된 파티션에 파일 시스템 생성 → mkfs
- 마운트 → mount, 장치 연결 시 사용
- lsblk - Linux 디바이스 정보 확인
- Linux 디스크 장치 이름
- IDE 컨트롤러 연결된 디스크 : /dev/hd로 시작
- SCSI나 SATA 컨트롤러 연결된 디스크 : /dev/sd로 시작
- 최근에는 IDE/SCSI/SATA 구분 없이 /dev/sd로 시작
- 컨트롤러에 연결된 디스크 순서에 따라 알파벳 추가
- /dev/sda - 첫 번째 디스크
- /dev/sdb - 두 번째 디스크
- /dev/sdc - 세 번째 디스크
- ...
- 하나의 디스크에 파티션 구분에 따라 숫자 표기
- /dev/sda - 첫 번째 디스크 전체
- /dev/sda1 - 첫 번째 디스크의 첫 번째 파티션
- /dev/sda2 - 첫 번째 디스크의 두 번째 파티션
- /dev/sdb - 두 번째 디스크 전체
- ...
- Linux 디스크 장치 이름
- fdisk - 디스크 파티션 생성
- fdisk [옵션] <장치명>
- -l : 파티션 테이블 출력
- 파티션 종류
- primary 파티션 - 개수 제한이 있다.
- extended 파티션 - 원하는 수만큼 확장 가능
- sudo fdisk /dev/sdb 실행 후
- 새로운 파티션 생성 시 n (add a new partition)
- 파티션 번호
- First Sector
- Last Sector
- 파티션 테이블 선택 p (primary 파티션), e (extended 파티션)
- 파티션 저장 w
- 새로운 파티션 생성 시 n (add a new partition)
- fdisk [옵션] <장치명>
- mkfs - 파일 시스템 생성
- mkfs [옵션] <장치명(장치 파일)>
- -t <파일 시스템> : 생성할 파일 시스템
- sudo mkfs -t ext4 <장치명(장치 파일)>
- sudo mkfs.ext4 <장치명(장치 파일)>
- -t <파일 시스템> : 생성할 파일 시스템
- mkfs [옵션] <장치명(장치 파일)>
- mount - 파일 시스템 마운트
- mount [옵션] <장치(Device) 파일> <마운트 포인트>
- 현재 마운트 된 장치 출력
- 장치명
- 마운트 포인트
- 파일 시스템 종류
- 마운트 옵션
- -t <파일 시스템> : 마운트 할 장치의 파일 시스템
- mount -t iso9660 /dev/cdrom <마운트 포인트> : CD-ROM 연결
- mount -t vfat /dev/sdc1 <마운트 포인트> : Windows용 USB 메모리
- mount /dev/sdc1 <마운트 포인트> : Linux용 USB 메모리
- mount -t <NFS 서버 주소>:/<NFS 서버 측 디렉토리> <마운트 포인트> : NFS 디스크
- 일반적으로 /mnt 디렉토리에 마운트 포인트 설정
- 현재 마운트 된 장치 출력
- mount [옵션] <장치(Device) 파일> <마운트 포인트>
- umount - 마운트 해제
- umount <마운트 포인트>
- df - 디스크 사용량 확인, mount 정보 확인 가능
- df [옵션]
- -a : 모든 파일 시스템 사용량 확인
- -h : 디스크 사용량 출력
- -T : 파일 시스템 종류 출력
- df [옵션]
- du - 사용자나 디렉토리 별 사용량 확인
- du [<디렉토리>]
- chown - 파일이나 디렉토리의 소유자 및 그룹 변경
- chown user[:group] <파일 또는 디렉토리>
TIF
오늘 배운 부분은 VirtualBox에 Ubuntu 하나를 더 설치해서 몇 번 더 해보면 될 것 같다.
학교 다닐 때는 학교 컴퓨터를, 회사 다닐 때는 회사 컴퓨터를 관리하면서
컴퓨터 포맷을 몇 번 해봤고 파티션을 몇 번이나 나눠봤는가...
Windows로 하는 건 이제 눈 감고도 하는데 Linux도 그만큼 하면 눈 감고도 하지 않겠나 하는 생각이 든다.
강사님께서도 말씀하셨듯 자주 쓰이지는 않을 것 같다.
그래도 알아둬야 하는 부분이니 몇 번 반복 실습하고 잘 정리해두어야 할 것 같다.
주말 동안 구글 스터디잼 쿠버네티스 중급 수료했다.
정확히는 수료'만' 했다. 영어로 블라블ㄹ@)*#&! 하기도 했고, 내가 따라가기는 어려운 강의지 않았나 생각한다.
그래도 내가 정리할 수 있는 부분 정리하고, 9월 중순에 심화 과정이 있던데 그것도 참여해봐야겠다.
해본 것과 안 해본 것은 차이가 분명히 있으니까.
2022. 08. 13 에 작성된 글입니다.