Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.4. 논리 볼륨 관리

다음 부분에서는 다양한 논리 볼륨 관리를 위해 실행되는 명령에 대해 설명합니다.

4.4.1. 논리 볼륨 생성

논리 볼륨을 생성하려면 lvcreate 명령을 사용합니다. 다음 부분에서 설명하듯이 선형 볼륨, 스트라이프 볼륨, 미러 볼륨을 생성할 수 있습니다.
논리 볼륨에 해당하는 이름을 지정하지 않을 경우, 기본값으로 lvol# 이름이 사용되며 여기서 #는 논리 볼륨의 내부 번호로 대체합니다.
다음 부분에서는 LVM으로 생성할 수 있는 세 가지 유형의 논리 볼륨에 대한 논리 볼륨 생성 예를 설명합니다.

4.4.1.1. 선형 (Linear) 볼륨 생성

논리 볼륨 생성 시, 논리 볼륨은 볼륨 그룹으로된 물리 볼륨에 있는 여유 익스텐트를 사용하여 볼륨 그룹에서 나뉘어 집니다. 일반적으로 논리 볼륨은 기본 물리 볼륨에 있는 여유 공간을 사용합니다. 논리 볼륨을 수정하는 것이 자유로우며 물리 볼륨에서 공간을 재할당합니다.
다음의 명령으로 vg1 볼륨 그룹에 10GB 크기의 논리 볼륨을 생성합니다.
lvcreate -L 10G vg1
다음 명령으로 /dev/testvg/testlv 블록 장치를 생성하여, testvg 볼륨 그룹에 testlv라는 1500MB 선형 논리 볼륨을 생성합니다.
lvcreate -L1500 -n testlv testvg
다음 명령으로 vg0 볼륨 그룹에 여유 익스텐트에서 gfslv라는 50GB의 논리 볼륨을 생성합니다.
lvcreate -L 50G -n gfslv vg0
lvcreate 명령의 -l 인수를 사용하여 익스텐트에서 논리 볼륨의 크기를 지정할 수 있습니다. 이러한 인수를 사용하여 논리 볼륨에 사용할 볼륨 그룹의 퍼센트도 지정할 수 있습니다. 다음 명령으로 testvol 볼륨 그룹에서 전체 공간의 60%를 사용하는 mylv라는 논리 볼륨을 생성합니다.
lvcreate -l 60%VG -n mylv testvg
lvcreate 명령의 -l 인수를 사용하여 논리 볼륨 크기로서 볼륨 그룹에 있는 나머지 여유 공간의 퍼센트를 지정할 수 있습니다. 다음의 명령으로 testvol 볼륨 그룹에 있는 모든 할당되지 않은 공간을 사용하는 yourlv라는 논리 볼륨을 생성합니다.
lvcreate -l 100%FREE -n yourlv testvg
You can use -l argument of the lvcreate command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay command to find the "Total PE" size and to use those results as input to the the lvcreate command.
다음 명령으로 testvg라는 볼륨 그룹을 채우는 mylv라는 논리 볼륨을 생성합니다.
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n mylv
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see 4.3.6절. “볼륨 그룹에서 물리 볼륨 삭제 ”.
볼륨 그룹에 있는 특정 물리 볼륨에서 할당된 논리 볼륨을 생성하기 위해 물리 볼륨이나 lvcreate 명령 행의 마지막에 있는 볼륨을 지정합니다. 다음 명령으로 /dev/sdg1 물리 볼륨에서 할당된 testvg 볼륨 그룹에 testlv라는 논리 볼륨을 생성합니다.
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
논리 볼륨으로 사용할 물리 볼륨의 익스텐트를 지정할 수 있습니다. 다음의 예에서는 물리 볼륨 /dev/sda1의 익스텐트 0부터 25까지에서 그리고 testvg 볼륨 그룹에 있는 물리 볼륨 /dev/sdb1의 익스텐트 50에서 125 까지에서 선형 논리 볼륨을 생성하고 있습니다.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
다음의 예에서는 물리 볼륨 /dev/sda1의 익스텐트 0에서 25까지에서 선형 논리 볼륨을 생성하고 그 후 익스텐트 100까지 배열합니다.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
The default policy for how the extents of a logical volume are allocated is inherit, which applies the same policy as for the volume group. These policies can be changed using the lvchange command. For information on allocation policies, see 4.3.1절. “볼륨 그룹 생성 ”.

4.4.1.2. 스트라이프 (striped) 볼륨 생성

For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see 2.3.2절. “스트라이프 (Striped) 논리 볼륨 ”.
스트라이프 논리 볼륨을 생성할 때, lvcreate 명령의 -i 인수를 사용하여 스트라이프 수를 지정합니다. 이는 얼마나 많은 물리 볼륨 및 논리 볼륨을 스트라이프할 지를 결정합니다. 스트라이프 수는 볼륨 그룹에 있는 물리 볼륨의 수 보다 커서는 안됩니다. (--alloc anywhere 인수가 사용되지 않을 경우).
스트라이프 논리 볼륨으로된 기본 물리 장치는 크기가 다르며, 스트라이프 볼륨의 최대 크기는 크기가 가장 작은 기본 장치에 의해 결정됩니다. 예를 들어, two-legged 스트라이프에서, 최대 크기는 가장 작은 장치 크기의 두 배가 되고, three-legged 스트라이프에서 최대 크기는 가장 작은 장치 크기의 세 배가 됩니다.
다음의 명령으로 2 개의 물리 볼륨에 걸쳐 64kB로된 스트라이프 논리 볼륨을 생성합니다. 논리 볼륨은 50 GB 크기에, gfslv라는 이름으로, vg0 볼륨 그룹에서 나누어져 있습니다.
lvcreate -L 50G -i2 -I64 -n gfslv vg0
선형 볼륨과 마찬가지로, 스트라이프 용으로 사용할 물리 볼륨의 익스텐트를 지정할 수 있습니다. 다음의 명령으로 두 개의 물리 볼륨에 걸쳐 스트라이프하는 100 익스텐트 크기의 스트라이프 볼륨을 생성하고, stripelv라고 이름을 정한 후, testvg 볼륨 그룹에 둡니다. 스트라이프는 /dev/sda1의 0-50 섹터와 /dev/sdb1의 50-100 섹터를 사용하게 됩니다.
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100
  Using default stripesize 64.00 KB
  Logical volume "stripelv" created

4.4.1.3. 미러 볼륨 생성

미러 볼륨 생성 시, lvcreate 명령의 -m 인수를 사용하여 만들 데이터 사본 수를 지정합니다. -m1을 지정하면 하나의 미러를 생성하고, 선형 논리 볼륨 및 하나의 복사본이라는 두 개의 파일 시스템 복사본을 생성합니다. 이와 유사하게, -m2를 지정하면 두 개의 미러를 생성하고, 세 개의 파일 시스템 복사본을 생성합니다.
다음의 명령으로 단일 미러와 함께 미러 논리 볼륨을 생성합니다. 볼륨은 50 GB 크기에 mirrorlv라는 이름으로, vg0 볼륨 그룹에서 나눕니다.
lvcreate -L 50G -m1 -n gfslv vg0
LVM 미러는 기본값이 512 KB 크기인 영역으로 복사된 장치를 나눕니다. -R 인수를 사용하여 영역 크기를 MB로 지정할 수 있습니다. LVM은 미러로 어떤 영역이 동기화되었는 지를 추적하기 위해 사용되는 로그를 관리합니다. 이러한 로그는 기본값으로 디스크에 저장되어, 재부팅 후에도 영구적으로 보관됩니다. --corelog 인수로 이러한 로그가 메모리에 저장되도록 지정할 수 있습니다; 이는 추가 로그 장치가 필요하지 않게 하지만, 재부팅할 때 마다 전체 미러를 동기화해야 합니다.
다음의 명령으로 bigvg 볼륨 그룹에서 미러 논리 볼륨을 생성합니다. 논리는 ondiskmirvol라는 이름으로 하나의 단일 미러를 갖게 됩니다. 볼륨은 12MB 크기가 되며 메모리에 미러 로그를 보관합니다.
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg
  Logical volume "ondiskmirvol" created
미러 로그는 미러 leg가 생성되어 있는 장치와 다른 장치에 생성됩니다. 하지만, vgcreate 명령의 --alloc anywhere 인수를 사용하여 미러 leg 중 하나로 동일한 장치에 미러 로그를 생성할 수 있습니다. 이는 성능을 저하시킬 수 도 있지만, 기본 장치기 두 개 밖에 없을 경우에도 미러를 생성할 수 있게 합니다.
다음의 명령으로 단일 미러와 함께 미러 논리 볼륨을 생성합니다. 여기서 미러 로그는 미러 leg 중 하나로 동일한 장치에 있습니다. 예에서, vg0 볼륨 그룹은 두 개의 장치로만 구성되어 있습니다. 이러한 명령이 생성한 미러 볼륨은 500 메가 바이트 크기에mirrorlv라는 이름으로 vg0 볼륨 그룹에서 나누어 집니다.
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
미러가 생성되면, 미러 영역은 동기화됩니다. 미러가 용량이 클 경우, 동기화하는데 시간이 더 오래 걸릴 수 도 있습니다. 재생될 필요가 없는 새로운 미러를 생성할 경우, nosync 인수를 지정하여 첫 번째 장치에서의 초기 동기화할 필요가 없음을 나타냅니다.
미러 로그 용으로 사용할 장치와 사용할 장치의 익스텐트를 지정할 수 있습니다. 특정 디스크에 로그를 강제하려면, 로그가 위치할 디스크에 정확히 하나의 익스텐트를 지정합니다. LVM은 명령행에 나열될 장치 순서를 따를 필요가 없습니다. 물리 볼륨이 나열되어 있을 경우, 할당될 공간 만이 해당하게 됩니다. 열거되어 있는 이미 할당된 물리 익스텐트는 무시하게 됩니다.
다음의 예에서는 단일 미러로 미러 논리 볼륨을 생성하고 있습니다. 볼륨은 500MB 크기에 mirrorlv라는 이름으로 vg0 볼륨 그룹에서 나눕니다. 첫 번째 미러 leg는 /dev/sda1 장치에 위치하게 되고, 두 번째 미러 leg는 /dev/sdb1 장치에 위치하게 되며, 미러 로그는 /dev/sdc1에 위치하게 됩니다.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
다음의 예에서는 단일 미러로 미러 논리 볼륨을 생성하고 있습니다. 볼륨은 500 MB 크기에 mirrorlv라는 이름으로 vg0 볼륨 그룹에서 나뉘어 집니다. 첫 번째 미러 leg는 /dev/sda1 장치의 익스텐트 0에서 499까지 위치하게 되고, 두 번째 미러 leg는 /dev/sdb1 장치의 익스텐트 0에서 499까지 위치하게 되며, 미러 로그는 /dev/sdc1 장치의 익스텐트 0에서 시작합니다. 이는 1MB 익스텐트입니다. 지정한 익스텐트가 이미 할당되어 있을 경우 이를 무시하게 됩니다.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0

참고

RHEL 5.3 릴리즈로서 미러된 논리 볼륨은 클러스터에서 지원됩니다.

4.4.1.4. 미러 볼륨 설정 변경

lvconvert 명령을 사용하여 미러 볼륨에서 선형 볼륨으로 또는 선형 볼륨에서 미러 볼륨으로 논리 볼륨을 변환할 수 있습니다. 이 명령을 사용하여 corelog와 같은 기존 논리 볼륨의 다른 미러 매개 변수를 재설정할 수 도 있습니다.
논리 볼륨을 미러 볼륨으로 변환할 경우, 기본적으로 기존 볼륨에 미러 leg를 생성해야 합니다. 즉 이는 볼륨 그룹에 미러 leg 및 미러 로그에 필요한 공간 및 장치가 있어야 함을 의미합니다.
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the lvconvert command to restore the mirror. This procedure is provided in 6.3절. “LVM 미러 장애 복구 ”.
다음의 명령으로 선형 논리 볼륨 vg00/lvol1을 미러 논리 볼륨으로 변환합니다.
lvconvert -m1 vg00/lvol1
다음의 명령으로 미러 leg를 삭제하여 vg00/lvol1 미러 논리 볼륨을 선형 논리 볼륨으로 변환합니다.
lvconvert -m0 vg00/lvol1