웹사이트 검색

LVM(논리 볼륨 관리)에서 씬 프로비저닝 볼륨 설정 - 4부


논리 볼륨 관리에는 스냅샷 및 씬 프로비저닝과 같은 뛰어난 기능이 있습니다. 이전 (파트 – III)에서 논리 볼륨의 스냅샷을 만드는 방법을 살펴보았습니다. 이번 글에서는 LVM에서 씬 프로비저닝 볼륨을 설정하는 방법을 살펴보겠습니다.

씬 프로비저닝이란 무엇입니까?

Thin Provisioning은 씬 풀 내부에 가상 디스크를 생성하기 위해 lvm에서 사용됩니다. 내 서버에 15GB의 저장 용량이 있다고 가정해 보겠습니다. 이미 각각 5GB의 저장 용량을 가진 2명의 클라이언트가 있습니다. 귀하는 세 번째 고객이시며 5GB의 저장 공간을 요청하셨습니다. 그 당시 우리는 전체 5GB(Thick Volume)를 제공했지만 해당 5GB 스토리지에서 2GB를 사용할 수 있으며 3GB는 무료로 나중에 채울 수 있습니다.

그러나 씬 프로비저닝에서 수행하는 작업은 대규모 볼륨 그룹 중 하나 내부에 씬 풀을 정의하고 해당 씬 풀 내부에 씬 볼륨을 정의하는 것입니다. 따라서 작성한 모든 파일이 저장되고 저장 공간은 5GB로 표시됩니다. 그러나 전체 5GB는 전체 디스크를 할당하지 않습니다. 다른 클라이언트에도 동일한 프로세스가 수행됩니다. 내가 말했듯이 고객은 2명이고 당신은 나의 세 번째 고객입니다.

그러면 클라이언트에 할당한 총 GB가 얼마나 되는지 가정해 보겠습니다. 벌써 총 15GB가 완성되었는데 누가 오셔서 5GB 달라고 하면 드릴까요? 대답은 ""입니다. 여기 씬 프로비저닝에서는 15GB를 할당했지만 네 번째 클라이언트에 5GB를 제공할 수 있습니다.

경고: 15GB부터 15GB 이상을 프로비저닝하는 경우 이를 오버 프로비저닝이라고 합니다.

어떻게 작동하나요? 신규 고객에게 스토리지를 어떻게 제공하나요?

5GB를 제공했지만 2GB만 사용할 수 있으며 나머지 3GB는 무료입니다. Thick Provisioning에서는 처음에 전체 공간을 할당하기 때문에 이를 수행할 수 없습니다.

씬 프로비저닝에서 5GB를 정의하면 볼륨을 정의하는 동안 전체 디스크 공간을 할당하지 않고 데이터 쓰기에 따라 5GB까지 늘어납니다. 이해하시길 바랍니다! 귀하와 마찬가지로 다른 클라이언트도 전체 볼륨을 사용하지 않으므로 새 클라이언트에 5GB를 추가할 기회가 있을 것입니다. 이를 프로비저닝을 통해 호출합니다.

그러나 모든 볼륨 증가를 모니터링하는 것은 필수입니다. 그렇지 않으면 재앙이 될 것입니다. 오버 프로비저닝이 완료되는 동안 클라이언트 4개 모두가 디스크에 데이터를 잘못 기록하면 15GB가 가득 차고 오버플로되어 볼륨이 삭제되므로 문제가 발생할 수 있습니다.

요구사항

  1. Linux에서 LVM을 사용하여 디스크 저장소 생성 – 1부
  2. Linux에서 LVM을 확장/축소하는 방법 - 2부
  3. LVM에서 논리 볼륨의 스냅샷을 생성/복원하는 방법 – 파트 III
내 서버 설정
  1. 운영 체제 – CentOS 6.5(LVM 설치 포함)
  2. 서버 IP – 192.168.0.200

1단계: 가상 풀 및 볼륨 설정

씬 풀과 씬 볼륨을 설정하는 방법을 실제로 실습해 보겠습니다. 먼저 대규모 볼륨 그룹이 필요합니다. 여기서는 데모용으로 15GB의 볼륨 그룹을 만듭니다. 이제 아래 명령을 사용하여 볼륨 그룹을 나열하십시오.

vgcreate -s 32M vg_thin /dev/sdb1

다음으로, 가상 풀과 볼륨을 생성하기 전에 사용 가능한 논리 볼륨의 크기를 확인하세요.

vgs
lvs

위의 lvs 출력에는 파일 시스템에 대한 기본 논리 볼륨만 있고 스왑이 있음을 알 수 있습니다.

가상 풀 생성

볼륨 그룹(vg_thin)에 15GB용 씬 풀을 생성하려면 다음 명령을 사용합니다.

lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  1. -L – 볼륨 그룹 크기
  2. –thinpool – 가상 풀을 생성하려면
  3. tp_tecmint_pool – 가상 풀 이름
  4. vg_thin – 풀을 생성하는 데 필요한 볼륨 그룹 이름

더 자세한 내용을 보려면 'lvdisplay' 명령을 사용할 수 있습니다.

lvdisplay vg_thin/tp_tecmint_pool

여기서는 이 씬 풀에 가상 씬 볼륨을 생성하지 않았습니다. 이미지에서 0.00%를 표시하는 할당된 풀 데이터를 볼 수 있습니다.

씬 볼륨 생성

이제 -V(가상) 옵션과 함께 'lvcreate' 명령을 사용하여 씬 풀 내부에 씬 볼륨을 정의할 수 있습니다.

lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool

vg_thin 볼륨 그룹의 tp_tecmint_pool 내에 thin_vol_client1이라는 이름의 씬 가상 볼륨을 생성했습니다. 이제 아래 명령을 사용하여 논리 볼륨을 나열하십시오.

lvs 

지금은 위의 씬 볼륨을 생성했기 때문에 데이터가 표시되지 않습니다(예: 0.00%M).

좋습니다. 다른 2개의 클라이언트를 위해 2개의 씬 볼륨을 더 생성하겠습니다. 이제 풀(tp_tecmint_pool) 아래에 3개의 씬 볼륨이 생성된 것을 볼 수 있습니다. 그래서 이때부터 15GB 풀을 모두 사용했다는 사실을 알게 되었습니다.

파일 시스템 생성

이제 마운트 지점을 생성하고 세 개의 씬 볼륨을 마운트하고 아래 명령을 사용하여 여기에 일부 파일을 복사합니다.

mkdir -p /mnt/client1 /mnt/client2 /mnt/client3

생성된 디렉터리를 나열합니다.

ls -l /mnt/

'mkfs' 명령을 사용하여 생성된 씬 볼륨에 대한 파일 시스템을 생성합니다.

mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3

'mount' 명령을 사용하여 세 개의 클라이언트 볼륨을 모두 생성된 마운트 지점에 마운트합니다.

mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/

'df' 명령을 사용하여 마운트 지점을 나열합니다.

df -h

여기서는 3개의 클라이언트 볼륨이 모두 마운트되어 있으므로 모든 클라이언트 볼륨에서 데이터의 3%만 사용되는 것을 볼 수 있습니다. 따라서 공간을 채우기 위해 데스크탑의 3개 마운트 지점 모두에 파일을 더 추가해 보겠습니다.

이제 마운트 지점을 나열하고 모든 씬 볼륨에서 사용되는 공간을 확인하고 씬 풀을 나열하여 풀에서 사용되는 크기를 확인하세요.

df -h
lvdisplay vg_thin/tp_tecmint_pool

위 명령은 3개의 마운트 파인트와 해당 크기를 백분율로 보여줍니다.

13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3

씬 풀을 살펴보면 전체 데이터의 30%만 기록되었음을 알 수 있습니다. 이는 위의 3개 클라이언트 가상 볼륨의 총합입니다.

오버프로비저닝

이제 4번째 고객이 저에게 와서 5GB의 저장 공간을 요청했습니다. 줄 수 있나요? 이미 3명의 클라이언트에게 15GB 풀을 제공했기 때문입니다. 다른 고객에게 5GB를 더 줄 수 있나요? 네 가능합니다. 이것이 오버 프로비저닝을 사용하는 경우입니다. 즉, 내가 가지고 있는 것보다 더 많은 공간을 제공한다는 의미입니다.

4번째 클라이언트용으로 5GB를 생성하고 크기를 확인해 보겠습니다.

lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
lvs

풀 크기는 15GB밖에 안 되지만 씬 풀 내부에 최대 20GB의 볼륨을 4개 만들었습니다. 4개의 클라이언트 모두 속도를 채우기 위해 해당 볼륨에 데이터를 쓰기 시작하면 그때 심각한 상황에 직면하게 될 것입니다. 그렇지 않으면 문제가 없을 것입니다.

이제 thin_vol_client4에 파일 시스템을 생성한 다음 /mnt/client4에 마운트하고 그 안에 일부 파일을 복사했습니다.

lvs

위 그림에서 새로 생성된 클라이언트 4에서 사용된 전체 크기는 최대 89.34%이고 씬 풀 크기는 59.19%로 사용된 것을 확인할 수 있습니다. 이러한 모든 사용자가 볼륨에 잘못 쓰고 있지 않다면 오버플로가 발생하지 않고 삭제됩니다. 오버플로를 방지하려면 씬 풀 크기를 확장해야 합니다.

중요: 씬 풀은 논리 볼륨일 뿐이므로 씬 풀의 크기를 확장해야 하는 경우 다음과 같은 명령을 사용할 수 있습니다. 논리 볼륨이 확장되지만 씬 풀의 크기는 줄일 수 없습니다.

lvextend

여기서는 논리적 씬 풀(tp_tecmint_pool)을 확장하는 방법을 볼 수 있습니다.

lvextend -L +15G /dev/vg_thin/tp_tecmint_pool

다음으로 씬 풀 크기를 나열합니다.

lvs

이전에는 tp_tecmint_pool 크기가 15GB였고 프로비저닝이 20GB를 초과한 4개의 씬 볼륨이었습니다. 이제 30GB로 확장되어 오버 프로비저닝이 정규화되었으며 씬 볼륨에 오버플로, 삭제가 발생하지 않습니다. 이렇게 하면 풀에 더 많은 씬 볼륨을 추가할 수 있습니다.

여기에서는 대규모 볼륨 그룹을 사용하여 씬 풀을 생성하는 방법과 오버 프로비저닝 및 풀 확장을 사용하여 씬 풀 내부에 씬 볼륨을 생성하는 방법을 살펴보았습니다. 다음 기사에서는 lvm 스트라이핑을 설정하는 방법을 살펴보겠습니다.