논리 볼륨을 구성하려면 물리 볼륨, 볼륨 집단이 필요함
PE
크기 지정 (default 4MB)*PE
논리 볼륨 생성 또는 확장 시 사용할 수 있는 최소 단위
PE
개수, MB 와 같은 단위로 지정저번에 파티션해둔 디스크 확인
파티셔닝 해둔 디스크 타입 변경 (새로 추가한 디스크 파티셔닝해도 됨)
4번 파티션을 Linux LVM
타입으로 변경
w 로 저장하고 나오기
파티션 타입 변경 완료
물리 볼륨 만들기
파티션의 mount를 해제해야 설정이 가능함
precreate [장치 이름]
볼륨 그룹 만들기
vgcreate [option] [volume-group-name] [physical-volume1] [physical-volume2] [...]
-s
옵션 사용 시 PE
크기 단위로 할당 및 조정 가능
vgcreate -s 10M [이하 동일]
논리 볼륨 만들기
lvcreate [option] [volume-group-name]
vg 남아있는 용량 다 lv로 만들래 -> lvcreate -l 100%FREE -n lv_test4 vg_test4
*option
-l
: PE 개수 지정
-L
: 사이즈로 지정 (MB)
-n
: 이름 지정
논리볼륨의 장치이름(경로)를 따라가보면 심볼릭 링크가 생성된 것을 볼 수 있음
논리 볼륨 파일 또한 일반 파티션과 동일한 블록 장치 파일을 가리키는 심볼릭 링크 파일인 것을 알 수 있음
논리 볼륨 확인 명령어
lvs
or lvdisplay
로 논리 볼륨 확인
*물리 볼륨, 볼륨 그룹 확인 명령어
pvs
or pvdisplay
or lvmdiskscan
vgs
or vgdisplay
논리 볼륨에 파일시스템 적용
파일시스템 타입 옵션 mkfs.ext4
or mkfs -t ext4
로 둘다 가능
mkdir lvm
으로 디렉토리 생성
mount /dev/mapper/vg_test-lv_test4 /lvm
로 마운트
아무 파일이나 해당 마운트 지점에 복사해봄
사용 가능한 볼륨인 것을 확인!
lost+found 디렉터리란..?
"lost+found"는 하드디스크의 파티션마다 생김
오류 등으로 인해 정상적인 종료를 하지 못했을 때 메모리나 버퍼의 내용을 담고 있다가 재부팅시 복구에 이용함
볼륨 그룹 확장
먼저 남는 파티션 하나 umount
하고 lvm 타입으로 변경 후 물리 볼륨으로 생성
vgextend [volume-group-name] [파티션 장치이름]
PV 가 2개인 것을 확인 할 수 있음 -> 볼륨 그룹 확장 완료!
논리 볼륨 확장
lvextend [option] [PE개수 or 사이즈] [logical-volume-name]
df -h
로 확인했을 때 확장된 모습을 볼 수 없음
-> 확장된 부분에는 fs 을 아직 생성하지 않았기 때문에 fs 도 확장해주어야 함
resize2fs [logical-volume-path]
resize2fs /dev/mapper/vg_test4-lv_test4
로 파일시스템 확장
*파일시스템마다 명령어 다름
xfs: xfs_growfs [mount-point]
이슈 발견
+
기호를 빼고 용량을 추가하려 했을 때 위와 같은 메세지가 떴음
기존 파티션은 5GB 였고, 추가하려는 파티션은 1GB 였는데, 추가하려는 파티션의 용량이 적어서 확장이 안된다고 나온 메세지 였음
+
없이 해당 명령어를 작성하면, 추가하려는 파티션의 용량으로 변경이 되기 때문에 현재 존재하는 파티션보다 적으면 안된다고 하는 것 같았음
그래서 다른 파티션으로 실습을 해서 눈으로 확인해봄
디스크를 하나 추가하고 파티션을 2개로 나눔
파티션을 lvm 타입으로 변경하고 물리 볼륨 -> 볼륨 그룹 으로 생성했음
파일시스템 적용 후 마운트 지점인 디렉토리 생성 하고, mount
까지 함
sdc2 도 동일하게 해주었음
+
기호 없이 논리 볼륨 확장 시도
추가 파티션 sdc2 (2GB) | 기존 파티션 sdc1 (1GB) 이므로 오류 없이 명령어가 실행됨
resize2fs
명령어로 파일시스템의 크기도 확장
df -h
로 3GB 확장이 아닌 2GB 로 변경된 것을 볼 수 있음
결론
논리 볼륨 확장 시+
기호를 반드시 붙여야 하며, 기호없이 사용 시 추가하려는 용량의 파티션만큼 크기가 변경됨
(그래서 추가 파티션의 용량이 같거나 작으면 진행되지 않음)
쓸데없는 궁금증 2
sdb2 장치의 경로로 가서 he, hello 파일을 만들고, umonut
로 마운트 해제를 하려 했으나 target is busy 라는 메세지와 함께 명령어가 실행되지 않았음
-> 현재 sdb2 경로에 접속한 상태여서 위와 같은 현상이 발생한것
해당 디렉터리에서 벗어나 마운트 해제를 하고 확인해 봄
sdb2 의 디렉터리는 그대로 남아있음
그리고 해당 디렉토리에 접근해서 파일을 확인했더니 데이터는 없음
새로운 디렉토리를 생성함
해당 디렉토리에 sdb2 장치를 마운트해봄
위에서 작성했던 데이터(he, hello)를 확인할 수 있음
결론
mount
는 논리적인 개념이기 때문에 데이터에는 영향을 끼치지 않음.
mount
는 파일시스템에 접근할 수 있는 경로일 뿐임.
/mnt/sdb2_test 는 마운트 포인트일 뿐이고, 마운트 시에 파티션 된 장치 (/dev/sdb2) 를 가리키는 것임