반응형
개인적으로 스토리지 공부를 위해 정리한 내용들입니다.
함께 공부하자는 취지로 내용을 공유합니다.
1. LVM(Logical Volume Management)이란?
- 파일시스템과 물리 저장소 사이를 직접 연결하는 불편함을 제거하기 위한 기능
- Linux 환경에서 파일 시스템과 물리 저장소 사이의 추상 레이어를 제공 → 볼륨을 손쉽고 유연하게 관리할 수 있는 기능을 제공
- LVM 구분
- PV(Physical Volume)
- VG(Volume Group)
- LV(Logical Volume)
2. PV (Physical Volume)
- PV는 실제 물리 디스크를 LVM 용도로 초기화된 물리 디스크 또는 파티션
- ex) /dev/sda, /dev/sda1
- ex) KVM 환경에서 /dev/vda
- PV는 PE (Physical Extent)라는 단위로 나뉨
- PE 기본값 : 4MB
- PE 값 : 볼륨 그룹을 생성할 때 지정
- 데이터의 크기가 큰 파일을 자주 사용하는 경우 : 큰 사이즈의 extent가 적합
- 데이터의 크기가 작은 파일을 자주 사용하는 경우 : 작은 사이즈의 extent로 설정하는 것이 좋음
- PV에서는 LVM Label과 LVM Metadata를 포함
- LVM Label : 물리 장치를 식별하고 순서대로 나열, 물리 볼륨의 UUID를 포함, 블록 장치 크기를 바이트 단위로 저장
- LVM Metadata : 장치에 저장될 위치를 기록, LVM 볼륨 그룹에 대한 구성 정보를 포함, ASCII로 저장
- PV 명령어
- pvscan : PV에 대한 디스크를 확인 후 이를 출력
- pvcreate : 물리 디스크 를 PV로 초기화하기 위해 사용
- pvdisplay : PV에 대한 세부 정보를 출력
- pvremove : PV를 제거하기 위해 사용
3. VG (Volume Group)
- 하나 이상의 PV를 가지고 만든 물리적 볼륨의 집합
- PV는 단 하나의 VG에만 포함될 수 있음
- VG를 만든다는 건 논리적 볼륨을 할당할 수 있는 디스크 공간 풀 생성하는 것
- VG는 LE(Logical Extent)를 PE(Physical Extent)로 맵핑하는 역할
4. LV (Logical Volume)
- 사용자가 직접 다루는 논리적인 볼륨 공간
- Windows에서 제공하는 C드라이브, D드라이브를 Linux의 LV로 생각하시면 됨
- LV에는 여러 종류가 존재하고 각각의 LV는 장단점이 존재함
- PV를 PE로 나누듯이 LV는 LE(Logical Extent)로 나누어져 있음
- LE(Logical Extent)의 사이즈는 PE(Physical Extent)와 동일하게 설정
- 각 LE들은 LV마다 0번부터 시작하고 PE에 맵핑됨
(1) linear volume
- VG에 할당된 PV를 하나의 LV로 모으거나 다수의 LV로 나누어 사용
- 가장 기본적인 LV로 특별한 장점도 단점도 없음
(2) RAID volume
- RAID 0, 1, 4, 5, 6, 10 을 지원
- MD 커널 드라이버를 활용
- 스냅샷 기능을 사용할 수 있음
(3) striped volume [raid0]
- 데이터를 기록할 때 라운드-라운드 방식으로 지정된 물리 볼륨에 데이터를 작성하여 성능을 향상시킴
- I/O를 병렬로 실행할 수 있는 장점이 있음
- 상황에 따라 Linear volume에 가까운 성능 향상을 기대할 수 있음
- 단, striped 방식의 특성상 최소 2개 이상의 물리 볼륨이 필요
(4) mirror volume [raid1]
- 데이터의 안정성을 위하여 데이터를 다른 장치에 복사본 저장
- 만약 한쪽의 장치에 장애가 발생할 경우 논리 볼륨은 다른 한쪽으로 선형 볼륨이 되어 액세스가 가능
(5) thin volume
- Thin porivisioning 기술을 이용한 볼륨
- 가상 풀을 사용하여 효율적인 스토리지 공간 할당을 하기 때문에 사용 가능한 범위보다 더 큰 논리 볼륨을 생성할 수 있음
- 기존의 다른 LV들은 PV를 VG로 묶고 VG에 LV를 만들면 LE가 각각의 PE에 맵핑되어 실제로 사용하지 않고 있더라도 다른 LV로 생성할 수 없음
- 하지만 Thin provision을 사용한다면 Thin Pool이라는 가상 풀을 만들어서 VG에는 Thin Pool만큼만 차지하고 각각의 LV들은 실제 사용량 만큼만 공간을 차지하게 됨
- Thin LV들은 다른 논리 볼륨과 다르게 Thin pool이라는 가상풀을 사용하기 때문에 PE에 직접 맵핑되지 않고 Virtual Extent라는 가상 extent에 맵핑됨
- Thin provision의 중요한 점은 Thin Pool이 실제로 꽉 차기 전에 사용자가 적절히 확장을 해주어야 한다는 점
5. Snapshot
- 데이터를 백업하는 방법 중 하나
- 용량이 큰 데이터를 완전히 백업할 때 많은 시간이 필요하기 때문에 스냅샷 생성을 기준으로 데이터를 그대로 유지시키는 방법
- 기존의 데이터는 읽기 전용 복사본으로 고정시키고 프로그램에서는 데이터를 계속 쓸 수 있도록 해주는 방법
(1) COW [Copy-on-Write]
- 구성이 끝난 후 스냅샷 공간을 할당하기 어렵기 때문에 스토리지를 구성할 때 미리 스냅샷을 위한 공간을 할당
- 기존 데이터에서 스냅샷을 생성하면 스냅샷은 기존 데이터를 가리키게 됨
- 그 후 데이터의 변경이 일어날 경우에 데이터를 스냅샷 공간으로 데이터를 복사하고 스냅샷은 복사한 데이터를 가리키게 됨
- 스토리지를 구성할 때 미리 스냅샷을 위해 1~20% 공간을 할당
- 구성이 끝난 후 스냅샷 공간을 할당하기 어려움
- 원본 데이터가 변경될 때는 I/O 성능이 떨어지는 문제가 있음
- 데이터가 변경되면 스냅샷 공간으로 원본 데이터를 복사
(2) ROW [Redirect-on-Write]
- 스냅샷을 위한 별도의 공간이 필요하지 않음
- 이 방식에서 스냅샷을 생성하면 기존 데이터를 가리키는 것까지는 COW 방식과 차이가 없음
- 다만 데이터가 변경된 이후에 스냅샷은 기존 데이터를 프리징 시키고 변경하려고 하는 데이터를 새로운 스냅샷 공간에 작성함
- 스냅샷을 위한 별도의 공간을 미리 확보하지 않아도 됨
- 데이터가 생성되면 스토리지 OS나 LUN 컨트롤러에서 데이터의 위치를 기록하고 관리
- 데이터가 변경되면 원본 데이터를 스냅샷 블록으로 사용하고, 새로운 블록을 할당받아서 데이터를 관리
6. 전체 기본 구조도
- LVM의 전체 그림을 보면 물리 디스크를 PV로 만들고 각 PV들은 하나의 VG에 속하게 됨
- LV는 VG를 통하여 각 LE를 PE에 용량이나 볼륨 타입에 맞게 맵핑
7. 정보 출처
https://tech.gluesys.com/blog/2019/04/08/LVM.html
반응형
'IT 이야기 > 공부합시다' 카테고리의 다른 글
[스토리지] 데이터 티어링(스토리지 티어링) (0) | 2023.06.16 |
---|---|
[스토리지] 중복제거 (2) | 2023.06.16 |
[스토리지] 스케일 업과 스케일 아웃 (0) | 2023.06.16 |
[스토리지] 스토리지 프로토콜 (0) | 2023.06.16 |
[스토리지] DAS, SAN, NAS (0) | 2023.06.16 |
댓글