구름 12일차

박경현·2022년 8월 17일
0

디스크 관리

LVM

logical volume Manager
linux 저장공간을 효율적이고 유연하게 관리하기 위한 커널 기능

LVM vs 기존방식

  • 기존 방식은 디스크를 파티셔닝 한 후 o/s영역에 마운트하여 read/write수행!
    저장공간의 크기가 고정!! -> 확장 축소 어렵다

  • LVM은 파티션 대신에 volumn이라는 단위로 디스크를 다루기 때문에 유연하게 확장 가능!
    (크기 변경할때 기존 데이터 이전이 필요 없어진다)
    volumn은 논리적인 단위이다 -> 크기 조절이 그만큼 쉽다는거!

    	

LVM장점

	유연한 용량 조절
	크기조절을 위한 storage pool
	편의에 따른 장치 이름 지정
	dist striping. Mirror volumn등 제공

LVM 구성

	PV - physical volume 물리적 불륨
		실제 디스크 장치를 분할한 파티션된 상태
		pv는 일정한 크기의 PE(physical extent)들로 구성
		
	PE -  physical extent 물리적 확장
		pv가 가진 일정한 블록
		보통 1 PE는 4MB에 해당
		PE와 LE는 1: 1 대응
		
	VG - volume group 
		pv들이 모여서 생성되는 단위
		사용자는 vg를 원하는 크기로 쪼개서 LV로 만들어서 사용
		
		원래는 개별적으로 마운트해야하는데 논리적인 단위로 묶기 위해서 VG릀 생성!!!
		사용자가원하는 만큼만 커스텀 할수있다!

	LV - logical volume
		사용자가 최종적으로 사용하는 단위
		VG에서 필요한 크기로 할당받아 LV생성

	최종적으로 마운트하는 대상은 LV다!

LVM 생성과정

	기존 파일시스템 종류변경 - fdisk 명령 사용
	pv생성 - pvcreate 명령
	VG생성 - vgcteate 명령
	VG활성화 - vgchange -a y 명령
	LV생성 - lvcreate 명령
	LV에 파일 시스템 생성 - mkfs 명령
	LV 마운트 - mount 명령

LVM 적용을 위한 패키지 설치 필요
	LVM 패키지 - lvm2
	sudo apt install lvm2

서버 운영 핧 때 자주 쓰임 데이터베이스 관련 서버 만들면 db공간 증가 시켜줘야함 -> 유연한 관리를 위해

Linux 부팅 과정 이해

booting - O/S 실행이다(커널을 동작시키는 과정), O/S를 메모리에 올린다

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

Linux booting 과정

	1. 전원 on
	2. BIOS(Basing input/output system) 실행
		- 컴퓨터 ROM 또는 flash memory (이걸 자주씀 읽을 수도 있고 내용 변경도 가능이라서) 에 저장된 프로그램
		- 컴퓨터 상태 점검 - CPU/Memory/ I/O Device 

		- 부트 로더 프로그램 로드 후 실행 - 메모리로 로드함
			- 시스템 디스크의 MBR(master boot record) 영역에 저장되어 있는 프로그램, 
				(윈도우의 c드라이브, 리눅스의 루트 파티션에 시스템 디스크가 들어있음)
			- O/S를 memory에 로드 하는 프로그램
			Linux Kernel 저장 위치 -/boot 디렉토리에 저장 -> vmlinuz ~ 으로 시작하는 이미지 파일

	3. 부트 로더 실행
		Linux kernel 로드 -/boot/ vmlinuz - <kernel 버전> 
			name -a 하면 커널 버전 알 수 있다!

		부트로더 실행시 원하는 linux kernel을 설정할 수도 있다

	4.	커널 초기화

        * Linux Kernel 실행
        * 커널 초기화 과정
            * memory 구성 초기화
            * I/O Device 초기화
            * 시스템 동작을 위한 프로세스 생성 및 초기화
        * 초기화 메시지 확인 명령 - dmesg 명령

	5. systemd 서비스 실행
        * systemd
            * 1번 프로세스
            * daemon 프로세스
        * booting level
            * booting 방식 및 모드 의미
            * CLI 모드 booting
            * GUI 모드 booting - 현재 사용하는 배포판이 사용하는 booting 모드

    6. 로그인 shell 실행( CLI 모드 booting ) 및 프롬프트 표시
		system 프로세스

            * Linux 최상위 프로세스 - 1번 프로세스
            * Ubuntu 14.04 버전까지는 initd 프로세스가 1번 프로세스로 사용되었으나 이 후 systemd로 1번 프로세스 변경
            * 배포판에 따라 systemd 프로세스을 1번 프로세스로 변경된 시점에 차이가 존재

		system유닛
			전체 시스템 시작과 관리에 유닛 구성요소를 사용
			systemd는 서비스명 . 유닛 종류 형태로 관리
			각 유닛은 같은 이름과 종류로 구성도니 설정 파일과 동일 이름사용
		system 유닛 종류
			service - daemon 프로세스 시작, 종료, 재시작, 로딩
			socket - 네트워크 통신을 위한 내용(이게 디폴트임), 도메인 소켓(커널 내부에서 사용)
			device - I/O 디바이스 관리
			mount - 마운트 포인트 관리
			auto mount - 자동 마운트 관리
			target - run-level 관리
			swap - swap 장치
			path - 경로 관리
			timer - 타이머 관리
			slice - 프로세스 계층 관리
			scope - 외부 생성 프로세스 관리
		

systemd 관련 명령

		systemctl 명령 - Daemon 프로세스 관리 명령
		[sudo] systemctl [옵션] 명령 <유닛명>
			-a 상태와 관계없이 전체 유닛 출력
			-t 유닛종류 - 지정한 유닛 종류 출력
			
			systemctl - 전체 service 유닛 출력
			systemctl -a 전체 유닛 출력
			systemctl status cron.service - cron service상태 출력
				enable상태 - 부팅시 자동 실행을 뜻한다
				disable상태 - 부팅시 자동 실행 안함

		sudo systemctl stop cron.service - cron.service유닛 종료
			-> active 상태가 inactive로 바뀜!!

		sudo systemctl start cron.service로 다시시작하기!
			-> activat 상태가 active(running)으로!! 
			-> 정지했다. 다시 시작하면 당연히 PID 바뀜

		sudo systemctl restart cron.service - 유닛 재시작

		service<서비스명> status ———————————— 옛날 방식!!!
			service cron status - cron service 상태확인,
			ignited 기반 service 확인 명령

	데몬 프로세스
		background에서 동작하면서 특정 서비스를 제공하는 프로세스
		linux 환경에서 특정 서비스 제공을 담당하는 프로세스를 데몬이라 한다
			
		독자형 데몬
			시스템 background 에서 서비스 별로 동작
			초기 동작 속도가 빠름 
			자주 사용하는 서비스가 아니라면 자원 낭비 요인이있다.

		슈퍼 데몬
			평소에는 슈퍼데몬만 동작하다가 서비스 요청이 들어오면 
			슈퍼데몬이 해당 서비스 제공 데몬을 실행

			따로 설치 해줘야함, 네트워크 사용하는 서비스가 슈퍼 데몬 형식

			처음 서비스 응대시에 독자형 데몬에 비해 응답 속도가 느릴 수 있으나 자원의 효율적인 사용
			inetd - unix 슈퍼 데몬
			xinetd - ubuntu 슈퍼 데몬 (보안 기능 포함)
		pstree - 프로세스 계층 구조 확인

	리눅스 주요 데몬
		sshd - 원격 접속 서비스 제공
		http - 웹서비스 제공
		ftpd - FTP서비스 제공
		nfs - 네트워크 파일 시스템
		crond - 주기적으로 예약된 명령 실행 서비스
		lpd - 프린트서비스
		ntpd - 시간 동기화 서비스
  1. 소프트 웨어 관리

Linux 환경에서 Application(프로그램) 설치 방법
Application source를 다운로드 또는 복사 하여 직접 compile 과정을 통해 설치
-> 한번에 원하는 결과물을 얻기 어렵다.
-> 컴파일 과정은 환경에 영향을 많이 받기 때문에 실제 최종 결과물을 얻기 까지 많은 시행착오 발생

	Application package 파일을 다운로드 또는 복사 하여 직접 package를 이용한 설치
		-> 어플리케이션 패키지 파일 안에는 해당 어플리케이션 설치를 위해 필요한 의존성 파일을 포함해서 제공
		-> Debian 계열 패키지 파일 - .deb 파일 / dpkg 명령으로 설치 제거 업그레이드 관리 수행!
		-> Redhat 계열 피키지 파일 - .rpm 파일 / rpm 명령으로 설치 제거 업그레이드 관리 수행!
		
	만약 크롬을 패키지로 설치 했어도 바로 크롬을 쓸 수는 없다 -> 패키지 파일을 열어서 설치해야함

	각 배포판에서 운영하는 repository(원격 저장소)를 통하여 원하는 Application package를 다운로드 설치
			Debian 계열 - apt 명령
			Redhat 계열 - yum 명령
				
	dpkg 명령
		Debian 계열 패키지 관리 명령
		dpkg [옵션] <.deb. 파일  또는 패키지 >
			-l (소문자 엘)설치된 패키지 목록 확인
			-L <패키지명> - 해당 패키지로부터 설치된 모든 파일 목록 확인
			-s <패키지명> - 해당 패키지 정보 확인
			-l (대문자 아이)<.dev파일명> - .deb 파일 정보 확인
			-I(아이) <.dev 파일명> - 패키지 설치 또는 업그레이드
			-r <패키지명> - 패키지 삭제
			-p <패키지 > - 패키지 설정 파일 삭제 
			

	apt 명령
		Debian 계열 온라인 repository를 통한 패키지 관리 명령
		Ubuntu 패키지와 패키지 정보를 관리하는 패키지 서버 정보는 /etc/apt/sources.list 파일에 저장

		기본적으로 저 파일에 등록된 서버로부터 원하는 패키지에 대한 검색 , 다운로드가 가능하다
		만약 별도의 repository로부터 패키지를 설치하려면 해당 repository 서버 주소 등록 수 사용한다

		apt-cache 명령
			apt 캐시 (패키지 데이터 베이스)에서 정보 검색
			apt-cache [옵션] 서브 명령
				-f 검색 결과 전체 정보 출력
				서브 명령
					search 키워드 - 캐시에서 키워드 검색
					show 패키지 - 패키지에 대한 정보 출력
				
			apt-get 명령
				패키지 관리 명령
				온라인 repository로 부터 패키지 download 및 설치, 삭제, 업그레이드 등의 관리 수행

				[sudo] apt-get [옵션] <서브 명령>
				-d 패키지 다운로드
				서브 명령
					update -  repository 의 새로운 패키지 정보 다운로드
					upgrade - 현재 설치된 패키지 업그레이드
					install 패키지 - 패키지 설치
					remove 패키지 - 패키지 삭제  (설정 파일 삭제 안함)
					purge 패키지 - 패키지 삭제(설정 파일 삭제)
					autoremove - 불필요한 의존성 패키지 삭제

			Linux booting 후나 패키지 설치 전에 항상 
			sudo apt-get update 명령을 통해 새로운 패키지 정보 확보 후 필요한 패키지 설치

	ssh 데몬 설치
		sudo apt-get update
		sudo apt-get install opens-server

		systemctl status sshd.service 로 서비스 실행 유무 확인하기!
profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글