논리볼륨은 일반적인 소토리지 관리 방식보다 유연한 스토리지 관리 기능을 제공한다.
💡논리 볼륨 장점
- 디스크 파티션의 구조와 상관없이 원하는 크기의 논리볼륨 생성가능
- 논리볼륨으로 생성된 볼륨의 사이즈가 부족할 경우 볼륨 확장 가능, 이때 볼륨 내에 데이터를 그대로 유지한 상태에서 볼륨확장 가능
- 데이터를 유지한 상태에서 디스크 제거도 가능
- 논리 볼륨 생성 시 RAID를 적용한 볼륨을 생성가능
LVM: 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있도록 해준다. 논리 볼륨을 구성 할 때는 PV -> VG -> LG 순서로 진행된다.
PV(physical volume): 각각의 파티션은 PV로 만든다. /dev/sdb1 같은 실제 하드디스크의 파티션을 의미한다.
VG(volume group): 여러개의 PV를 그룹으로 묶은 것을 의미한다.
LV(logical volume): VG를 다시 적절한 크기의 파티션으로 나눌때 각 파티션을 LV라고 한다. 이 파티션은 물리적인 한계를 초월하여 우리가 원하는대로 사용이 가능하다.
df
물리볼륨생성 : pvcreate 장치명1
볼륨그룹생성 : vgcreate vg명 pv명...... -s pe 사이즈
논리볼륨 생성: lvcreate vg명 -n lv명 (-L 실제크기 / -l pe 갯수)
물리볼륨 삭제 : pvremove pv명...
볼륨그룹 삭제 : vgremove vg명
논리볼륨 삭제 : lvremove lv경로
1. 파티션을 만든후 파일시스템 파입을 8e(LVM)으로 바꾼다. lvmdiskscan 명령으로 논리 볼륨을 구성하기 위해 파티션 정보를 확인할 수 있다.
2. 만든 파티션에 pv를 생성한다. 그후 pvscan으로 pv의 상태를 확인하고 pv를 통합하여 vg를 생성한다. vg로 만들때는 물리적인 한계없이 어떤 디스크든 합칠 수 있다. vgdisplay -v 명령으로 vg의 자세한 정보를 확인할 수 있다.
3. lvcreate를 이용해 vg를 lv로 만들 수 있다. -l 옵션은 PE개수를 입력하는데 512개를 하면 4G가 된다. -L옵션은 사이즈를 입력하는 것을 의미한다.4. 01은 xfs, 03은 ext4로 포맷을 진행한다.
5. 만든 lv를 mount한다. lsblk로도 확인 가능하다.
6. 생성했던 것들은 지우기 위해서는 umount -> lvremove -> vgremove -> pvremove -> 파티션 제거 순으로 차례대로 지우면 된다.
💡 RAID(Redundant Array of Inexpensive Disks, Redundant Array of Independent Disks)
개별 디스크드라이브를 묶어서 고가의 대용량 고성능 디스크 드라이브의 성능과 기술을 구현 하기 위해 만들어진 기술이다.
RAID 0: 데이터를 블록 단위로 분할해 복수의 디스크에 분산하고 배치하는 것으로 읽기·기입 속도가 높다. 단 RAID 내의 HDD가 1대라도 고장났을 때에는 파일의 복구를 할 수 없게 된다.
RAID 1: 같은 데이터를 복제하고 2개의 디스크에 쓰는 방식으로 “미러링”이라고도 불린다. 어느 한쪽의 HDD가 고장났다고 해도, 모든 파일이 남는 신뢰성이 메리트이다. 반면, 같은 데이터를 2대의 HDD에 쓰는 것으로부터 용량 코스트가 배가 된다는 단점을 가지고 있다.
이 서비스는 기존의 init 스크립트를 대체한 것으로 최신 리눅스에 도입되고 있는 새로운 PID 1번 프로세스이다. 기존 init프로세스는 부팅과정에서 각종 서비스를 제공하는 셸 스크립트 파일을 실행한다. 프로세스 설정파일은 /etc/inittab에 존재했다.
systemd는 소켓기반으로 동작하며 init프로세스에 대한 호환성을 제공하고 셸과 독립적으로 부팅이 가능하다.
sysytemd는 전체 시스템을 시작하고 관리하는데 유닛이라 부르는 구성요소를 사용하고 각 유닛은 같은 이름과 종류로 구성된 설정파일과 동일한 이름을 사용한다.
systemctl
start, stop, status, enable, disable, restart 등이 중요하다.
런레벨과 target유닛간의 관계를 보여준다.
systemctl -get-default로 현재 target을 알수 있고, runlevel 명령으로 런레벨을 확인할 수 있다.
shutdown
telinit 0 or telinit 6
기타 종료 명령
리눅스 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스이다. 리눅스 시스템에서 동작하는 각종 서비스를 제공하는 프로세스들이 바로 데몬이다. 보통 d로 끝나는 것들이다.(sshd)
커널의 일부분을 프로세스처럼 관리하는 데몬이다. ps 명령으로 확인했을때 대괄호([ ])로 둘러싸여 있는 프로세스들이다. 커널 데몬은 대부분 입출력이나 메모리 관리, 디스크 동기화 등을 수행하며 대체로 낮은 PID를 할당받는다.
주요 데몬
GRUB: 리눅스의 전통적인 부트로더인 LILO의 단점을 보완하여 GNU 프로젝트의 일환으로 개발된 것이다. 부팅시 명령을 사용하여 수정이 가능하고 멀티부팅 기능을 지원한다.
사용자가 사용가능한 타켓유닛
부트로더에서 부팅할 커널 항목 선택한다. 부트로더 단계에서 방향키로 부팅할 커널 항목을 변경하면 카운트를 중지시킬 수 있다.
선택된 커널 항목에서 'e'키를 누르면 실행할 커널의 설정값을 수정할 수 있다. linux16로 시작히는 줄 마지막, 즉 UTF-8 뒤에 램디스크 초기화를 중단하는 옵션인 rd.break를 입력한 후 ctrl+x를 입력한다.
위 과정을 진행하면 switch_root# 쉘로 진입한다. /sysroot에 읽기전용으로 마운트 되어있기 때문에 읽기쓰기(rw)로 다시 마운트를 진행한다. 마운트의 -o 옵션을 사용하여 remount,rw를 인자로 지정하면 읽기쓰기로 다시 마운트 된다.
chroot 명령은 루트 리렉터리를 변경하는 명령이다. /sysroot를 루트 디렉터리로 변경하면 다시 본 쉘로 접근한다. 이때 passwd 명령으로 패스워드를 변경해주면 된다.
mount | grep -w '/sysroot'
mount -o remount,rw /sysroot
chroot /sysroot