어쩌다 IT
article thumbnail
반응형

리뷰 (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 생성 과정

  1. 기존 파일 시스템 종류 변경 - fdisk
  2. PV 생성 - pvcreate
  3. VG 생성 - vgcreate
  4. VG 활성화 - vgchange -a y
  5. LV 생성 - lvcreate
  6. LV에 파일 시스템 생성 - mkfs
  7. LV 마운트 - mount

 

LVM 적용을 위한 패키지 설치 필요

  • LVM 패키지 - lvm2

Linux 부팅 과정 이해

booting

  • 초기 컴퓨터 전원 on을 하는 시점에는 메모리의 내용은 아무것도 없는 상태이다.
  • 실제 컴퓨터를 사용하기 위해서는 O/S가 동작하여야 사용할 수 있는데 전원 on 시점에 O/S가 동작할 수 있도록 하는 단계를 O/S booting이라고 한다.
     booting == O/S 실행

Linux booting 과정

  1. 전원 on
  2. 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*로 시작하는 이미지 파일
  3. 부트 로더 실행
    • Linux Kernel 로드 - /boot/vmlinuz-<kernel 버전>
      • 현재 사용 중인 Linux Kernel 정보 확인 → uname -a
    • 부트 로더 실행 시 원하는 Linux Kernel을 설정할 수도 있다.
    • 부트 로더
      • GRUB - 현재 사용하는 부트 로더
      • LILO
  4. Kernel 초기화
    • Linux Kernel 실행
    • Kernel 초기화 과정
      • Memory 구성 초기화
      • I/O Device 초기화
      • 시스템 동작을 위한 프로세스 생성 및 초기화
    • 초기화 메세지 확인 명령 → dmesg
  5. systemd 서비스 실행
    • systemd
      • 1번 프로세스
      • daemon 프로세스
    • booting level
      • booting 방식 및 모드 의미
      • CLI 모드 booting
      • GUI 모드 booting
  6. 로그인 shell 실행 및 프롬프트 표시

/boot 디렉토리 확인, uname -a로 버전 확인
dmesg
systemd


systemd 프로세스

  • Linux 최상위 프로세스 - 1번 프로세스
  • initd에 대한 systemd 차이점
    • 소켓 기반으로 동작 - inetd와 호환성 유지
      • inetd - 슈퍼 데몬 프로세스
    • shell과 독립적으로 부팅 가능
    • 마운트 제어 가능
    • fsck 제거 가능
    • 시스템 상태에 대한 스냅샷 유지
    • SELinux(SEcure Linux)와 통합 가능
    • 서비스에 시그널 전송 가능

 

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 - 외부 생성 프로세스 관리

 

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 기반 서비스 확인 명령

systemctl -t 실행 시 출력 화면, 보이는 것보다 더 많음
systemctl status 서비스명.유닛명
stop 했을 때, inactive로 변경 되었음
start로 실행, active로 변경되었고, PID도 변경 되었다.


데몬 프로세스 (daemon process)

  • background에서 동작하면서 특정 서비스를 제공하는 프로세스
    → 사용자와 상호작용을 수행하지 않는다.
  • Linux 환경에서 특정 서비스 제공을 담당하는 프로세스를 데몬(daemon)이라 한다.
  • 데몬 동작 형식
    • 독자형(standalone) 데몬
      • 시스템 background에서 서비스별로 동작
      • 초기 동작 속도가 빠르다.
      • 자주 사용하는 서비스가 아니라면 자원 낭비 요인이 있다.
    • 슈퍼 데몬
      • 평소에는 슈퍼 데몬만 동작하다가 서비스 요청이 들어오면 슈퍼 데몬이 해당 서비스 제공 데몬을 실행
      • 처음 서비스 응대 시에 독자형 데몬에 비해 응답 속도가 느릴 수 있으나 자원의 효율적인 사용하는 장점
      • 네트워크 사용하는 서비스가 슈퍼 데몬 형식
      • inetd - UNIX 슈퍼 데몬명
      • xinetd - Ubuntu 슈퍼 데몬명 (보안 기능 포함)
  • Linux 주요 데몬 (주로 끝에 d 가 붙음)
    • sshd - 원격 접속 서비스 제공
    • httpd - 웹 서비스 제공
    • ftpd - FTP 서비스 제공
    • nfs - 네트워크 파일 시스템
    • crond - 주기적으로 예약된 명령 실행 서비스
    • lpd - 프린트 서비스
    • ntpd - 시간 동기화 서비스
    • ...

Ubuntu에서 sshd 기본 제공 x
sshd CentOS7 기본 제공 o


소프트웨어 관리

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 명령

dpkg

  • Debian 계열 패키지 관리 명령
  • .deb 패키지 파일 설치, 삭제, 업그레이드, 정보 제공
  • dpkg [옵션] <.deb 파일명 또는 패키지명>
    • -l : 설치된 패키지 목록 확인
    • -L <패키지명> : 해당 패키지로부터 설치된 모든 파일 목록 확인
    • -s <패키지명> : 해당 패키지 정보 확인
    • -I <.deb파일명> : 해당 .deb 파일 정보 확인
    • -i <.deb파일명> : 패키지 설치 또는 업그레이드, 관리자 권한 필요
    • -r <패키지명> : 패키지 삭제(설정 파일은 삭제 안 함), 관리자 권한 필요
    • -p <패키지명> : 패키지 및 설정 파일 삭제, 관리자 권한 필요

Linux OS firefox에서 크롬 다운로드
dkpg -I 통해서 패키지 정보 확인
sudo dkpg -i 로 패키지 설치
설치 완료


apt

  • Debian 계열 온라인 repository를 통한 패키지 관리 명령
  • Ubuntu 패키지와 패키지 정보를 관리하는 패키지 서버 정보는 /etc/apt/source.list 파일에 저장
  • 기본적으로 /etc/apt/source.list에 등록된 서버로부터 원하는 패키지에 대한 검색, 다운로드, 설치가 가능하다.
  • 만약 별도의 repository로부터 패키지를 설치하려면 해당 repository 서버 주소 등록 후 사용한다.
  • apt-cache
    • apt 캐시(패키지 데이터베이스)에서 정보 검색
    • apt-cache [옵션] <서브 명령>
      • -f : 검색 결과 전체 정보 출력
      • 서브 명령
        • search 키워드 - 캐시에서 키워드 검색
        • show 패키지 - 패키지에 대한 정보 출력

apt-cache search sshd, 캐시에서 sshd 키워드 검색
apt-cache show openssh-server, openssh-server 패키지에 대한 정보 출력

 

  • 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 - 서비스 실행 유무 확인

apt-get update
systemctl status로 설치한 서비스 실행 유무 확인


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
기본 run-level 5, GUI

TIF

오전에는 괜찮았는데 오후부터 집중을 못했다.

 

한참 강의 중에는 모르고 있다가 정리하면서 돌이켜보니

최근에 구글 스터디잼에서도 썼고 웹 개발, 앱 개발할 때도 봤던 것들이었다.


집중만 했으면 충분히 잘 들을 수 있는 수업이었을텐데... 라는 생각이 든다.

일주일에 한 번씩은 집중력이 떨어지는 것 같은데

당장 다음 주부터는 서버 구축 실습 들어갈테고 지금 집중해서 해놔야 한다.

집중하자 집중!!!

 

 

2022. 08. 17 에 작성된 글입니다.

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!