쿠버네티스 전문가 양성과정 3주차 3일(1/4)

최수환·2023년 1월 4일
0

Kubernetes

목록 보기
14/75
post-thumbnail

LVM

  • 디스크의 용량이 부족할 때 여러 개의 디스크를 하나의 디스크처럼 사용
  • 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있도록 해줌
  • 물리적인 한계를 극복해줌


PV (물리 볼륨) : /dev/sdb1처럼 실제 하드디스크의 파티션
VG (볼륨 그룹) : 여러개의 PV를 그룹으로 묶은 것
LV (논리 볼륨) : VG를 다시 적절한 크기의 파티션으로 나눈 것

  • LVM 생성 과정

LVM 명령어

파티션 생성 및 id전환

  • fdisk /dev/sdb
  • n입력후 원하는 파티션 디스크 생성
  • t입력후 hex code에 8e입력해서 LVM으로 id전환

물리볼륨 생성

  • pvcreate 장치명
  • ex) pvcreate sdb1
  • pv 상태확인 : pvscan

볼륨 그룹 생성

  • vgcreate vg명 pv명...
  • -s pe사이즈 : 블록 사이즈 지정
  • ex) vgcreate vg0 /dev/sdb2 /dev/sdb4 -s 8M
  • vg 정보 확인 : vgdisplay -v , vgscan

논리볼륨 생성

  • lvcreate vg명 -n lv명 -L 실제크기 or -l pe갯수
  • ex) lvcreate vg0 -n lv01 -L 2G
  • ex) lvcreate vg0 -n lv02 -l 512
  • ex) lvcreate vg0 -l 100%FREE -n lv03 : 남은 vg용량 다 사용해서 LV생성
  • lv 정보 확인 : lvscan

LV에 파일시스템 포맷

  • mkfs -t xfs /dev/vg0/lv01
  • mkfs -t ext4 /dev/vg0/lv02

LV 마운트

  • mkdir -p /mnt/disk1 (디렉터리 계층구조안에 디렉터리 생성)
  • mount /dev/vg0/lv01 /mnt/disk1
  • mount /dev/mapper/vg0-lv02 /mnt/disk2
    -> /dev/mapper경로에 볼륨그룹에 해당하는 논리 볼륨 존재

물리볼륨 삭제 , 볼륨그룹 삭제 , 논리볼륨 삭제

  • pvremove pv명 , vgremove vg명 , lvremove lv경로

📌 PE : PV를 쪼개는 최소단위 (default 4M)

LVM 확장/축소

  • 볼륨그룹 확장
    • vgextend vg명 pv명 ...
    • ex) vgextend myvg /dev/sdb3
  • 볼륨그룹 축소
    • vgreduce vg명 pv명 ...
    • ex) vgreduce myvg /dev/sdb4
      -> sdb4안에 내용물이 있다면(사용중) pvmove로 내용물 다른데로 이동후 제거
  • 물리볼륨 내용 이동
    • pvmove pv명 ...
    • ex) pvmove /dev/sdb4
      -> sdb4의 용량만큼 다른sd에 여유공간이 없다면 안 옮겨짐 -> vgextend로 다른 sd를 추가해서 확장시킨 후 옮김
  • 논리볼륨 확장
    • lvextend lv경로
    • lvextend lv경로 -r : 파일시스템 확장도 됨
    • ex) lvextend -L 5G /dev/myvg/lv01
    • ex) lvextend -L +2G /dev/myvg/lv02
  • 논리 볼륨 축소
    • lvreduce
    • 사용권장하지 않음
  • xfs 파일 시스템 확장
    • xfs_growfs 마운트포인트
    • ex) xfs_growfs /mnt/disk1
      -> mount포인트 경로 모르면 mount명령어 입력해서 확인
  • ext4 파일시스템 확장
    • resize2fs lv경로 (파티션명)

리눅스 시스템의 부팅 과정


바이오스 단계

  • 전원을 키면 ROM에 있는 메인보드 펌웨어를 읽는다
    📌 메인보드 펌웨어 : 각종 컴퓨터 설정
  • 바이오스는 PC에 장착된 기본적인 하드웨어(키보드, 디스크 등)의 상태를 확인한 후 부팅장치 선택하여 부팅 디스크의 첫 섹터에서 512바이트를 로딩
    🖌 첫 섹터 512바이트 = MBR
  • 2차 부팅 프로그램 (부트로더)의 위치 저장

부트로더 단계

  • MBR은 부트 로더를 찾아 메모리에 로딩
  • 부트 로더 : 여러 운영체제 중에서 부팅할 운영체제를 선택할 수 있도록 메뉴 제공
  • 리눅스 커널을 메모리에 로딩
  • 리눅스 커널은 /boot 디렉터리 아래에 'vmlinuz - 버전명' 의 형태로 제공

커널 초기화 단계

  • 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드 , 마우스 등 장치들을 검사
  • 기본적인 커널 초기화 단계가 끝나면 커널은 fork를 사용하지 않고 생성되는 프로세스와 스레드 생성
    📒 fork : fork명령을 통해 부모가 자식 프로세스를 만듬
    -> 쉘에서 fork로 자식 프로세스 생성

systemd 서비스 단계

  • systemd 서비스 단계에 이르면 리눅스가 본격적으로 동작하기 시작
  • systemd 서비스는 기존의 init스크립트를 대체한 것으로 다양한 서비스를 동작시킴

📒 systemd(1번 프로세스) : 모든 프로세스의 조상 역할 (pstree로 확인 가능) = 시스템과 서비스 관리자
💡 dmesg : 현재 컴퓨터의 부팅 정보 볼 수 있다.


systemd 서비스

1번 프로세스

  • 전통적으로 유닉스에서는 init프로세스가 처음 생성된 프로세스로서 PID가 1번
  • 리눅스는 페도라 14부터 init 대신에 systemd 사용

init 프로세스와 런레벨

  • init프로세스에서 사용하던 런레벨의 개념에 대한 이해 필요
  • init는 시스템의 단계를 일곱 개로 정의하여 구분하고 각 단계에 따라 셸 스크립트를 실행하는데 , 이 단계를 런레벨이라고 함

systemd 기본 개념

systemd와 런레벨

  • runlevel : 런레벨 확인
  • who -r : 런레벨 확인
  • systemctl get-default : 현재 default target 확인
    📗 현재 런레벨이라는 개념은 target으로 바뀌었다.
  • systemctl set-default multi-user.target : 현재 default target 바꾼다
    📒 default target : 부팅될때 시작되는 target
  • 재부팅 없이도 바로 target바꾸기 : systemctl isolate target명

📕 multi-user.target으로 바꾸면 부팅될 때 CLI환경으로 접속
📕 graphical.target으로 바꾸면 부팅될 때 GUI환경으로 접속

systemd 유닛

  • systemd는 전체 시스템을 시작하고 관리하는 데 유닛(units)이라 부르는 구성 요소를 사용
  • systemd는 관리 대상의 이름을 '서비스 이름.유닛 종류'의 형태로 관리
    -> 서비스, 마운트 , 디바이스 등을 유닛으로 만들어 자식으로 관리

📘 /usr/lib/systemd/system 디렉터리에 가면 유닛과 런레벨 파일들을 확인해 볼 수 있다

systemctl

  • systemd를 기반으로 유닛을 시작하거나 관리하는 명령어
  • 서비스 유닛을 관리할때 많이 씀 (종종 target유닛)
  • 형식 : systemctl [옵션][명령] [유닛명]
  • systemctl -a : 설치되어있는 유닛목록 보여줌
    (종료된 유닛도 보여줌)

사용 예시

  • yum install -y httpd 설치후
    find / -name httpd.service로 디렉터리가 생성된거 확인

  • 상태보기 : systemctl status httpd , systemctl status httpd -l

  • 서비스 시작 : systemctl start httpd

  • 서비스 중지 : systemctl stop httpd
    -> systemctl stop sshd하면 연결 끊김

  • 방화벽 잠시 해제 : firewall-cmd --add-service=http

  • ifconfig로 ip확인후 호스트pc 웹에 주소 입력하면 test창이 뜸

  • systemctl enable httpd - 심벌릭 링크 생성

  • systemctl restart httpd - 프로세스 종료되고 새로 시작
    (PID값 바뀜)
    -> 설정 값 바꿨을때 사용

  • systemctl reload httpd - 프로세스를 끄지않고 재시작
    (PID값 안바뀜)

shutdown

  • 리눅스 시스템을 가장 정상적으로 종료하는 방법
  • 형식 : shutdown [옵션][시간] [메시지]
  • ex) shutdown -h now : 지금 종료
  • ex) shutdown -r +3 "System is going down"
    -> 메시지 보내면서 3분뒤에 재시작
profile
성실하게 열심히!

0개의 댓글