[Xcp ng center] 리눅스 디스크 (용량)추가, 디스크 마운트, 디스크 용량 늘리는 방법
VM에 리눅스 OS를 설치하여 사용중, 해당 서버에 디스크 추가 및 용량 증설이 필요하여 알아봄.
서버에서 df -h로 디스크 정보를 확인
# df -h
서버에 파일 디렉토리를 하나 만들어서, 디스크 추가 하여 마운트 해보자.
우선 디렉토리를 하나 만들어두자
# mkdir /storage1
1. (가상)디스크 추가
Xcp ng center 로 돌아와서
VM 선택 > Storage 탭 클릭
빈 공간 우 클릭 > Add.. 클릭
Disk 네임과, 설명 입력 > 용량 설정 > Add 클릭
추가 완료
2. 디스크 마운트
추가한 디스크(storage1/1G)를 서버에서 생성해둔 /storage1 디렉토리 마운트 해보자.
디바이스경로를 확인 : dev/xvdg
storage1 디스크가 /dev/xvdg 에 연결되어 있음을 확인.
서버에서 파티션을 생성
# fdisk /dev/xvdg
n 키를 눌러 새로운 파티션을 생성
나머지는 기본 옵션을 선택(엔터) 후 w로 저장하고 종료
파일 시스템 생성
새로 생성한 파티션을 /dev/xvdg1에 파일 시스템을 생성.
새로운 디스크를 vm에 추가하고 파티션을 생성하면, 이 추가한 파티션은 아직 파일 시스템이 없는 “비어 있는” 상태이기 때문에, 사용하려면 파일 시스템을 생성해야 함(파일 시스템을 생성함으로써 운영체제가 디스크를 읽고 쓸 수 있게 됨)
# mkfs.ext4 /dev/xvdg1
/dev/xvdg1 파티션에 ext4 파일 시스템을 생성하는 명령으로, 새로 추가한 디스크(파티션)을 사용할 수 있도록 파일시스템을 만드는 과정임.
mkfs : Make File System의 약자로, 파일 시스템을 생성하는 명령이다.
ext4 : 생성할 파일 시스템의 형식을 지정, ext4는 현재 많이 사용되는 리눅스 파일 시스템 형식 중 하나임.
/dev/xvdg1 : 파일 시스템을 생성할 대상 디스크 파티션
디스크 마운트
마운트 포인트 생성은 위에서 이미 해두었다(mkdir /storage1)
생성해둔 마운트 포인트(디렉토리) /storage1 에 위에서 추가한 디스크를 마운트 해보자.
# mount /dev/xvdg1 /storage1
마운트가 정상적으로 되었는지 확인.
# df -h
영구 마운트 설정
추가로, 영구 마운트 설정을 해주자, 이 설정을 해주지 않으면, 재부팅 하게되면 연결된 마운트 정보가 모두 날아가게 된다.
# echo ‘/dev/xvdg1 /storage1 ext4 defaults 0 0’ >> /etc/fstab
편집기로 적용 되었는지 확인.
이제 재부팅을 하여도 마운트 설정이 그대로 유지 된다.
3. (추가한)디스크 용량 늘리는 방법
위에서 생성한 디렉토리(/storage1)의 용량이 1G인데, 추가로 1G를 더 늘려보자
가상 디스크를 하나 더 추가하여, 디렉토리(/storage1)의 용량을 늘려보자.
Xcp ng center에서 VM클릭 > Storage > 마우스 우클릭 > Add…클릭
가상디스크 정보 입력 후 Add 클릭
확인
추가한 storage2 디스크 용량을 /storage1 디렉토리에 마운트 해보자.
디스크 파디션 확인
# lsblk
위 명령어로 파티션 볼륨그룹을 확인해보자
part 로 만들었기 때문에 저장소(디스크)관리가 매우 불편 할 수 있다. LVM으로 관리하는게 정신건강에 좋다
LVM
잠시 LVM에 대해 간략히 알아보면 아래와 같다.
LVM (Logical Volume Manager)은 기존의 파티션 방식보다 유연하고 강력하게 디스크 스토리지를 관리할 수 있는 도구로, 서버나 대용량 저장소 환경에서 많이 사용되며, 다음과 같은 주요 개념과 장점이 있다
주요 개념
- 물리 볼륨 (PV, Physical Volume) : 실제 물리적 저장 장치나 특정 파티션을 LVM에서 사용할 수 있도록 초기화한 것. 예를 들어, /dev/sda1 같은 디스크 파티션을 PV로 설정할 수 있다.
- 볼륨 그룹 (VG, Volume Group) : 여러 개의 물리 볼륨(PV)을 묶어 하나의 큰 스토리지 풀로 만든 것. VG는 여러 디스크를 합쳐 큰 저장 공간처럼 사용할 수 있게 해 준다.
- 논리 볼륨 (LV, Logical Volume) : VG 안에서 만든 가상의 파티션. LV는 일반 파티션과 달리 크기를 동적으로 조정할 수 있어, 필요에 따라 쉽게 확장하거나 축소할 수 있다.
LVM의 장점
- 유연한 크기 조정 : LV의 크기를 필요에 따라 확장하거나 축소할 수 있어 고정된 파티션의 제약에서 벗어날 수 있다.
- 스토리지 풀링 : 여러 디스크를 하나의 VG로 묶어 큰 저장소처럼 관리할 수 있다.
- 스냅샷 : 특정 시점의 파일 시스템 상태를 복사본으로 저장할 수 있어 백업이나 복구에 유용하다.
- 디스크 관리 용이성: 시스템을 중단하지 않고도 디스크를 추가하거나 제거할 수 있어, 서버 환경에서 특히 유리함.
사용 예
- 저장소 확장 : 특정 LV의 공간이 부족할 때, 새 디스크를 추가하고 PV로 설정한 후 기존 VG에 추가해 LV의 크기를 늘릴 수 있다.
- 데이터 마이그레이션 : 하나의 디스크에서 다른 디스크로 데이터를 이동하면서도 서비스를 중단하지 않고 운영할 수 있어서, 무중단 조정이 가능하다.
LVM을 사용하면 /storage1 같은 마운트 포인트에 스토리지를 유연하게 추가할 수 있다. 이는 서버나 대용량 데이터 환경에서 매우 유용하며, 저장소 관리가 편리해지는 장점이 있어 엔터프라이즈급에서 많이 사용함.
기존에 생성했던 파티션을 삭제하고 lvm으로 파티션을 다시 생성해주자.
(처음부터 lvm 형태로 생성하는 방법은 맨 아래 lvm 파티션 생성부분 참고)
즉, /storage1을 LVM으로 변환하고, 새로 추가된 1GB 크기의 디스크(/dev/xvdh)를 LVM에 통합하여 용량을 확장해보자
파티션 삭제
아래의 순서대로 삭제 후 다시 생성해주면 된다.
fdisk에서 기존 파티션 삭제
storage1의 파티션 삭제 진행
# fdisk /dev/xvdg
파티션 목록 확인
p를 입력하여 현재 파티션 목록을 확인
(잘못 생성한)기존 파티션 삭제
d 명령을 사용하여 기존 파티션을 삭제
예를 들어, 1번 파티션을 삭제하려면 d를 입력하고, 파티션 번호로 1을 입력.
(여러 개의 파티션이 있다면 각 파티션에 대해 d 명령을 반복해서 입력)
위의 경우 파티션이 하나밖에 없어서 d를 입력하면 됨.
변경 사항 확인
p를 다시 입력해 파티션이 모두 삭제되었는지 확인.
LVM 파티션 생성
/dev/xvdg 파티션을 제거하였으니, 이제 LVM 파티션으로 다시 생성해준다.
xvdg를 LVM 물리 볼륨으로 초기화
# pvcreate /dev/xvdg
WARNING: dos signature detected on /dev/xvdg at offset 510. Wipe it? [y/n]
pvcreate 명령어는 LVM을 위해 디스크를 초기화하며, 이 과정에서 기존 파티션 정보를 지워야 하기 때문에 확인을 요청하는 것임.
y를 입력하여 기존의 파티션 정보를 삭제하고 LVM 초기화가 진행.
(이 작업을 수행하면 디스크에 있는 기존 데이터는 모두 삭제됨, 중요 자료가 있는경우 백업 확인은 필수)
새로운 볼륨 그룹(vg_storage) 생성
# vgcreate vg_storage /dev/xvdg
논리 볼륨(lv_storage) 생성
# lvcreate -l 100%FREE -n lv_storage vg_storage
WARNING: ext4 signature detected on /dev/vg_storage/lv_storage at offset 1080. Wipe it? [y/n] /dev/vg_storage/lv_storage 논리 볼륨에 이미 ext4 파일 시스템 서명이 있어서 나타나는 것인데, 이 메시지가 뜨는 이유는 해당 디스크 또는 논리 볼륨이 이미 초기화되었거나 이전에 사용된 적이 있기 때문 임
y를 입력하고 Enter를 눌러 기존 파일 시스템 서명을 삭제하고 새로운 논리 볼륨을 생성 진행.
파일시스템 생성 및 마운트
논리 볼륨에 파일 시스템을 생성하고 마운트 해준다.
파일시스템 생성
# mkfs.ext4 /dev/vg_storage/lv_storage
마운트
# mount /dev/vg_storage/lv_storage /storage1
# df -h로 확인
Lvm 적용여부 확인
# lsblk
storage1 디스크, lvm 으로 생성 됨을 확인.
자동 마운트 설정
/etc/fstab 파일에 자동 마운트를 추가하여, 재부팅 되어도 자동 적용되게 설정.
# echo ‘/dev/vg_storage/lv_storage /storage1 ext4 defaults 0 0’ | sudo tee -a /etc/fstab
편집기로 적용되었는지 확인
# vi /etc/fstab
용량 확장
2번째로 디스크로 추가한 storage2(/dev/xvdh)를 LVM 물리 볼륨으로 초기화하고, 기존 볼륨 그룹에 추가 해준다.
LVM 물리 볼륨으로 초기화
# pvcreate /dev/xvdh
기존 볼륨 그룹(vg_storage)에 추가
# vgextend vg_storage /dev/xvdh
논리 볼륨(lv_storage) 크기 확장
# lvextend -l +100%FREE /dev/vg_storage/lv_storage
+100%FREE 옵션은 볼륨 그룹에 남아 있는 모든 여유 공간을 lv_storage 논리 볼륨에 추가하겠다는 의미임
볼륨그룹중 일부 용량만 추가하려면, -l 대신 -L 옵션을 활용하면 됨
아래와 같이-L +500M 옵션을 사용하면, 논리 볼륨에 정확히 500MB를 추가할 수 있음
( # lvextend -L +500M /dev/vg_storage/lv_storage )
# resize2fs /dev/vg_storage/lv_storage
resize2fs /dev/vg_storage/lv_storage 명령은 ext2, ext3, ext4 파일 시스템을 크기에 맞게 조정하는 명령어로, 논리 볼륨(LV)을 확장한 후, 파일 시스템의 크기도 그에 맞춰 확장해 주어야 하는데, resize2fs 명령가 이 역할을 함.
resize2fs 명령은 지정한 논리 볼륨의 파일 시스템 크기를 논리 볼륨의 전체 크기에 맞춰 자동으로 확장함.(논리 볼륨을 축소할 경우에도 resize2fs를 사용하는데, 이때는 파일 시스템을 먼저 축소한 후 논리 볼륨을 줄여야 함)
df -h 명령어를 사용하여 /storage1의 용량이 증가했는지 확인
1G -> 2G로 Size가 늘어남을 확인.
자주쓰는 명령어
LVM(Logical Volume Manager) 관련 디스크와 볼륨 상태를 확인할 때 자주 사용하는 명령어
pvscan – 물리 볼륨 (PV) 스캔
vgdisplay – 볼륨 그룹 (VG) 상태 표시
lvdisplay – 논리 볼륨 (LV) 상태 표시
끝.
(LVM용)파티션 생성
추가한 디스크(storage2 /dev/xvdh)에 파티션을 생성
# fdisk /dev/xvdh
# n을 눌러 새로운 파티션을 생성
# 모두 기본 선택(엔터)
# t를 눌러 파티션 타입을 8e(Linux LVM)로 설정
# 마지막으로 w를 입력하여 저장 후 종료
(8e 타입은 파티션을 LVM 용도로 사용하겠다는 의미임)
LVM(Logical Volume Manager)
리눅스에서 디스크 공간을 동적으로 관리할 수 있도록 도와주는 시스템으로 위에서 이미 다 설명했지만, 간략히 다시 설명하면, LVM을 사용하면 볼륨 그룹을 보다 쉽게 확장하거나 축소할 수 있으며, 논리 볼륨을 쉽게 생성하거나 조정할 수 있어 유연하게 디스크 공간을 사용할 수 있음