반응형
리뷰 (Review)
더보기
프로세스 관리
- crontab
- crontab [옵션] <파일명>
- 정해진 시간에 반복적으로 명령 실행
Linux 파일 시스템
- 파일 시스템
- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
- 보조 기억 장치에 구성하는 형식
- Linux 파일 시스템
- Linux 파일 구조 - inode block + data block
- Linux 파일 종류
- 일반 파일
- 디렉토리 파일
- 특수 파일
- 디바이스 파일 - 디바이스 연결 목적
- character 디바이스 파일
- block 디바이스 파일
- 소켓 파일
- 파이프 파일
- 디바이스 파일 - 디바이스 연결 목적
- ext4
- 기본적으로 저널링 기능을 가지고 있음
- Linux 기본 (표준) 파일 시스템
- XFS
- 기본적으로 저널링 기능을 가지고 있음
- CentOS7에서 기본 (표준) 파일 시스템으로 쓰임, ext4 병행 사용
- 저널링 - 복구 정보
- Linux 지원 파일 시스템
- msdos, iso9660, nfs, ufs, vfat, hpfs, ntfs, ...
- Linux 가상 파일 시스템
- 특수 용도로 사용되고 메모리에 생성되어 관리되는 파일 시스템
- swap, tempfs, proc, ramfs, rootfs, ...
디스크 관리
- Linux 파일 시스템 마운트
- 외부 장치를 연결하기 위해서는 마운트 작업을 통해 연결 작업 수행 후 사용할 수 있다.
- 마운트, 마운트 포인트
- /etc/fstab - 부팅 시 연결할 외부 장치 연결 정보 저장 파일
- /dev/disk/by-uuid - UUID로 지정된 장치 확인
- 새로운 디스크 연결 절차 → 관리자 권한으로 수행
- 새로운 디스크 파티션 생성 - fdisk
- 생성된 파티션에 파일 시스템 생성 (디스크 포맷) - mkfs
- 마운트 (장치 연결 시) - mount
- 장치 해제 시 - umount
- lsblk
- 디스크 순서에 따라 알파벳 추가
- /dev/sda, /dev/sdb, /dev/sdc, ...
- 파티션 구분에 따라 숫자 표기
- /dev/sda1, /dev/sda2, /dev/sdb1, ...
- 디스크 순서에 따라 알파벳 추가
- mount
- mount [옵션] <장치(디바이스 파일) 파일> <마운트 포인트>
- -t <파일 시스템>
- mount -t iso9660 /dev/cdrom <마운트 포인트> : CD-ROM 연결
- mount -t vfat /dev/sdc1 <마운트 포인트> : Windosw용 USB 메모리
- mount -t /dev/sdc1 <마운트 포인트> : Linux용 USB 메모리
- mount -t <NFS 서버 주소>:/<NFS 서버 측 디렉토리> <마운트 포인트> : NFS 디스크
- df - 현재 연결되어 있는 mount 정보 확인
- df [옵션]
- du - 사용자나 디렉토리 별 사용량 확인
- du [옵션] [<사용자 또는 디렉토리>]
- chown - change owner, 파일이나 디렉토리의 소유자 정보 변경
- chown user[:group] <파일 또는 디렉토리>
Linux 개요
디스크 관리
LVM
- Logical Volume Manager
- Linux 저장 공간을 효율적이고 유연하게 관리하기 위한 Kernel 기능
LVM과 기존 방식의 차이
- 기존 방식은 디스크(저장 장치, storage)를 파티셔닝 한 후 O/S 영역에 마운트하여 읽기 / 쓰기 수행
- 저장 공간의 크기가 고정되어 있어서 증설 / 축소가 어렵다.
- 기존 방식의 단점을 보완하기 위해 LVM 구성
- LVM은 파티션 대신에 Volume이라는 단위로 디스크(저장 장치)를 다룬다.
- 디스크(저장 장치)의 확장, 변경에 유연하고 크기를 변경할 때 기존 데이터의 이전이 필요 없다.
LVM 장점
- 유연한 용량 조절
- 크기 조절을 위한 storage pool
- 편의에 따른 장치 이름 지정
- dist striping, mirror volume 등 제공
LVM 구성
- PV - Physical Volume, 물리적 Volume
- 실제 디스크 장치를 분할한 파티션 된 상태
- PV는 일정한 크기의 PE들로 구성
- PE - Physical Extent
- PV를 구성하는 일정한 크기 블록
- 보통 1PE는 4MB에 해당
- PE와 LE는 1:1 대응
- VG - Volume Group, 볼륨 그룹
- PV들이 모여서 생성되는 단위
- 사용자는 VG를 원하는 크기로 쪼개서 LV로 만들어 사용
- LV - Logical Volume, 논리적 볼륨
- 사용자가 최종적으로 사용하는 단위
- VG에서 필요한 크기로 할당받아 LV 생성
- 최종적으로 mount 하는 대상은 LV
LVM 생성 과정
- 기존 파일 시스템 종류 변경 - fdisk
- PV 생성 - pvcreate
- VG 생성 - vgcreate
- VG 활성화 - vgchange -a y
- LV 생성 - lvcreate
- LV에 파일 시스템 생성 - mkfs
- LV 마운트 - mount
LVM 적용을 위한 패키지 설치 필요
- LVM 패키지 - lvm2
Linux 부팅 과정 이해
booting
- 초기 컴퓨터 전원 on을 하는 시점에는 메모리의 내용은 아무것도 없는 상태이다.
- 실제 컴퓨터를 사용하기 위해서는 O/S가 동작하여야 사용할 수 있는데 전원 on 시점에 O/S가 동작할 수 있도록 하는 단계를 O/S booting이라고 한다.
→ booting == O/S 실행
Linux booting 과정
- 전원 on
- BIOS(Basic Input / Output System) 실행
- ROM 또는 Flash Memory에 저장된 프로그램
- 컴퓨터 상태 점검 - CPU / Memory / I/O Device
- 부트 로더 프로그램 로드
- 시스템 디스크(/ (root) 파티션)의 MBR(Master Boot Record) 영역에 저장되어 있는 프로그램
- O/S를 Memory로 로드하는 프로그램
- Linux Kernel 저장 위치 - /boot 디렉토리에 vmlinuz*로 시작하는 이미지 파일
- 부트 로더 실행
- Linux Kernel 로드 - /boot/vmlinuz-<kernel 버전>
- 현재 사용 중인 Linux Kernel 정보 확인 → uname -a
- 부트 로더 실행 시 원하는 Linux Kernel을 설정할 수도 있다.
- 부트 로더
- GRUB - 현재 사용하는 부트 로더
- LILO
- Linux Kernel 로드 - /boot/vmlinuz-<kernel 버전>
- Kernel 초기화
- Linux Kernel 실행
- Kernel 초기화 과정
- Memory 구성 초기화
- I/O Device 초기화
- 시스템 동작을 위한 프로세스 생성 및 초기화
- 초기화 메세지 확인 명령 → dmesg
- systemd 서비스 실행
- systemd
- 1번 프로세스
- daemon 프로세스
- booting level
- booting 방식 및 모드 의미
- CLI 모드 booting
- GUI 모드 booting
- systemd
- 로그인 shell 실행 및 프롬프트 표시
systemd 프로세스
- Linux 최상위 프로세스 - 1번 프로세스
- initd에 대한 systemd 차이점
- 소켓 기반으로 동작 - inetd와 호환성 유지
- inetd - 슈퍼 데몬 프로세스
- shell과 독립적으로 부팅 가능
- 마운트 제어 가능
- fsck 제거 가능
- 시스템 상태에 대한 스냅샷 유지
- SELinux(SEcure Linux)와 통합 가능
- 서비스에 시그널 전송 가능
- 소켓 기반으로 동작 - inetd와 호환성 유지
systemd 유닛
- 전체 시스템 시작과 관리에 유닛(unit) 구성 요소 사용
- systemd는 "서비스명.유닛 종류" 형태로 관리
- 각 유닛은 같은 이름과 종류로 구성된 설정 파일과 동일 이름 사용
- systemd 유닛 종류
- service - daemon 프로세스(서비스, service) 시작, 종료, 재시작, 로딩
→ 주로 사용하게 될 것 - socket - 네트워크 통신, domain socket (Kernel 내부 사용)
- device - I/O Device 관리
- mount - mount point 관리
- automount - 자동 mount 관리
- target - run-level 관리
- swap - swap 장치 관리
- path - 경로 관리
- timer - timer 관리
- slice - 프로세스 계층 관리
- scope - 외부 생성 프로세스 관리
- service - daemon 프로세스(서비스, service) 시작, 종료, 재시작, 로딩
systemd 관련 명령
- systemctl - daemon 프로세스(서비스) 관리 명령
- initd 프로세스 사용 시에는 service 명령 사용
- [sude] systemctl [옵션] [명령] [<유닛명>]
- -a : 상태와 관계없이 전체 유닛 출력
- -t <유닛 종류> : 지정한 유닛 종류 출력
- 명령
- status - 유닛 상태 확인
- start - 유닛 시작
- stop - 유닛 종료
- restart - 유닛 재시작
- enable - booting시 자동 실행 설정
- disable - booting시 자동 실행 해제
- isolate - 지정한 유닛 및 이와 관련된 유닛만 시작하고 나머지는 정지
- 위의 명령 중에 status를 제외한 나머지는 관리자 권한으로 실행
- systemctl : 전체 service 유닛 출력 (== systemctl -a)
- systemctl -t service : service 유닛 전체 출력
- systemctl status cron.service : cron service 상태 출력 - 유닛 상태 확인
- sudo systemctl stop cron.service
- sudo systemctl start cron.service
- sudo systemctl restart cron.service
- service <서비스명> status - initd 기반 서비스 확인 명령
데몬 프로세스 (daemon process)
- background에서 동작하면서 특정 서비스를 제공하는 프로세스
→ 사용자와 상호작용을 수행하지 않는다. - Linux 환경에서 특정 서비스 제공을 담당하는 프로세스를 데몬(daemon)이라 한다.
- 데몬 동작 형식
- 독자형(standalone) 데몬
- 시스템 background에서 서비스별로 동작
- 초기 동작 속도가 빠르다.
- 자주 사용하는 서비스가 아니라면 자원 낭비 요인이 있다.
- 슈퍼 데몬
- 평소에는 슈퍼 데몬만 동작하다가 서비스 요청이 들어오면 슈퍼 데몬이 해당 서비스 제공 데몬을 실행
- 처음 서비스 응대 시에 독자형 데몬에 비해 응답 속도가 느릴 수 있으나 자원의 효율적인 사용하는 장점
- 네트워크 사용하는 서비스가 슈퍼 데몬 형식
- inetd - UNIX 슈퍼 데몬명
- xinetd - Ubuntu 슈퍼 데몬명 (보안 기능 포함)
- 독자형(standalone) 데몬
- Linux 주요 데몬 (주로 끝에 d 가 붙음)
- sshd - 원격 접속 서비스 제공
- httpd - 웹 서비스 제공
- ftpd - FTP 서비스 제공
- nfs - 네트워크 파일 시스템
- crond - 주기적으로 예약된 명령 실행 서비스
- lpd - 프린트 서비스
- ntpd - 시간 동기화 서비스
- ...
소프트웨어 관리
Linux 환경에서 Application 설치 방법
- Application source를 download 또는 복사하여 직접 compile 과정을 통해 설치
- 한 번에 원하는 결과물을 얻기 어렵다.
- compile 과정은 환경에 영향을 많이 받기 때문에 최종 결과물을 얻기까지 많은 시행착오 발생
- Application package 파일을 download 또는 복사하여 직접 package를 이용한 설치
- Application package 파일에는 해당 Application 설치를 위해 필요한 의존성 파일을 포함해서 제공
- Debian 계열 package 파일
- .deb 파일
- dpkg 명령으로 설치, 제거, 업그레이드 관리 수행 (패키지 관리 명령)
- Redhat 계열 package 파일
- .rpm 파일
- rpm 명령으로 설치, 제거, 업그레이드 관리 수행 (패키지 관리 명령)
- 각 배포판에서 운영하는 repository(원경 저장소)를 통하여 원하는 Appication package를 download 후 설치
→ 인터넷 연결 필요- Debian 계열
- apt 명령
- Redhat 계열
- yum 명령
- Debian 계열
dpkg
- Debian 계열 패키지 관리 명령
- .deb 패키지 파일 설치, 삭제, 업그레이드, 정보 제공
- dpkg [옵션] <.deb 파일명 또는 패키지명>
- -l : 설치된 패키지 목록 확인
- -L <패키지명> : 해당 패키지로부터 설치된 모든 파일 목록 확인
- -s <패키지명> : 해당 패키지 정보 확인
- -I <.deb파일명> : 해당 .deb 파일 정보 확인
- -i <.deb파일명> : 패키지 설치 또는 업그레이드, 관리자 권한 필요
- -r <패키지명> : 패키지 삭제(설정 파일은 삭제 안 함), 관리자 권한 필요
- -p <패키지명> : 패키지 및 설정 파일 삭제, 관리자 권한 필요
apt
- Debian 계열 온라인 repository를 통한 패키지 관리 명령
- Ubuntu 패키지와 패키지 정보를 관리하는 패키지 서버 정보는 /etc/apt/source.list 파일에 저장
- 기본적으로 /etc/apt/source.list에 등록된 서버로부터 원하는 패키지에 대한 검색, 다운로드, 설치가 가능하다.
- 만약 별도의 repository로부터 패키지를 설치하려면 해당 repository 서버 주소 등록 후 사용한다.
- apt-cache
- apt 캐시(패키지 데이터베이스)에서 정보 검색
- apt-cache [옵션] <서브 명령>
- -f : 검색 결과 전체 정보 출력
- 서브 명령
- search 키워드 - 캐시에서 키워드 검색
- show 패키지 - 패키지에 대한 정보 출력
- apt-get
- 패키지 관리 명령
- 온라인 repository로부터 패키지 다운로드 및 설치, 삭제, 업그레이드 등의 관리 수행
- [sudo] apt[-get] [옵션] <서브 명령>
- -d : 패키지 download
- -y : 패키지 설치 시 자동으로 y 적용
- 서브 명령
- update - repository의 새로운 패키지 정보 download
- upgrade - 현재 설치된 패키지 upgrade
- install 패키지 - 패키지 설치
- remove 패키지 - 패키지 삭제 (설정 파일 삭제 안 함)
- purge 패키지 - 패키지 및 설정 파일 삭제
- autoremove - 불필요한 의존성 패키지 삭제
- Linux booting 후나 패키지 설치 전에 sudo apt-get update 명령을 통해
새로운 패키지 정보 확인 후 필요한 패키지 설치 - ssh 데몬 설치
- sudo apt-get update
- sudo apt-get install openssh-server - 확인 필요
→ sudo apt-get -y install openssh-server - 확인 필요 없이 바로 설치 - systemctl status sshd.service - 서비스 실행 유무 확인
ETC
더보기
swap
- 시스템에 메모리가 부족할 경우 하드디스크 일부 공간을 활용하여 계속 작업을 도와주는 영역
- 하드디스크의 일부를 RAM처럼 사용할 수 있게 만드는 것
런-레벨 (run-level)
- 시스템 실행 레벨 의미
- 런-레벨은 0 ~ 6까지 정수로 부여
- 런-레벨은 target 유닛에 의해 적용
- 자주 사용할 수 있는 런-레벨
- 3번 : multi-user.target → CLI booting
- 5번 : graphical.target → GUI booting
- runlevel - 현재 런-레벨 출력
- 기본 booting 방법 설정
- sudo systemctl set-default multi-user.target
- sudo systemctl set-defaul graphical.target
- target 변경
- sudo systemctl isolate multi-user(runlevel3).target
- sudo systemctl isolate graphical(runlevel5).target
- 기본 booting 방법 설정
TIF
오전에는 괜찮았는데 오후부터 집중을 못했다.
한참 강의 중에는 모르고 있다가 정리하면서 돌이켜보니
최근에 구글 스터디잼에서도 썼고 웹 개발, 앱 개발할 때도 봤던 것들이었다.
집중만 했으면 충분히 잘 들을 수 있는 수업이었을텐데... 라는 생각이 든다.
일주일에 한 번씩은 집중력이 떨어지는 것 같은데
당장 다음 주부터는 서버 구축 실습 들어갈테고 지금 집중해서 해놔야 한다.
집중하자 집중!!!
2022. 08. 17 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 14일차 (0) | 2023.07.20 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 13일차 (0) | 2023.07.18 |
구름 쿠버네티스 전문가 과정 6기 - 11일차 (0) | 2023.07.14 |
구름 쿠버네티스 전문가 과정 6기 - 10일차 (0) | 2023.07.13 |
구름 쿠버네티스 전문가 과정 6기 - 9일차 (0) | 2023.07.12 |