리눅스 수업 3

이정빈·2022년 11월 9일
0

리눅스수업

목록 보기
3/3

LV = Logical Volume

서로 다른 저장장치를 PE라는 단위로 통일하여 하나의 그룹으로 합친 후, 해당 저장용량을 논리적인 개념으로 재분배해서 사용하는 방법

순서
파일 시스템 타입을 Linux LVM으로 재설정( fdisk 진입 후, t 명령 입력 -> 8e헥스코드 입력해서 시스템 타입 재정의 )
PV 생성 ==> VG 생성 ==> LV 생성 ====> LV의 파일시스템 정의 후 mount

pvcreate [대상 파티션] : 해당 파티션을 pv로 재설정
pvremove [대상 파티션] : 해당 pv를 제거
pvscan : 보유 중인 pv 조회

vgcreate [vg 명][대상 pv] .... : 해당 pv들을 모아서 vg(volume group)으로 붙임
vgextend [vg 명][대상 pv] : 해당 pv를 vg에 추가
vgremove [vg 명] : 해당 vg를 제거
vgdisplay : 보유 중인 vg를 조회 (상세 정보)
vgscan : 간단 조회

lvcreate -n [lv명] -L [사용할 용량][사용할 vg 명] : 해당 vg에서 용량만큼 lv를 생성
lvextend -L [용량][lv명] : lv의 용량을 추가(용량은 현재 용량보다 작을 수 없음)
lvresize -L [용량][lv명] : lv의 용량을 줄입(현재보다 클 수 없음, 줄일 때 기존 저장된 내용들이 사라질 수 있으니 주의해서 사용)
lvremove [lv 이름] : 해당 vg의 lv를 삭제
lvscan, lvdisplay: 조회명령

파일 아카이브(tar)

파일을 묶어서 하나로 보관하는 것으로 다른 사용자, 호스트 등과 파일을 주고 받거나 백업 시, 보관에 용이하게 하기 위해서 사용

#! 기본적으로 압축이 아닌 묶기!!의 개념이기 때문에 원본보다 용량이 더 많거나 같다
--> 고정된 10kb마다 용량을 저장하기 때문에 덜 채워졌던, 꽉 찼던 일단 저장된 공간들은 하나 당 10kb로 계산해서 원본보다 용량이 더 많을 수 밖에 없는 구조

그럼에도 파일을 주고 받거나, 보관 시에 유용한 측면 때문에 사용한다.

#명령어
tar [기능][옵션][아카이브 파일][대상]

  • 기능
    c : 새로운 아카이브 파일 생성
    t : 해당 파일 아카이브 내용을 출력
    x : 아카이브 파이을 풀기
    C : 경로 지정(하지 않을 경우 파일이 위치한 경로에서 묶음 해제)
    r : 새로운 파일을 추가하는 옵션
    u : 기존에 묶었던 경로 내에서 추가된 파일이 있을 시에 업데이트하는 옵션

  • 옵션
    v : 처리하고 잇는 파일의 정보를 출력
    f : 아카이브 파일이나 저장 장치를 지정
    j : bzip2 방식으로 압축
    z : gzip 방식으로 압축
    J : xz 방식으로 압축

#압축
gzip : GNU에서 만든 리눅스에의 표준이 되는 압축 포맷. 이 방식으로 압축하면 파일의 소유권, 권한, 기타 문맥 등등의 정보가 온전히 보존되는 특징 ==> bzip2도, xz도 동일한 기능을 갖고 있기 때문에 더 이상은 특징이라 하기 애매 최대 압축률을 기준으로 다른 포맷에 비해서 속도가 빠르다. 확장자는 .gz

개별 파일 압축 시엔, gzip [대상파일]이라는 명령으로도 시행이 가능 해제는 gzip -d로 풀 수 있음

bzip2 : gz보다는 압축률이 좋지만 압축시 시간은 좀 더 소모, 복구용 유틸리티 bzip2recover를 통해서 손상된 압축 파일을 복구가 가능
다른 압축도구보다 대용량의 파일 압축 시에 좀 더 강점이 있다는 평
bzip2 [대상파일] 명령으로 개별 압축이 가능
bzip2 -d로 해제가 가능

xz : 리눅스 말고 윈도우에서도 종종 사용하는 포맷, 데이터를 무손실 압축하는 장점. 압축률이 셋 중에는 가장높음
xz [대상파일] 명령으로 개별 압축이 가능하고 xz -d 명령으로 해제가 가능

#압축을 나눠서 보관하고 다시 해제하는 방법
split -n 5 --additional-suffix=.tar LABs.tar LABs_
cat LABs_a* | tar xvf -
(앞에서 cat으로 넘겨받은 출력값을 |를 통해서 뒤에 오는 명령어의 입력 값으로 받고 -를 통해서 입력 값을 넘겨 받음)

!!split 명령
split [옵션][대상 파일][분할된 파일들이 일관되게 가질 이름]
--additional-suffix : 고정된 확장자를 분할 파일들이 가질 수 있도록 지정하는 용도

#프로세스
컴퓨터가 하고 있는 작업, 혹은 어플리케이션

#프로세스의 생명주기
-생성 : 사용자가 요청한 작업이 커널에 등록
(주문, 오더가 들어오고)
-준비 : 작업에 필요한 자원들을 할당 받고 프로세서가 올 때까지 기다리고 있는 상태(보조가 필요한 재료들을 냄비에 담고 조리장 올 때까지 기다리는 상태)
-실행 : 프로세서에 의해서 요청된 작업들이 진행 중인 상태, 만약 작업이 시간 내에 완료되지 않거나, 프로세스 우선순위가 바뀌어서 미완료 상태에서 마무리되면 준비상태로 다시 돌아감(대기)
(주방장이 스토브 위에서 조리하다가 다른 냄비로 가는 상황)
-종료 : 프로세스가 할당된 작업을 끝마치고 자원을 반납 후, 메모리에서 삭제되는 과정(조리를 마치고 그릇에 메뉴가 전달되며, 냄비를 설거지하는 과정)

#프로세스의 부모-자식 관계
모든 프로세스들은 부모-자식 관계를 갖는데 부모 프로세스는 본인의 필요에 따라 자식 프로세스를 생성하고 자식들에게 본인을 대신해서 처리할 작업들을 할당. 자식은 부모가 준 작업을 처리하고 완료 시, 작업 내용을 부모에게 전달 후 삭제된다.

!!예외
1번 프로세스(initV, systemD), 2번 프로세스(kthread D) 이 둘은 부모가 없는 프로세스
init V : 이전에 사용하던 1번 프로세스로 스크립트에 따른 초기화와 시스템 부팅을 하던 프로세스. 다만 스크립트를 완전히 시행해야 다음 차례로 넘어가는 문제 때문에 systemD로 대체

systemD : 현재 사용 중인 1번 프로세스로 스크립트가 아닌 개별 service들에 대한 관리를 통해서 시스템을 부팅 및 초기화.
중간에 빠진 내용이 있더라도 필수적인 요소들만 불러와진다면 프로그램을 실행할 수 있어서 속도나 돌발 상황에 대해서 유연한 강점

kthreadD : 스레드들을 담당하는 프로세스

#프로세스의 종류
-데몬 : 평소에는 대기 상태에서 존재하다가 서비스 요청이 들어올 시, 해당 서비스를 미리 지정한 설정에 따라서 처리하는 백그라운드 프로세스(명령을 따로 주거나 하지 않음)

-고아 프로세스
부모가 먼저 죽어버린 상태, 자식이 갈 길을 찾지 못해서 남아있는 상황. 1번 프로세스가 임시적인 부모 역할을 담당하나 기존의 서비스를 이어가진 않고 데리고만 있는 상태(의미가 없는 프로세스가 메모리에 남아있는 상황)

-좀비 프로세스
코드 오류로 발생, 코드가 꼬이면서 부모의 경로가 자식에게 전달되지 못한 상황.자식이 일을 다처리하고도 부모에게 전달이 되지 않아서 메모리를 떠돌아 다니는 상태.(코드를 수정하거나, 부모 프로세스를 강제종료 시켜서 좀비 프로세스도 함께 종료될 수 있도록 해야 함)

#ps : 프로세스를 조회할 수 있는 명령어

-e : 커널 프로세스를 제외한 현재 시스템에서 돌아가고 있는 모든 프로세스를 조회
-f : 좀 더 상세하게 정보를 출력
-a : 데몬과 같이 터미널의 제어를 받지 않는 프로세스들을 출력

ps -ef | grep [내가 조회할 어플리케이션이 포함하는 문자열]

#kill : 프로세스에 대해서 시그널을 주는 명령어

-2 : 인터럽트 시그널(ctrl+c)
-9 : 강제 종료
-15 : 정상종료, 관련된 파일을 정리하고 프로세스 종료(graceful)
-l : 시그널 목록확인

#shutdown : 컴퓨터를 종료하는 명령어
-k : 실제 종료가 아닌 메시지만 전달
-r : 재시작
-h : 대기상태로 진입
-c : 이전에 내린 shutdown 명령 취소
-now : 바로 종료

#init --> init V의 이전에 사용하던 스크립트들을 불러올 수 있는 기능
0 --> 종료
1 --> 단일 사용자 모드 (복구용 모드)
2 --> 단일 사용자 모드(웹 연결 차단 -- 안전모드)
3 --> CLI 모드(TEXT UI)
4 --> 사용자 정의 모드( 비어있음 )
5 --> GUI 모드( Default )
6 --> 재시작

#systemctl set-default

profile
WAS Engineer, Cloud Engineer(지망)

0개의 댓글