Red Hat Training

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

4.4. 논리 볼륨 관리

이 섹션에서는 논리 볼륨 관리의 다양한 측면을 수행하는 명령에 대해 설명합니다.

4.4.1. 선형 논리 볼륨 생성

논리 볼륨을 생성하려면 lvcreate 명령을 사용합니다. 논리 볼륨의 이름을 지정하지 않으면 기본 이름 lvol# 이 사용됩니다. 여기서 # 은 논리 볼륨의 내부 번호입니다.
논리 볼륨을 생성하면 논리 볼륨이 볼륨 그룹을 구성하는 물리 볼륨의 사용 가능한 확장 영역을 사용하여 볼륨 그룹에서 분할됩니다. 일반적으로 논리 볼륨은 기본 물리 볼륨에서 사용 가능한 공간을 차세대 방식으로 사용합니다. 논리 볼륨을 수정하면 물리 볼륨에서 공간을 확보 및 재할당합니다.
다음 명령은 볼륨 그룹 Cryostat 1 에 논리 볼륨 10GB를 생성합니다.
# lvcreate -L 10G vg1
논리 볼륨 크기의 기본 단위는 메가바이트입니다. 다음 명령은 볼륨 그룹 testvgtestlv 라는 1500 메가바이트 선형 논리 볼륨을 생성하여 블록 장치 /dev/testvg/testlv 를 생성합니다.
# lvcreate -L 1500 -n testlv testvg
다음 명령은 볼륨 그룹 Cryostat 0 의 사용 가능한 확장 영역에서 gfslv 라는 50GB 논리 볼륨을 생성합니다.
# lvcreate -L 50G -n gfslv vg0
lvcreate 명령의 -l 인수를 사용하여 Extent에서 논리 볼륨의 크기를 지정할 수 있습니다. 이 인수를 사용하여 관련 볼륨 그룹, 논리 볼륨 또는 물리 볼륨 세트의 크기 백분율을 지정할 수도 있습니다. %VG 접미사는 볼륨 그룹의 총 크기, %FREE 접미사인 %FREE는 볼륨 그룹의 나머지 여유 공간을 나타냅니다. %PVS 접미사는 지정된 물리 볼륨의 사용 가능한 공간을 나타냅니다. 스냅샷의 경우 크기는 %ORIGIN 접미사 (100%ORIGIN)를 사용하여 원본 논리 볼륨의 전체 크기의 백분율로 표시할 수 있습니다(0%ORIGIN은 전체 원본의 공간을 제공합니다). 백분율로 표시되는 경우 크기는 새 논리 볼륨의 논리 확장 영역 수에 대한 상한을 정의합니다. 새 LV의 정확한 논리 확장 영역 수는 명령이 완료될 때까지 결정되지 않습니다.
다음 명령은 볼륨 그룹 testvg 의 총 공간의 60 %를 사용하는 mylv 라는 논리 볼륨을 생성합니다.
# lvcreate -l 60%VG -n mylv testvg
다음 명령은 볼륨 그룹 testvg 의 할당되지 않은 공간을 모두 사용하는 lv 라는 논리 볼륨을 생성합니다.
# lvcreate -l 100%FREE -n yourlv testvg
lvcreate 명령의 -l 인수를 사용하여 전체 볼륨 그룹을 사용하는 논리 볼륨을 생성할 수 있습니다. 전체 볼륨 그룹을 사용하는 논리 볼륨을 생성하는 또 다른 방법은 "Total PE" 크기를 찾고 해당 결과를 lvcreate 명령에 대한 입력으로 사용하는 것입니다.
다음 명령은 testvg 라는 볼륨 그룹을 채우는 mylv 라는 논리 볼륨을 생성합니다.
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 -n mylv testvg
물리 볼륨을 제거해야 하는 경우 논리 볼륨을 만드는 데 사용되는 기본 물리 볼륨이 중요할 수 있으므로 논리 볼륨을 생성할 때 이러한 가능성을 고려해야 할 수 있습니다. 볼륨 그룹에서 물리 볼륨을 제거하는 방법에 대한 자세한 내용은 4.3.7절. “볼륨 그룹에서 물리 볼륨 제거” 을 참조하십시오.
볼륨 그룹의 특정 물리 볼륨에서 할당할 논리 볼륨을 만들려면 lvcreate 명령줄의 끝에 물리 볼륨 또는 볼륨을 지정합니다. 다음 명령은 물리 볼륨 /dev/sdg1 에서 할당된 testvg 볼륨 그룹에 testlv 라는 논리 볼륨을 생성합니다.
# lvcreate -L 1500 -n testlv testvg /dev/sdg1
논리 볼륨에 사용할 물리 볼륨의 확장 영역을 지정할 수 있습니다. 다음 예제는 볼륨 그룹 testvg 에서 0~24개의 물리 볼륨 /dev/sda1 의 물리 볼륨 /dev/sdb1의 물리 볼륨 /dev/sdb1 의 확장 영역 0에서 24까지의 선형 논리 볼륨을 생성합니다.
# lvcreate -l 100 -n testlv testvg /dev/sda1:0-24 /dev/sdb1:50-124
다음 예제에서는 0에서 25개의 물리 볼륨 /dev/sda1 중 25개까지의 선형 논리 볼륨을 생성한 다음 범위 100에서 논리 볼륨을 계속 실행합니다.
# lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
논리 볼륨의 확장 영역을 할당하는 방법에 대한 기본 정책은 볼륨 그룹과 동일한 정책을 적용하는 을 상속합니다. 이러한 정책은 lvchange 명령을 사용하여 변경할 수 있습니다. 할당 정책에 대한 자세한 내용은 4.3.1절. “볼륨 그룹 만들기” 을 참조하십시오.

4.4.2. 스트립된 볼륨 생성

순차 읽기 및 쓰기의 경우 줄인 논리 볼륨을 생성하면 데이터 I/O의 효율성을 향상시킬 수 있습니다. 스트라이핑된 볼륨에 대한 일반적인 내용은 2.3.2절. “제거된 논리 볼륨” 을 참조하십시오.
제거된 논리 볼륨을 생성할 때 lvcreate 명령의 -i 인수를 사용하여 스트라이프 수를 지정합니다. 이를 통해 논리 볼륨의 물리 볼륨 수가 결정됩니다. 스트라이프 수는 볼륨 그룹의 물리 볼륨 수보다 클 수 없습니다( --alloc을 임의의 인수가 사용되지 않는 한).
스트라이핑된 논리 볼륨을 구성하는 기본 물리 장치가 크기가 다른 경우 스트립된 볼륨의 최대 크기는 가장 작은 기본 장치에 의해 결정됩니다. 예를 들어 두 개의 분할된 스트라이프에서 최대 크기는 작은 장치의 두 배 크기입니다. 3개의 분할된 스트라이프에서 최대 크기는 가장 작은 장치의 3배 크기입니다.
다음 명령은 2개의 물리 볼륨에 걸쳐 스트라이핑된 논리 볼륨을 64킬로바이트로 만듭니다. 논리 볼륨의 크기는 50GB이며 gfslv 라는 이름이 지정되며 볼륨 그룹 Cryostat 0에서 제거됩니다.
# lvcreate -L 50G -i 2 -I 64 -n gfslv vg0
linear 볼륨과 마찬가지로 스트라이프에 사용하는 물리 볼륨의 확장 영역을 지정할 수 있습니다. 다음 명령은 두 개의 물리 볼륨에서 스트라이핑된 볼륨 100 확장 영역의 크기를 스트라이프 라고 하며 볼륨 그룹 testvg 에 있습니다. 스트라이프는 /dev/sda1 의 섹터 0-49를 사용하고 /dev/sdb1 의 50-99 섹터를 사용합니다.
# lvcreate -l 100 -i 2 -n stripelv testvg /dev/sda1:0-49 /dev/sdb1:50-99
  Using default stripesize 64.00 KB
  Logical volume "stripelv" created

4.4.3. RAID 논리 볼륨

LVM은 RAID0/1/4/5/6/10을 지원합니다.
참고
RAID 논리 볼륨은 클러스터가 인식되지 않습니다. RAID 논리 볼륨은 한 컴퓨터에서만 생성하고 활성화할 수 있지만 두 개 이상의 컴퓨터에서 동시에 활성화할 수 없습니다. 비독점 미러링 볼륨이 필요한 경우 4.4.4절. “미러링된 볼륨 생성” 에 설명된 대로 미러 세그먼트 유형으로 볼륨을 생성해야 합니다.
RAID 논리 볼륨을 생성하려면 raid 유형을 lvcreate 명령의 --type 인수로 지정합니다. 표 4.1. “RAID segment 유형” 가능한 RAID 세그먼트 유형을 설명합니다.

표 4.1. RAID segment 유형

세그먼트 유형설명
raid1 RAID1 미러링. 이는 -m 을 지정할 때 lvcreate 명령의 --type 인수의 기본값이지만 스트라이핑은 지정하지 않습니다.
raid4 RAID4 전용 패리티 디스크
raid5 raid5_ls와 동일합니다.
raid5_la
RAID5의 ASCII로 남아 있습니다.
데이터 연속으로 순환 패리티 0
raid5_ra
RAID5 오른쪽 symmetric.
데이터 연속으로 회전 패리티 N
raid5_ls
RAID5 왼쪽 대칭.
데이터 재시작을 통한 회전 패리티 0
raid5_rs
RAID5 오른쪽 대칭.
데이터 다시 시작을 사용하는 회전 패리티 N
raid6 raid6_zr와 동일
raid6_zr
RAID6 0 재시작
데이터 재시작을 통해 패리티 0(왼쪽-오른쪽) 회전
raid6_nr
RAID6 재시작
데이터 다시 시작을 통한 패리티 N(왼쪽-오른쪽)
raid6_nc
RAID6 N을 계속
데이터 연속으로 회전 패리티 N (left-to-right)
raid10
미러가 제거되었습니다. -m 을 지정하고 1보다 큰 스트라이프 수를 지정하는 경우 lvcreate 명령의 --type 인수의 기본값입니다.
미러 세트 제거
raid0/raid0_meta (Red Hat Enterprise Linux 7.3 이상) 스트라이핑. RAID0은 스트라이프 크기 단위로 여러 데이터 하위 볼륨에 논리 볼륨 데이터를 분산합니다. 이는 성능을 향상시키는 데 사용됩니다. 데이터 하위 볼륨에 오류가 발생하면 논리 볼륨 데이터가 손실됩니다. RAID0 볼륨 생성에 대한 자세한 내용은 4.4.3.1절. “RAID0 볼륨 생성(Red Hat Enterprise Linux 7.3 및 later)” 을 참조하십시오.
대부분의 사용자에게 사용 가능한 5가지 기본 유형(raid1,raid4,raid5,raid6,raid10) 중 하나를 지정하면 됩니다.
RAID 논리 볼륨을 생성할 때 LVM은 배열의 모든 데이터 또는 패리티 하위 볼륨에 대해 하나의 크기인 메타데이터 하위 볼륨을 생성합니다. 예를 들어 2방향 RAID1 배열을 생성하면 두 개의 메타데이터 하위 볼륨(lv_rmeta_0lv_rmeta_1)과 두 개의 데이터 하위 볼륨(lv_rimage_0lv_rimage_1)이 생성됩니다. 마찬가지로 3방향 스트라이프(1 암시적 패리티 장치 추가) RAID4를 생성하면 4개의 메타데이터 하위 볼륨(lv_rmeta_0,lv_rmeta _2, lv_rmeta_3) 및 4 데이터 하위 볼륨(lv_rimage_0 )이 생성됩니다. lv_rimage_1,lv_rimage_2, lv_rimage_3).
다음 명령은 볼륨 그룹 my_vg 에 1기가바이트인 my_lv 라는 2방향 RAID1 배열을 생성합니다.
# lvcreate --type raid1 -m 1 -L 1G -n my_lv my_vg
-m 인수에 대해 지정하는 값에 따라 다른 사본 수를 사용하여 RAID1 배열을 생성할 수 있습니다. 마찬가지로 -i 인수를 사용하여 RAID 4/5/6 논리 볼륨의 스트라이프 수를 지정합니다. -I 인수를 사용하여 스트라이프 크기를 지정할 수도 있습니다.
다음 명령은 볼륨 그룹 my_vg 에서 이름이 my_lv 인 RAID5 배열(+1 암시적 패리티 드라이브)을 1기가바이트 단위로 생성합니다. LVM 스트라이핑 볼륨에 대해 수행하는 것처럼 스트라이프 수를 지정합니다. 올바른 패리티 드라이브 수가 자동으로 추가됩니다.
# lvcreate --type raid5 -i 3 -L 1G -n my_lv my_vg
다음 명령은 1 기가바이트 크기의 볼륨 그룹 my_vgmy_lv 라는 RAID6 배열 (3 스트라이프 + 2 암시적 패리티 드라이브)을 생성합니다.
# lvcreate --type raid6 -i 3 -L 1G -n my_lv my_vg
LVM을 사용하여 RAID 논리 볼륨을 생성한 후 다른 LVM 논리 볼륨과 마찬가지로 볼륨을 활성화, 변경, 제거, 표시 및 사용할 수 있습니다.
RAID10 논리 볼륨을 생성할 때 동기화 작업으로 논리 볼륨을 초기화하는 데 필요한 배경 I/O는 특히 많은 RAID 논리 볼륨을 생성할 때 볼륨 그룹 메타데이터 업데이트와 같은 LVM 장치에 대한 다른 I/O 작업을 충돌할 수 있습니다. 이로 인해 다른 LVM 작업이 느려질 수 있습니다.
복구 제한을 구현하여 RAID 논리 볼륨이 초기화되는 속도를 제어할 수 있습니다. lvcreate 명령의 --minrecoveryrate--maxrecoveryrate 옵션을 사용하여 해당 작업의 최소 및 최대 I/O 속도를 설정하여 동기화 작업이 수행되는 속도를 제어합니다. 이러한 옵션을 다음과 같이 지정합니다.
  • --maxrecoveryrate 속도[bBsSkKmMgG]
    RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 대규모로 설정하지 않도록 합니다. Rate 는 배열의 각 장치에 대한 초당 양으로 지정됩니다. 접미사가 제공되지 않으면 kiB/sec/device로 가정합니다. 복구 속도를 0으로 설정하면 바인딩되지 않음을 의미합니다.
  • --minrecoveryrate 속도[bBsSkKmMgG]
    RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 확보합니다. Rate 는 배열의 각 장치에 대한 초당 양으로 지정됩니다. 접미사가 제공되지 않으면 kiB/sec/device로 가정합니다.
다음 명령은 최대 128 kiB/sec/device의 최대 복구 속도로 크기가 10GB인 3개의 스트라이프를 사용하여 2방향 RAID10 배열을 생성합니다. 배열의 이름은 my_lv 이며 볼륨 그룹 my_vg 에 있습니다.
# lvcreate --type raid10 -i 2 -m 1 -L 10G --maxrecoveryrate 128 -n my_lv my_vg
RAID 스크럽 작업에 대한 최소 및 최대 복구 속도를 지정할 수도 있습니다. RAID 스크럽링에 대한 자세한 내용은 4.4.3.11절. “RAID 논리 볼륨 삭제” 을 참조하십시오.
참고
LVM RAID Calculator 애플리케이션을 사용하여 RAID 스토리지에 논리 볼륨을 생성하는 명령을 생성할 수 있습니다. 이 애플리케이션은 현재 또는 계획된 스토리지에 대해 입력한 정보를 사용하여 이러한 명령을 생성합니다. LVM RAID 계산기 애플리케이션은 https://access.redhat.com/labs/lvmraidcalculator/ 에서 확인할 수 있습니다.
다음 섹션에서는 LVM RAID 장치에서 수행할 수 있는 관리 작업에 대해 설명합니다.

4.4.3.1. RAID0 볼륨 생성(Red Hat Enterprise Linux 7.3 및 later)

RAID0 볼륨을 생성하는 명령의 형식은 다음과 같습니다.
lvcreate --type raid0[_meta] --stripes Stripes --stripesize StripeSize VolumeGroup [PhysicalVolumePath ...]

표 4.2. RAID0 명령 생성 매개변수

매개변수설명
--type raid0[_meta] raid0 을 지정하면 메타데이터 볼륨 없이 RAID0 볼륨이 생성됩니다. raid0_meta 를 지정하면 메타데이터 볼륨이 포함된 RAID0 볼륨이 생성됩니다. RAID0은 비현실적이므로 미러링된 데이터 블록을 RAID1/10으로 저장하거나 패리티 블록을 RAID4/5/6으로 계산 및 저장할 필요가 없습니다. 따라서 미러링된 또는 패리티 블록의 재동기화 진행 상황에 대한 상태를 유지하기 위해 메타데이터 볼륨이 필요하지 않습니다. 그러나 RAID0에서 RAID4/5/6/10으로의 변환에 메타데이터 볼륨이 필요하며, raid0_meta 를 지정하면 각 할당 실패를 방지하기 위해 해당 메타데이터 볼륨을 사전 할당해야 합니다.
--stripes Stripes 논리 볼륨을 분산할 장치 수를 지정합니다.
--stripesize StripeSize 각 스트라이프의 크기를 킬로바이트로 지정합니다. 이는 다음 장치로 이동하기 전에 하나의 장치에 기록된 데이터 양입니다.
VolumeGroup 사용할 볼륨 그룹을 지정합니다.
PhysicalVolumePath ... 사용할 장치를 지정합니다. 이 값을 지정하지 않으면 LVM에서 각 스트라이프에 하나씩 Stripes 옵션으로 지정된 장치 수를 선택합니다.

4.4.3.2. 선형 장치를 RAID 장치로 변환

lvconvert 명령의 --type 인수를 사용하여 기존 선형 논리 볼륨을 RAID 장치로 변환할 수 있습니다.
다음 명령은 볼륨 그룹 my_vg 의 선형 논리 볼륨 my_lv 를 2방향 RAID1 배열로 변환합니다.
# lvconvert --type raid1 -m 1 my_vg/my_lv
RAID 논리 볼륨은 메타데이터 및 데이터 하위 볼륨 쌍으로 구성되기 때문에 선형 장치를 RAID1 배열로 변환할 때 새 메타데이터 하위 볼륨이 생성되고 선형 볼륨이 있는 동일한 물리 볼륨에 있는 원본 논리 볼륨과 연결됩니다. 추가 이미지는 metadata/data 하위 볼륨 쌍에 추가됩니다. 예를 들어 원본 장치가 다음과 같은 경우For example, if the original device is as follows:
# lvs -a -o name,copy_percent,devices my_vg
  LV     Copy%  Devices
  my_lv         /dev/sde1(0)
2방향 RAID1 배열로 변환된 후 장치에는 다음 데이터 및 메타데이터 하위 볼륨 쌍이 포함됩니다.
# lvconvert --type raid1 -m 1 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            6.25   my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(0)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rmeta_0]         /dev/sde1(256)
  [my_lv_rmeta_1]         /dev/sdf1(0)
원래 논리 볼륨과 쌍을 동일한 물리 볼륨에 배치할 수 없는 메타데이터 이미지를 동일한 물리 볼륨에 배치할 수 없는 경우 lvconvert 가 실패합니다.

4.4.3.3. LVM RAID1 논리 볼륨을 LVM 선형 논리 볼륨으로 변환

-m0 인수를 지정하여 lvconvert 명령을 사용하여 기존 RAID1 LVM 논리 볼륨을 LVM 선형 논리 볼륨으로 변환할 수 있습니다. 이렇게 하면 RAID 데이터 하위 볼륨과 RAID 배열을 구성하는 모든 RAID 메타데이터 하위 볼륨이 제거되고 최상위 RAID1 이미지를 선형 논리 볼륨으로 유지합니다.
다음 예에서는 기존 LVM RAID1 논리 볼륨을 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
다음 명령은 LVM RAID1 논리 볼륨 my_vg/my_lv 를 LVM 선형 장치로 변환합니다.
# lvconvert -m0 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV      Copy%  Devices
  my_lv          /dev/sde1(1)
LVM RAID1 논리 볼륨을 LVM 선형 볼륨으로 변환할 때 제거할 물리 볼륨을 지정할 수 있습니다. 다음 예제에서는 /dev/sda1/dev/sdb1 의 두 이미지로 구성된 LVM RAID1 논리 볼륨의 레이아웃을 보여줍니다. 이 예에서 lvconvert 명령은 /dev/sda1 을 제거하고 /dev/sdb1 을 선형 장치를 구성하는 물리 볼륨으로 남겨 둡니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
# lvconvert -m0 my_vg/my_lv /dev/sda1
# lvs -a -o name,copy_percent,devices my_vg
  LV    Copy%  Devices
  my_lv        /dev/sdb1(1)

4.4.3.4. 미러링된 LVM 장치를 RAID1 장치로 변환

세그먼트 유형의 미러 를 사용하여 기존 미러링된 LVM 장치를 --type raid1 인수를 지정하여 lvconvert 명령을 사용하여 RAID1 LVM 장치로 변환할 수 있습니다. 미러 하위 볼륨(*_mimage_*)의 이름을 RAID 하위 볼륨(*_rimage_*)으로 변경합니다. 또한 미러 로그가 제거되고 해당 데이터 하위 볼륨과 동일한 물리 볼륨의 데이터 하위 볼륨에 대해 메타데이터 하위 볼륨(*_rmeta_*)이 생성됩니다.
다음 예제에서는 미러링된 논리 볼륨 my_vg/my_lv 의 레이아웃을 보여줍니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             15.20 my_lv_mimage_0(0),my_lv_mimage_1(0)
  [my_lv_mimage_0]        /dev/sde1(0)
  [my_lv_mimage_1]        /dev/sdf1(0)
  [my_lv_mlog]            /dev/sdd1(0)
다음 명령은 미러링된 논리 볼륨 my_vg/my_lv 를 RAID1 논리 볼륨으로 변환합니다.
# lvconvert --type raid1 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(0)
  [my_lv_rimage_1]        /dev/sdf1(0)
  [my_lv_rmeta_0]         /dev/sde1(125)
  [my_lv_rmeta_1]         /dev/sdf1(125)

4.4.3.5. RAID 논리 볼륨 크기 조정

다음과 같은 방법으로 RAID 논리 볼륨의 크기를 조정할 수 있습니다.
  • lvresize 또는 lvextend 명령을 사용하여 모든 유형의 RAID 논리 볼륨의 크기를 늘릴 수 있습니다. 이는 RAID 이미지 수를 변경하지 않습니다. 스트라이핑 RAID 논리 볼륨의 경우 스트라이프 RAID 논리 볼륨을 만들 때와 동일한 스트라이프 반올림 제약 조건이 적용됩니다. RAID 볼륨 확장에 대한 자세한 내용은 4.4.18절. “RAID 볼륨 확장” 을 참조하십시오.
  • lvresize 또는 lvreduce 명령을 사용하여 모든 유형의 RAID 논리 볼륨의 크기를 줄일 수 있습니다. 이는 RAID 이미지 수를 변경하지 않습니다. lvextend 명령과 마찬가지로 스트라이프 라운드링 제약 조건은 스트라이프 RAID 논리 볼륨을 생성할 때와 동일합니다. 논리 볼륨 크기를 줄이는 명령의 예는 4.4.16절. “논리 볼륨 축소” 를 참조하십시오.
  • Red Hat Enterprise Linux 7.4에서는 lvconvert 명령의 --stripes N 매개변수를 사용하여 스트라이핑된 RAID 논리 볼륨(raid4/5/6/10)의 스트라이프 수를 변경할 수 있습니다. 이렇게 하면 스트라이프가 추가되거나 제거된 용량으로 RAID 논리 볼륨의 크기가 늘어나거나 줄어듭니다. raid10 볼륨은 스트라이프만 추가할 수 있습니다. 이 기능은 RAID 논리 볼륨의 속성을 변경하는 동시에 동일한 RAID 수준을 유지할 수 있는 RAID reshaping 기능의 일부입니다. lvconvert 명령을 사용하여 RAID 논리 볼륨을 재구성하는 RAID 리셰이핑 및 예제에 대한 자세한 내용은 lvmraid(7) 도움말 페이지를 참조하십시오.

4.4.3.6. 기존 RAID1 장치의 이미지 수 변경

기존 RAID1 어레이의 이미지 수를 이전의 LVM 미러링 구현의 이미지 수를 변경할 수 있는 것처럼 변경할 수 있습니다. lvconvert 명령을 사용하여 추가 또는 제거할 추가 메타데이터/데이터 하위 볼륨 쌍 수를 지정합니다. 이전 LVM 미러링 구현에서 볼륨 구성을 변경하는 방법에 대한 자세한 내용은 4.4.4.4절. “미러링된 볼륨 구성 변경” 을 참조하십시오.
lvconvert 명령을 사용하여 RAID1 장치에 이미지를 추가하는 경우 결과 장치의 총 이미지 수를 지정하거나 장치에 추가할 이미지 수를 지정할 수 있습니다. 선택적으로 새 메타데이터/데이터 이미지 쌍이 있는 물리 볼륨을 지정할 수도 있습니다.
메타데이터 하위 볼륨( *_rmeta_*)은 항상 데이터 하위 볼륨 *_rimage_*과 동일한 물리적 장치에 존재합니다. metadata/data 하위 볼륨 쌍은 RAID 배열의 다른 metadata/data 하위 볼륨 쌍과 동일한 물리 볼륨에 생성되지 않습니다(여기서 --alloc을 지정하지 않는 경우).
RAID1 볼륨에 이미지를 추가하는 명령의 형식은 다음과 같습니다.
lvconvert -m new_absolute_count vg/lv [removable_PVs]
lvconvert -m +num_additional_images vg/lv [removable_PVs]
예를 들어 다음 명령은 2방향 RAID1 배열인 my_vg/my_lv 장치를 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV                Copy%  Devices
  my_lv             6.25    my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]         /dev/sde1(0)
  [my_lv_rimage_1]         /dev/sdf1(1)
  [my_lv_rmeta_0]          /dev/sde1(256)
  [my_lv_rmeta_1]          /dev/sdf1(0)
다음 명령은 2방향 RAID1 장치 my_vg/my_lv 를 3방향 RAID1 장치로 변환합니다.
# lvconvert -m 2 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv              6.25 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(0)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sde1(256)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
RAID1 배열에 이미지를 추가할 때 이미지에 사용할 물리 볼륨을 지정할 수 있습니다. 다음 명령은 2방향 RAID1 장치 my_vg/my_lv 를 3방향 RAID1 장치로 변환하여 배열에 물리 볼륨 /dev/sdd1 을 사용하도록 지정합니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             56.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
# lvconvert -m 2 my_vg/my_lv /dev/sdd1
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             28.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rimage_2]        /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
  [my_lv_rmeta_2]         /dev/sdd1(0)
RAID1 배열에서 이미지를 제거하려면 다음 명령을 사용합니다. lvconvert 명령을 사용하여 RAID1 장치에서 이미지를 제거하는 경우 결과 장치의 총 이미지 수를 지정하거나 장치에서 제거할 이미지 수를 지정할 수 있습니다. 선택적으로 장치를 제거할 물리 볼륨을 지정할 수도 있습니다.
lvconvert -m new_absolute_count vg/lv [removable_PVs]
lvconvert -m -num_fewer_images vg/lv [removable_PVs]
또한 이미지 및 관련 metadata 하위 볼륨이 제거되면 번호가 높은 이미지가 슬롯을 채우기 위해 축소됩니다. lv_rimage_1 , lv_rimage_1 및 lv_rimage_ 2 로 구성된 3-way RAID1 배열에서 lv_rimage_1을 제거하면 lv_rimage_0lv_rimage_1 로 구성된 RAID1 배열이 생성됩니다. 하위 볼륨 lv_rimage_2 는 이름이 변경되고 빈 슬롯을 대체하여 lv_rimage_1 이 됩니다.
다음 예제에서는 3-way RAID1 논리 볼륨 my_vg/my_lv 의 레이아웃을 보여줍니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
다음 명령은 3-way RAID1 논리 볼륨을 2way RAID1 논리 볼륨으로 변환합니다.
# lvconvert -m1 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
다음 명령은 3방향 RAID1 논리 볼륨을 2방향 RAID1 논리 볼륨으로 변환하여 /dev/sde1 로 제거할 이미지가 포함된 물리 볼륨을 지정합니다.
# lvconvert -m1 my_vg/my_lv /dev/sde1
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sdf1(1)
  [my_lv_rimage_1]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sdf1(0)
  [my_lv_rmeta_1]         /dev/sdg1(0)

4.4.3.7. RAID 이미지로부터 논리 볼륨 분리

RAID 논리 볼륨의 이미지를 분리하여 새 논리 볼륨을 형성할 수 있습니다. RAID 이미지를 분할하는 절차는 4.4.4.2절. “파티셔닝 Off aRedundant Image of a Mirrored Logical Volume” 에 설명된 대로 미러링된 논리 볼륨의 중복 이미지를 분할하는 절차와 동일합니다.
RAID 이미지를 분할하는 명령 형식은 다음과 같습니다.
lvconvert --splitmirrors count -n splitname vg/lv [removable_PVs]
기존 RAID1 논리 볼륨( 4.4.3.6절. “기존 RAID1 장치의 이미지 수 변경”에 설명된 대로)에서 RAID 이미지를 제거하는 경우와 마찬가지로 장치 중간에서 RAID 데이터 하위 볼륨(및 관련 metadata 하위 볼륨)을 제거하면 슬롯을 채우기 위해 더 높은 번호가 지정된 이미지가 축소됩니다. 따라서 RAID 배열을 구성하는 논리 볼륨의 인덱스 번호는 잘못된 정수 시퀀스입니다.
참고
RAID1 배열이 아직 동기화되지 않은 경우 RAID 이미지를 분할할 수 없습니다.
다음 예제에서는 2방향 RAID1 논리 볼륨인 my_lv 를 두 개의 선형 논리 볼륨인 my_lvnew 로 나눕니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             12.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
# lvconvert --splitmirror 1 -n new my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV      Copy%  Devices
  my_lv          /dev/sde1(1)
  new            /dev/sdf1(1)
다음 예제에서는 3방향 RAID1 논리 볼륨인 my_lv 를 2방향 RAID1 논리 볼륨, my_lv 및 선형 논리 볼륨, new로 분할합니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
# lvconvert --splitmirror 1 -n new my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV            Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  new                     /dev/sdg1(1)

4.4.3.8. RAID 이미지 분할 및 병합

lvconvert 명령의 --splitmirrors 인수와 함께 --trackchanges 인수를 사용하여 변경 사항을 추적하는 동안 읽기 전용 사용을 위해 RAID1 배열의 이미지를 일시적으로 분할할 수 있습니다. 이렇게 하면 이미지를 나중에 배열에 다시 병합하고 이미지가 분할된 이후 변경된 배열의 부분만 다시 동기화할 수 있습니다.
RAID 이미지를 분할하는 lvconvert 명령의 형식은 다음과 같습니다.
lvconvert --splitmirrors count --trackchanges vg/lv [removable_PVs]
--trackchanges 인수를 사용하여 RAID 이미지를 분할하면 분할할 이미지를 지정할 수 있지만 분할할 볼륨 이름은 변경할 수 없습니다. 또한 결과 볼륨에는 다음과 같은 제약 조건이 있습니다.
  • 만든 새 볼륨은 읽기 전용입니다.
  • 새 볼륨의 크기를 조정할 수 없습니다.
  • 나머지 배열의 이름을 변경할 수 없습니다.
  • 나머지 배열은 조정할 수 없습니다.
  • 새 볼륨과 나머지 배열을 독립적으로 활성화할 수 있습니다.
--merge 인수와 함께 후속 lvconvert 명령을 실행하여 지정된 --trackchanges 인수와 함께 분할된 이미지를 병합할 수 있습니다. 이미지를 병합할 때 이미지가 분할된 이후 변경된 배열의 부분만 다시 동기화됩니다.
RAID 이미지를 병합하는 lvconvert 명령의 형식은 다음과 같습니다.
lvconvert --merge raid_image
다음 예제에서는 RAID1 논리 볼륨을 생성한 다음 나머지 배열로 변경 사항을 추적하면서 해당 볼륨에서 이미지를 분할합니다.
# lvcreate --type raid1 -m 2 -L 1G -n my_lv .vg
  Logical volume "my_lv" created
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sdb1(1)
  [my_lv_rimage_1]        /dev/sdc1(1)
  [my_lv_rimage_2]        /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sdb1(0)
  [my_lv_rmeta_1]         /dev/sdc1(0)
  [my_lv_rmeta_2]         /dev/sdd1(0)
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  my_lv_rimage_2 split from my_lv for read-only purposes.
  Use 'lvconvert --merge my_vg/my_lv_rimage_2' to merge back into my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sdb1(1)
  [my_lv_rimage_1]        /dev/sdc1(1)
  my_lv_rimage_2          /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sdb1(0)
  [my_lv_rmeta_1]         /dev/sdc1(0)
  [my_lv_rmeta_2]         /dev/sdd1(0)
다음 예제에서는 RAID1 볼륨에서 이미지를 분할하고 나머지 배열에 변경 사항을 추적한 다음 볼륨을 다시 배열에 병합합니다.
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  lv_rimage_1 split from my_lv for read-only purposes.
  Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sdc1(1)
  my_lv_rimage_1          /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sdc1(0)
  [my_lv_rmeta_1]         /dev/sdd1(0)
# lvconvert --merge my_vg/my_lv_rimage_1
  my_vg/my_lv_rimage_1 successfully merged back into my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sdc1(1)
  [my_lv_rimage_1]        /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sdc1(0)
  [my_lv_rmeta_1]         /dev/sdd1(0)
RAID1 볼륨에서 이미지를 분할한 후에는 두 번째 lvconvert --splitmirrors 명령을 실행하여 --trackchanges 인수를 지정하지 않고 이미지를 분할하는 초기 lvconvert 명령을 반복하여 분할을 영구적으로 만들 수 있습니다. 이렇게 하면 --trackchanges 인수가 생성된 링크가 중단됩니다.
--trackchanges 인수로 이미지를 분할한 후에는 추적 중인 이미지를 영구적으로 분할하지 않으려면 해당 배열에서 후속 lvconvert --splitmirrors 명령을 실행할 수 없습니다.
다음 명령 시퀀스는 이미지를 분할하고 이미지를 추적한 다음 추적 중인 이미지를 영구적으로 분할합니다.
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  my_lv_rimage_1 split from my_lv for read-only purposes.
  Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv
# lvconvert --splitmirrors 1 -n new my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV   Copy%  Devices
  my_lv          /dev/sdc1(1)
  new            /dev/sdd1(1)
그러나 다음 명령 시퀀스는 실패합니다.
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  my_lv_rimage_1 split from my_lv for read-only purposes.
  Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  Cannot track more than one split image at a time
마찬가지로 분할 이미지가 추적 중인 이미지가 아니므로 다음 명령 순서도 실패합니다.
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
  my_lv_rimage_1 split from my_lv for read-only purposes.
  Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sdc1(1)
  my_lv_rimage_1          /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sdc1(0)
  [my_lv_rmeta_1]         /dev/sdd1(0)
# lvconvert --splitmirrors 1 -n new my_vg/my_lv /dev/sdc1
  Unable to split additional image from my_lv while tracking changes for my_lv_rimage_1

4.4.3.9. RAID 오류 정책 설정

LVM RAID는 lvm.conf 파일의 raid_fault_policy 필드에 정의된 기본 설정에 따라 장치 오류를 자동으로 처리합니다.
  • raid_fault_policy 필드가 allocate 로 설정된 경우 시스템은 볼륨 그룹의 예비 장치로 실패한 장치를 대체하려고 합니다. 사용 가능한 예비 장치가 없으면 시스템 로그에 보고됩니다.
  • raid_fault_policy 필드가 warn 로 설정된 경우 시스템은 경고를 생성하고 로그는 장치가 실패했음을 나타냅니다. 이를 통해 사용자는 수행할 작업 과정을 결정할 수 있습니다.
사용성을 지원하기에 충분한 장치가 남아 있는 경우 RAID 논리 볼륨이 계속 작동합니다.
4.4.3.9.1. RAID Fault 정책 할당
다음 예에서 raid_fault_policy 필드가 lvm.conf 파일에 할당 하도록 설정되어 있습니다. RAID 논리 볼륨은 다음과 같이 표시됩니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
/dev/sde 장치가 실패하면 시스템 로그에 오류 메시지가 표시됩니다.
# grep lvm /var/log/messages 
Jan 17 15:57:18 bp-01 lvm[8599]: Device #0 of raid1 array, my_vg-my_lv, has failed.
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994294784: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994376704: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at 0:
Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
4096: Input/output error
Jan 17 15:57:19 bp-01 lvm[8599]: Couldn't find device with uuid
3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
Jan 17 15:57:27 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is not in-sync.
Jan 17 15:57:36 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is now in-sync.
raid_fault_policy 필드가 allocate 로 설정되었으므로 실패한 장치가 볼륨 그룹의 새 장치로 교체됩니다.
# lvs -a -o name,copy_percent,devices vg
  Couldn't find device with uuid 3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
  LV            Copy%  Devices
  lv            100.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0)
  [lv_rimage_0]        /dev/sdh1(1)
  [lv_rimage_1]        /dev/sdf1(1)
  [lv_rimage_2]        /dev/sdg1(1)
  [lv_rmeta_0]         /dev/sdh1(0)
  [lv_rmeta_1]         /dev/sdf1(0)
  [lv_rmeta_2]         /dev/sdg1(0)
실패한 장치를 교체했지만 디스플레이는 LVM에서 실패한 장치를 찾을 수 없음을 나타냅니다. 이는 실패한 장치가 RAID 논리 볼륨에서 제거되었지만 아직 실패한 장치가 볼륨 그룹에서 제거되지 않았기 때문입니다. 볼륨 그룹에서 실패한 장치를 제거하려면 Cryostatreduce --removemissing VG 실행할 수 있습니다.
raid_fault_policyallocate 로 설정했지만 예비 장치가 없는 경우 할당이 실패하고 논리 볼륨을 그대로 둡니다. 할당이 실패하면 드라이브를 수정한 다음 논리 볼륨을 비활성화 및 활성화하는 옵션이 있습니다. 이는 4.4.3.9.2절. “warn RAID Fault Policy” 에 설명되어 있습니다. 또는 4.4.3.10절. “RAID 장치 교체” 에 설명된 대로 실패한 장치를 교체할 수 있습니다.
4.4.3.9.2. warn RAID Fault Policy
다음 예에서 raid_fault_policy 필드가 lvm.conf 파일에서 warn 로 설정되어 있습니다. RAID 논리 볼륨은 다음과 같이 표시됩니다.
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sdh1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sdh1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
/dev/sdh 장치가 실패하면 시스템 로그에 오류 메시지가 표시됩니다. 그러나 이 경우 LVM에서 이미지 중 하나를 교체하여 RAID 장치를 자동으로 복구하지 않습니다. 대신 장치가 실패한 경우 다음과 같이 장치를 lvconvert 명령의 --repair 인수로 교체할 수 있습니다.
# lvconvert --repair my_vg/my_lv
  /dev/sdh1: read failed after 0 of 2048 at 250994294784: Input/output error
  /dev/sdh1: read failed after 0 of 2048 at 250994376704: Input/output error
  /dev/sdh1: read failed after 0 of 2048 at 0: Input/output error
  /dev/sdh1: read failed after 0 of 2048 at 4096: Input/output error
  Couldn't find device with uuid fbI0YO-GX7x-firU-Vy5o-vzwx-vAKZ-feRxfF.
Attempt to replace failed RAID images (requires full device resync)? [y/n]: y

# lvs -a -o name,copy_percent,devices my_vg
  Couldn't find device with uuid fbI0YO-GX7x-firU-Vy5o-vzwx-vAKZ-feRxfF.
  LV               Copy%  Devices
  my_lv             64.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(1)
  [my_lv_rimage_1]        /dev/sdf1(1)
  [my_lv_rimage_2]        /dev/sdg1(1)
  [my_lv_rmeta_0]         /dev/sde1(0)
  [my_lv_rmeta_1]         /dev/sdf1(0)
  [my_lv_rmeta_2]         /dev/sdg1(0)
실패한 장치를 교체했지만 디스플레이는 LVM에서 실패한 장치를 찾을 수 없음을 나타냅니다. 이는 실패한 장치가 RAID 논리 볼륨에서 제거되었지만 아직 실패한 장치가 볼륨 그룹에서 제거되지 않았기 때문입니다. 볼륨 그룹에서 실패한 장치를 제거하려면 Cryostatreduce --removemissing VG 실행할 수 있습니다.
장치 오류가 일시적인 오류이거나 실패한 장치를 복구할 수 있는 경우 lvchange 명령의 --refresh 옵션을 사용하여 실패한 장치의 복구를 시작할 수 있습니다. 이전에는 논리 볼륨을 비활성화한 다음 활성화해야 했습니다.
다음 명령은 논리 볼륨을 새로 고칩니다.
# lvchange --refresh my_vg/my_lv

4.4.3.10. RAID 장치 교체

RAID는 기존 LVM 미러링과 같지 않습니다. LVM 미러링을 제거하려면 실패한 장치를 제거하거나 미러링된 논리 볼륨이 중단되었습니다. RAID 배열은 실패한 장치로 계속 실행될 수 있습니다. 실제로 RAID1 이외의 RAID 유형의 경우 장치를 제거하는 것은 더 낮은 수준의 RAID(예: RAID6에서 RAID5로 또는 RAID4 또는 RAID5에서 RAID0)로 변환하는 것을 의미합니다. 따라서 실패한 장치를 무조건 제거하고 대체를 잠재적으로 할당하는 대신 LVM을 사용하면 lvconvert 명령의 --replace 인수를 사용하여 1단계 솔루션의 RAID 볼륨의 장치를 교체할 수 있습니다.
lvconvert --replace 의 형식은 다음과 같습니다.
lvconvert --replace dev_to_remove vg/lv [possible_replacements]
다음 예제에서는 RAID1 논리 볼륨을 생성한 다음 해당 볼륨에서 장치를 교체합니다.
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg
  Logical volume "my_lv" created
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sdb1(1)
  [my_lv_rimage_1]        /dev/sdb2(1)
  [my_lv_rimage_2]        /dev/sdc1(1)
  [my_lv_rmeta_0]         /dev/sdb1(0)
  [my_lv_rmeta_1]         /dev/sdb2(0)
  [my_lv_rmeta_2]         /dev/sdc1(0)
# lvconvert --replace /dev/sdb2 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             37.50 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sdb1(1)
  [my_lv_rimage_1]        /dev/sdc2(1)
  [my_lv_rimage_2]        /dev/sdc1(1)
  [my_lv_rmeta_0]         /dev/sdb1(0)
  [my_lv_rmeta_1]         /dev/sdc2(0)
  [my_lv_rmeta_2]         /dev/sdc1(0)
다음 예제에서는 RAID1 논리 볼륨을 생성한 다음 해당 볼륨에서 장치를 교체하는데 사용할 물리 볼륨을 지정합니다.
# lvcreate --type raid1 -m 1 -L 100 -n my_lv my_vg
  Logical volume "my_lv" created
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
# pvs
  PV          VG       Fmt  Attr PSize    PFree
  /dev/sda1   my_vg    lvm2 a--  1020.00m  916.00m
  /dev/sdb1   my_vg    lvm2 a--  1020.00m  916.00m
  /dev/sdc1   my_vg    lvm2 a--  1020.00m 1020.00m
  /dev/sdd1   my_vg    lvm2 a--  1020.00m 1020.00m
# lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             28.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdd1(0)
다음 예와 같이 여러 대체 인수를 지정하여 한 번에 두 개 이상의 RAID 장치를 교체할 수 있습니다.
# lvcreate --type raid1 -m 2 -L 100 -n my_lv my_vg
  Logical volume "my_lv" created
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rimage_2]        /dev/sdc1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
  [my_lv_rmeta_2]         /dev/sdc1(0)
# lvconvert --replace /dev/sdb1 --replace /dev/sdc1 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             60.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdd1(1)
  [my_lv_rimage_2]        /dev/sde1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdd1(0)
  [my_lv_rmeta_2]         /dev/sde1(0)
참고
lvconvert --replace 명령을 사용하여 교체 드라이브를 지정하면 배열에 이미 사용된 드라이브의 추가 공간에서 교체 드라이브를 할당해서는 안 됩니다. 예를 들어 lv_rimage_0lv_rimage_1 은 동일한 물리 볼륨에 있으면 안 됩니다.

4.4.3.11. RAID 논리 볼륨 삭제

LVM은 RAID 논리 볼륨에 대한 스크럽 지원을 제공합니다. RAID 스크럽은 배열에서 모든 데이터 및 패리티 블록을 읽고 해당 블록이 일관된지 여부를 확인하는 프로세스입니다.
lvchange 명령의 --syncaction 옵션을 사용하여 RAID 스크럽 작업을 시작합니다. 검사 또는 복구 작업을 지정합니다. 검사 작업은 배열을 통과하여 배열의 불일치 수를 기록하지만 복구하지는 않습니다. 복구 작업은 찾기에 따라 불일치를 수정합니다.
RAID 논리 볼륨을 스크럽하는 명령 형식은 다음과 같습니다.
lvchange --syncaction {check|repair} vg/raid_lv
참고
lvchange --syncaction repair Cryostat /raid_lv 작업은 lv convert --repair Cryostat /raid_lv 작업과 동일한 기능을 수행하지 않습니다. lvchange --syncaction 복구 작업은 배열에서 백그라운드 동기화 작업을 시작합니다. lvconvert --repair 작업은 미러 또는 RAID 논리 볼륨에서 실패한 장치를 복구/수정하도록 설계되었습니다.
새로운 RAID scrubbing 작업을 지원하기 위해 lvs 명령은 이제 raid_sync_actionraid_mismatch_count 라는 두 개의 새 출력 가능한 필드를 지원합니다. 이러한 필드는 기본적으로 인쇄되지 않습니다. 이러한 필드를 표시하려면 다음과 같이 lv의 -o 매개변수를 사용하여 지정합니다.
lvs -o +raid_sync_action,raid_mismatch_count vg/lv
raid_sync_action 필드에는 raid 볼륨이 수행 중인 현재 동기화 작업이 표시됩니다. 다음 값 중 하나일 수 있습니다.
  • idle: 모든 동기화 작업이 완료 (없음)
  • Resync: 배열 초기화 또는 시스템 오류 후 복구
  • Replacing a device in the array
  • check: array inconsistencies 검색
  • 복구: 불일치를 찾고 복구
raid_mismatch_count 필드에는 검사 작업 중 발견된 불일치 수가 표시됩니다.
이제 lvs 명령의 Cpy%Sync 필드가 검사복구를 포함하여 raid_sync_action 작업 진행 상황을 출력합니다.
lvs 명령 출력의 lv_attr 필드에는 RAID 스크러빙 작업을 지원하기 위한 추가 표시기가 제공됩니다. 이 필드의 비트 9는 논리 볼륨의 상태를 표시하며 이제 다음 지표를 지원합니다.
  • (m)ismatches는 RAID 논리 볼륨에 불일치가 있음을 나타냅니다. 이 문자는 스크럽 작업이 RAID의 일부가 일관되지 않은 부분을 감지한 후에 표시됩니다.
  • (R)efresh는 RAID 배열의 장치가 오류가 발생했음을 나타내며, 커널은 LVM이 장치 레이블을 읽고 장치를 작동할 것으로 간주하더라도 실패한 것으로 간주합니다. 논리 볼륨은 장치를 현재 사용할 수 있음을 알리는 (r)efreshed이거나 실패한 것으로 의심되는 경우 장치를 (r) 배치해야 합니다.
lvs 명령에 대한 자세한 내용은 4.8.2절. “오브젝트 표시 필드” 을 참조하십시오.
RAID 스크러블링 작업을 수행할 때 동기화 작업에 필요한 백그라운드 I/O는 볼륨 그룹 메타데이터 업데이트 등 LVM 장치에 대한 다른 I/O 작업을 크라우드할 수 있습니다. 이로 인해 다른 LVM 작업이 느려질 수 있습니다. 복구 제한 사항을 구현하여 RAID 논리 볼륨이 스크럽되는 속도를 제어할 수 있습니다.
lvchange 명령의 --minrecoveryrate--maxrecoveryrate 옵션을 사용하여 해당 작업의 최소 및 최대 I/O 속도를 설정하여 동기화 작업이 수행되는 속도를 제어합니다. 이러한 옵션을 다음과 같이 지정합니다.
  • --maxrecoveryrate 속도[bBsSkKmMgG]
    RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 대규모로 설정하지 않도록 합니다. Rate 는 배열의 각 장치에 대한 초당 양으로 지정됩니다. 접미사가 제공되지 않으면 kiB/sec/device로 가정합니다. 복구 속도를 0으로 설정하면 바인딩되지 않음을 의미합니다.
  • --minrecoveryrate 속도[bBsSkKmMgG]
    RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 확보합니다. Rate 는 배열의 각 장치에 대한 초당 양으로 지정됩니다. 접미사가 제공되지 않으면 kiB/sec/device로 가정합니다.

4.4.3.12. RAID takeover(Red Hat Enterprise Linux 7.4 및 later)

LVM은 Raid takeover 를 지원하므로 RAID 논리 볼륨을 한 RAID 수준에서 다른 단계로 변환합니다(예: RAID 5에서 RAID 6으로). RAID 수준 변경은 일반적으로 장치 오류 또는 나머지 논리 볼륨에 대한 복원성을 늘리거나 줄이기 위해 수행됩니다. RAID takeover에 lvconvert 를 사용합니다. RAID에 대한 정보와 lvconvert 를 사용하여 RAID 논리 볼륨을 변환하는 예제는 lvmraid(7) 매뉴얼 페이지를 참조하십시오.

4.4.3.13. RAID 논리 볼륨 조정(Red Hat Enterprise Linux 7.4 및 later)

RAID reshaping 은 동일한 RAID 수준을 유지하면서 RAID 논리 볼륨의 속성을 변경한다는 것을 의미합니다. 변경할 수 있는 일부 속성에는 RAID 레이아웃, 스트라이프 크기 및 스트라이프 수가 포함됩니다. lvconvert 명령을 사용하여 RAID 논리 볼륨을 재구성하는 RAID 리셰이핑 및 예제에 대한 자세한 내용은 lvmraid(7) 도움말 페이지를 참조하십시오.

4.4.3.14. RAID1 논리 볼륨에서 I/O 작업 제어

lvchange 명령의 --writemost 및 --write behind 매개변수를 사용하여 RAID1 논리 볼륨에서 장치의 I/O 작업을 제어할 수 있습니다. 이러한 매개 변수를 사용하는 형식은 다음과 같습니다.
  • --[raid]writemostly PhysicalVolume[:{t|y|n}]
    RAID1 논리 볼륨의 장치를 대부분 쓰기로 표시합니다. 이러한 드라이브에 대한 모든 읽기는 필요하지 않은 한 피할 수 있습니다. 이 매개 변수를 설정하면 I/O 작업 수를 드라이브에 최소로 유지합니다. 기본적으로 write-mostly 속성은 논리 볼륨에서 지정된 물리 볼륨에 대해 yes로 설정됩니다. 물리 볼륨에 :n 을 추가하거나 :t 를 지정하여 값을 전환하여 write-mostly 플래그를 제거할 수 있습니다. --writemostly 인수는 단일 명령에서 두 번 이상 지정할 수 있으므로 논리 볼륨의 모든 물리 볼륨에 대해 가장 쓰기 특성을 한 번에 전환할 수 있습니다.
  • --[RAID]writebehind IOCount
    가장 많이 쓰기로 표시된 RAID1 논리 볼륨의 장치에 허용되는 미해결 쓰기의 최대 수를 지정합니다. 이 값을 초과하면 쓰기가 동기가 되어 배열이 쓰기가 완료되기 전에 구성 장치에 대한 모든 쓰기가 완료됩니다. 값을 0으로 설정하면 기본 설정이 지워지고 시스템에서 임의로 값을 선택할 수 있습니다.

4.4.3.15. RAID 논리 볼륨(Red Hat Enterprise Linux 7.4 이상)에서 지역 크기 변경

RAID 논리 볼륨을 생성할 때 논리 볼륨의 영역 크기는 /etc/lvm/lvm.conf 파일의 raid_region_size 매개변수 값이 됩니다. 이 기본값을 lvcreate 명령의 -R 옵션으로 덮어쓸 수 있습니다.
RAID 논리 볼륨을 생성한 후에는 lvconvert 명령의 -R 옵션을 사용하여 볼륨의 영역 크기를 변경할 수 있습니다. 다음 예제에서는 논리 볼륨 Cryostat /raidlv 의 지역 크기를 4096K로 변경합니다. 영역 크기를 변경하려면 RAID 볼륨을 동기화해야 합니다.
# lvconvert -R 4096K vg/raid1
Do you really want to change the region_size 512.00 KiB of LV vg/raid1 to 4.00 MiB? [y/n]: y
  Changed region size on RAID LV vg/raid1 to 4.00 MiB.

4.4.4. 미러링된 볼륨 생성

Red Hat Enterprise Linux 7.0 릴리스의 경우 LVM은 4.4.3절. “RAID 논리 볼륨” 에 설명된 대로 RAID 1/4/5/6/10을 지원합니다. RAID 논리 볼륨은 클러스터가 인식되지 않습니다. RAID 논리 볼륨은 한 컴퓨터에서만 생성하고 활성화할 수 있지만 두 개 이상의 컴퓨터에서 동시에 활성화할 수 없습니다. 비독점 미러링 볼륨이 필요한 경우 이 섹션에 설명된 대로 미러 세그먼트 유형으로 볼륨을 생성해야 합니다.
참고
미러 의 세그먼트 유형으로 기존 LVM 장치를 RAID1 LVM 장치로 변환하는 방법에 대한 자세한 내용은 4.4.3.4절. “미러링된 LVM 장치를 RAID1 장치로 변환” 을 참조하십시오.
참고
클러스터에 미러링된 LVM 논리 볼륨을 생성하려면 단일 노드에서 미러 세그먼트 유형으로 미러링된 LVM 논리 볼륨을 생성하는 것과 동일한 명령 및 절차가 필요합니다. 그러나 클러스터에 미러링된 LVM 볼륨을 생성하려면 클러스터 및 클러스터 미러 인프라를 실행해야 하며 클러스터가 정족수화되어야 하며 lvm.conf 파일의 잠금 유형을 클러스터 잠금을 활성화하려면 올바르게 설정해야 합니다. 클러스터에 미러링된 볼륨을 생성하는 예는 5.5절. “클러스터에서 미러링된 LVM 논리 볼륨 생성” 를 참조하십시오.
클러스터의 여러 노드에서 빠르게 연속으로 여러 LVM 미러 생성 및 변환 명령을 실행하려고 하면 이러한 명령이 백포트될 수 있습니다. 이로 인해 요청된 일부 작업이 시간 초과되고 이후에 실패할 수 있습니다. 이 문제를 방지하려면 클러스터의 한 노드에서 클러스터 미러 생성 명령을 실행하는 것이 좋습니다.
미러링된 볼륨을 생성할 때 lvcreate 명령의 -m 인수를 사용하여 만들 데이터의 사본 수를 지정합니다. m1 을 지정하면 하나의 미러가 생성되며 파일 시스템의 두 복사본(lineline 논리 볼륨과 하나의 복사)을 생성합니다. 마찬가지로 -m2 를 지정하면 미러 두 개가 생성되어 파일 시스템의 복사본 3개가 생성됩니다.
다음 명령은 단일 미러를 사용하여 미러링된 논리 볼륨을 생성합니다. 볼륨은 크기가 50 기가바이트이며 mirrorlv 이며 볼륨 그룹>.< 0:에서 제거됩니다.
# lvcreate --type mirror -L 50G -m 1 -n mirrorlv vg0
LVM 미러는 복사 중인 장치를 기본적으로 512KB의 크기로 나눕니다. lvcreate 명령의 -R 인수를 사용하여 지역 크기를 메가바이트로 지정할 수 있습니다. lvm.conf 파일에서 mirror_region_size 설정을 편집하여 기본 영역 크기를 변경할 수도 있습니다.
참고
클러스터 인프라의 제한으로 인해 1.5TB보다 큰 클러스터 미러를 512KB의 기본 리전 크기로 생성할 수 없습니다. 더 큰 미러가 필요한 사용자는 지역 크기를 기본에서 더 큰 값으로 늘려야 합니다. 영역 크기를 늘리지 않으면 LVM 생성이 중단되고 다른 LVM 명령도 중단될 수 있습니다.
1.5TB보다 큰 미러의 영역 크기를 지정하기 위한 일반적인 지침으로 테라바이트에서 미러 크기를 가져와서 lvcreate 명령에 -R 인수로 사용하여 해당 수를 다음 2의 값으로 반올림할 수 있습니다. 예를 들어 미러 크기가 1.5TB인 경우 -R 2 를 지정할 수 있습니다. 미러 크기가 3TB인 경우 -R 4 를 지정할 수 있습니다. 미러 크기가 5TB인 경우 -R 8 을 지정할 수 있습니다.
다음 명령은 영역 크기가 2MB인 미러링된 논리 볼륨을 생성합니다.
# lvcreate --type mirror -m 1 -L 2T -R 2 -n mirror vol_group
미러가 생성되면 미러 지역이 동기화됩니다. 대규모 미러 구성 요소의 경우 동기화 프로세스에 시간이 오래 걸릴 수 있습니다. 다시 시작할 필요가 없는 새 미러를 만드는 경우 --nosync 인수를 지정하여 첫 번째 장치의 초기 동기화가 필요하지 않음을 나타낼 수 있습니다.
LVM은 미러 또는 미러와 동기화되는 영역을 추적하는 데 사용하는 작은 로그를 유지 관리합니다. 기본적으로 이 로그는 디스크에 유지되므로 재부팅 후에도 영구적으로 유지되며 시스템이 재부팅되거나 충돌할 때마다 미러를 다시 동기화할 필요가 없습니다. 대신 이 로그가 --mirrorlog core 인수를 사용하여 메모리에 보관하도록 지정할 수 있습니다. 따라서 추가 로그 장치에 대한 필요성을 제거하지만 전체 미러를 재부팅할 때마다 다시 동기화해야 합니다.
다음 명령은 볼륨 그룹 bigvg 에서 미러링된 논리 볼륨을 생성합니다. 논리 볼륨의 이름은 ondiskmirvol 이며 단일 미러가 있습니다. 볼륨은 크기가 12MB이며 미러 로그를 메모리에 유지합니다.
# lvcreate --type mirror -L 12MB -m 1 --mirrorlog core -n ondiskmirvol bigvg
  Logical volume "ondiskmirvol" created
미러 로그는 미러 복사본이 생성되는 장치와 별도의 장치에 생성됩니다. 그러나 --alloc을 사용하여 mirror leg 중 하나와 동일한 장치에 미러 로그를 생성할 수 있습니다. 이로 인해 성능이 저하될 수 있지만 두 개의 기본 장치만 있어도 미러를 만들 수 있습니다.
다음 명령은 미러 로그가 미러 로그 중 하나와 동일한 장치에 미러 로그가 단일 미러인 미러링된 논리 볼륨을 생성합니다. 이 예에서 볼륨 그룹은 두 개의 장치로만 구성됩니다. 이 명령은 Cryostat 0 볼륨 그룹에 mirrorlv 라는 500MB 볼륨을 생성합니다.
# lvcreate --type mirror -L 500M -m 1 -n mirrorlv -alloc anywhere vg0
참고
클러스터형 미러를 사용하는 경우 미러 로그 관리는 현재 클러스터 ID가 가장 낮은 클러스터 노드를 전적으로 담당합니다. 따라서 클러스터 미러 로그를 보유한 장치를 클러스터의 하위 집합에서 사용할 수 없게 되면 ID가 가장 낮은 클러스터 노드가 미러 로그에 액세스할 수 있는 경우 클러스터형 미러가 아무런 영향 없이 계속 작동할 수 있습니다. 미러는disturbed이므로 자동 수정 작업(repair)도 발행되지 않습니다. lowest-ID 클러스터 노드가 미러 로그에 대한 액세스 권한을 잃으면 자동 작업이 시작됩니다(다른 노드에서 로그에 대한 액세스 가능성은 아님).
미러링된 미러 로그를 생성하려면 --mirrorlog 미러링 된 인수를 지정할 수 있습니다. 다음 명령은 볼륨 그룹 bigvg 에서 미러링된 논리 볼륨을 생성합니다. 논리 볼륨의 이름은 twologvol 이며 단일 미러가 있습니다. 볼륨은 크기가 12MB이고 미러 로그는 각 로그가 별도의 장치에 보관되어 있습니다.
# lvcreate --type mirror -L 12MB -m 1 --mirrorlog mirrored -n twologvol bigvg
  Logical volume "twologvol" created
표준 미러 로그와 마찬가지로 Cryostatcreate 명령의 임의의 인수를 사용하여 --alloc 을 사용하여 미러 브릿지와 동일한 장치에서 중복 미러 로그를 생성할 수 있습니다. 이로 인해 성능이 저하될 수 있지만 각 로그가 미러 다리보다 별도의 장치에 보관될 수 있는 충분한 기본 장치가 없는 경우에도 중복 미러 로그를 만들 수 있습니다.
미러가 생성되면 미러 지역이 동기화됩니다. 대규모 미러 구성 요소의 경우 동기화 프로세스에 시간이 오래 걸릴 수 있습니다. 다시 시작할 필요가 없는 새 미러를 만드는 경우 --nosync 인수를 지정하여 첫 번째 장치의 초기 동기화가 필요하지 않음을 나타낼 수 있습니다.
미러 다리 및 로그에 사용할 장치와 사용할 장치 확장 영역을 지정할 수 있습니다. 로그를 특정 디스크에 강제 적용하려면 해당 디스크를 배치할 디스크에 정확히 하나의 범위를 지정합니다. LVM은 명령줄에 장치가 나열된 순서를 따를 필요가 없습니다. 할당이 적용되는 유일한 공간인 물리 볼륨이 나열된 경우. 이미 할당된 목록에 포함된 물리 확장 프로그램은 무시됩니다.
다음 명령은 미러링되지 않은 단일 로그와 단일 미러를 사용하여 미러링된 논리 볼륨을 생성합니다. 볼륨은 크기가 500MB이고 mirrorlv라는 이름은 mirrorlv 이며 볼륨 그룹 Cryostat 0에서 제거됩니다. 미러의 첫 번째 길이는 장치 /dev/sda1 이고, 미러의 두 번째는 /dev/sdb1 장치에 있으며 미러 로그는 /dev/sdc1 에 있습니다.
# lvcreate --type mirror -L 500M -m 1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
다음 명령은 단일 미러를 사용하여 미러링된 논리 볼륨을 생성합니다. 볼륨은 크기가 500MB이고 mirrorlv라는 이름은 mirrorlv 이며 볼륨 그룹 Cryostat 0에서 제거됩니다. 미러의 첫 번째 길이는 장치 /dev/sda1 장치의 0에서 499까지 확장 영역 0부터 499까지입니다. 미러 로그는 장치 /dev/sdb1 의 범위 0에서 시작하여 미러 로그는 장치 /dev/sdc1 의 범위 0에서 시작됩니다. 이는 1MB Extent입니다. 지정된 확장 영역이 이미 할당된 경우 무시됩니다.
# lvcreate --type mirror -L 500M -m 1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0
참고
제거 및 미러링을 단일 논리 볼륨으로 결합할 수 있습니다. 미러 수(--mirrors X)와 스트라이프 수(-stripes Y)를 동시에 지정하면 구성 장치가 제거된 미러 장치가 생성됩니다.

4.4.4.1. 미러링된 논리 볼륨 실패 정책

lvm.conf 파일의 activation 섹션에 mirror_image_fault_policymirror_log_fault_policy 매개변수를 사용하여 장치 오류 발생 시 미러링된 논리 볼륨이 작동하는 방식을 정의할 수 있습니다. 이러한 매개 변수 를 제거 하도록 설정하면 시스템에서 결함이 있는 장치를 제거하고 없이 실행하려고 합니다. 이러한 매개 변수가 할당 되도록 설정되면 시스템은 결함이 있는 장치를 제거하고 새 장치에 공간을 할당하여 실패한 장치를 대체하려고 합니다. 이 정책은 교체를 위해 적절한 장치와 공간을 할당할 수 없는 경우 제거 정책처럼 작동합니다.
기본적으로 mirror_log_fault_policy 매개변수는 allocate 로 설정됩니다. 로그에 이 정책을 사용하면 속도가 빠르며 충돌 및 재부팅을 통해 동기화 상태를 기억할 수 있습니다. 제거 하도록 이 정책을 설정하면 로그 장치가 메모리 내 로그를 사용하여 미러가 변환됩니다. 이 경우 미러는 충돌 간 동기화 상태를 기억하고 재부팅하지 않으며 전체 미러가 다시 동기화됩니다.
기본적으로 mirror_image_fault_policy 매개변수는 를 제거 하도록 설정됩니다. 이 정책을 사용하면 미러 이미지가 실패한 경우 나머지 복사본이 하나만 있으면 미러가 미러되지 않은 장치로 변환됩니다. 미러 장치에 할당 하도록 이 정책을 설정하려면 미러가 장치를 다시 동기화해야 합니다. 이는 느린 프로세스이지만 장치의 미러 특성을 유지합니다.
참고
LVM 미러에 장치 오류가 발생하면 2단계 복구가 수행됩니다. 첫 번째 단계는 실패한 장치를 제거하는 것입니다. 이로 인해 미러가 선형 장치로 줄어들 수 있습니다. 두 번째 단계는 mirror_log_fault_policy 매개변수가 allocate 로 설정된 경우 실패한 장치를 교체하는 것입니다. 그러나 다른 단계를 사용할 수 있는 경우 실패의 일부가 아닌 미러에서 두 번째 단계가 이전에 사용 중 사용 중인 장치를 선택한다는 보장은 없습니다.
LVM 미러 오류에서 수동으로 복구하는 방법에 대한 자세한 내용은 6.2절. “LVM Mirror 실패에서 복구” 을 참조하십시오.

4.4.4.2. 파티셔닝 Off aRedundant Image of a Mirrored Logical Volume

미러링된 논리 볼륨의 중복 이미지를 분리하여 새 논리 볼륨을 구성할 수 있습니다. 이미지를 분할하려면 lvconvert 명령의 --splitmirrors 인수를 사용하여 분할할 중복 이미지 수를 지정합니다. 명령의 --name 인수를 사용하여 newly-split-off 논리 볼륨의 이름을 지정해야 합니다.
다음 명령은 미러링된 논리 볼륨 Cryostat /lv에서 copy 라는 새 논리 볼륨 을 분할합니다. 새 논리 볼륨에는 두 개의 미러 다리가 있습니다. 이 예에서 LVM은 분할할 장치를 선택합니다.
# lvconvert --splitmirrors 2 --name copy vg/lv
분할할 장치를 지정할 수 있습니다. 다음 명령은 미러링된 논리 볼륨 Cryostat /lv에서 copy 라는 새 논리 볼륨 을 분할합니다. 새 논리 볼륨에는 /dev/sdc1/dev/sde1 장치로 구성된 두 개의 미러 브릿지가 포함되어 있습니다.
# lvconvert --splitmirrors 2 --name copy vg/lv /dev/sd[ce]1

4.4.4.3. 미러링된 논리 장치 복구

lvconvert --repair 명령을 사용하여 디스크 오류 후 미러를 복구할 수 있습니다. 그러면 미러가 일관된 상태로 되돌아갑니다. lvconvert --repair 명령은 시스템에서 실패한 장치를 교체할지 여부를 나타내는 대화형 명령입니다.
  • 프롬프트를 건너뛰고 실패한 장치를 모두 교체하려면 명령줄에서 -y 옵션을 지정합니다.
  • 프롬프트를 건너뛰고 실패한 장치를 교체하려면 명령줄에서 -f 옵션을 지정합니다.
  • 프롬프트를 건너뛰고 미러 이미지와 미러 로그에 대한 다른 대체 정책을 표시하려면 --use-policies 인수를 지정하여 lvm.conf 파일의 mirror_log_fault _policy 매개변수로 지정된 장치 교체 정책을 사용할 수 있습니다.

4.4.4.4. 미러링된 볼륨 구성 변경

lvconvert 명령을 사용하여 논리 볼륨에 포함된 미러 수를 늘리거나 줄일 수 있습니다. 이를 통해 미러링된 볼륨에서 선형 볼륨 또는 선형 볼륨에서 미러링된 볼륨으로 논리 볼륨을 변환할 수 있습니다. 이 명령을 사용하여 corelog 와 같은 기존 논리 볼륨의 다른 미러 매개변수를 재구성할 수도 있습니다.
선형 볼륨을 미러링된 볼륨으로 변환할 때 기존 볼륨의 미러 저장소를 만듭니다. 즉, 볼륨 그룹에 미러 다리와 미러 로그의 장치 및 공간이 포함되어야 합니다.
미러 레코드가 손실된 경우 LVM은 볼륨을 선형 볼륨으로 변환하여 미러 중복 없이 볼륨에 계속 액세스할 수 있도록 합니다. leg를 교체한 후 lvconvert 명령을 사용하여 미러를 복원합니다. 이 절차는 6.2절. “LVM Mirror 실패에서 복구” 에서 제공됩니다.
다음 명령은 선형 논리 볼륨 Cryostat 00/lvol1 을 미러링된 논리 볼륨으로 변환합니다.
# lvconvert -m1 vg00/lvol1
다음 명령은 미러링된 논리 볼륨 Cryostat 00/lvol1 을 선형 논리 볼륨으로 변환하여 미러 브릿지를 제거합니다.
# lvconvert -m0 vg00/lvol1
다음 예제에서는 기존 논리 볼륨 Cryostat 00/lvol1 에 추가 미러 버전을 추가합니다. 이 예에서는 lvconvert 명령이 볼륨을 두 개의 미러 브릿지가 있는 볼륨으로 변경한 후 볼륨의 구성을 보여줍니다.
# lvs -a -o name,copy_percent,devices vg00
  LV                  Copy%  Devices
  lvol1               100.00 lvol1_mimage_0(0),lvol1_mimage_1(0)
  [lvol1_mimage_0]        /dev/sda1(0)
  [lvol1_mimage_1]        /dev/sdb1(0)
  [lvol1_mlog]            /dev/sdd1(0)
# lvconvert -m 2 vg00/lvol1
  vg00/lvol1: Converted: 13.0%
  vg00/lvol1: Converted: 100.0%
  Logical volume lvol1 converted.
# lvs -a -o name,copy_percent,devices vg00
  LV                  Copy%  Devices
  lvol1               100.00 lvol1_mimage_0(0),lvol1_mimage_1(0),lvol1_mimage_2(0)
  [lvol1_mimage_0]        /dev/sda1(0)
  [lvol1_mimage_1]        /dev/sdb1(0)
  [lvol1_mimage_2]        /dev/sdc1(0)
  [lvol1_mlog]            /dev/sdd1(0)

4.4.5. 씬 프로비저닝된 논리 볼륨 생성

논리 볼륨은 씬 프로비저닝할 수 있습니다. 이를 통해 사용 가능한 확장 영역보다 큰 논리 볼륨을 만들 수 있습니다. 씬 프로비저닝을 사용하면 씬 풀이라는 여유 공간 스토리지 풀을 관리할 수 있으며, 애플리케이션에 필요할 때 임의의 수의 장치에 할당할 수 있습니다. 그런 다음 애플리케이션이 논리 볼륨에 실제로 쓸 때 나중에 할당하기 위해 씬 풀에 바인딩될 수 있는 장치를 생성할 수 있습니다. 스토리지 공간을 비용 효율적으로 할당하는 데 필요할 때 씬 풀을 동적으로 확장할 수 있습니다.
참고
이 섹션에서는 씬 프로비저닝된 논리 볼륨을 생성하고 확장하는 데 사용하는 기본 명령에 대해 설명합니다. LVM 씬 프로비저닝 및 씬 프로비저닝된 논리 볼륨이 있는 LVM 명령 및 유틸리티 사용에 대한 자세한 내용은 lvmthin(7) 도움말 페이지를 참조하십시오.
참고
클러스터의 노드에서는 씬 볼륨이 지원되지 않습니다. thin 풀과 모든 씬 볼륨은 하나의 클러스터 노드에서만 독점적으로 활성화되어야 합니다.
씬 볼륨을 생성하려면 다음 작업을 수행합니다.
  1. Cryostat create 명령을 사용하여 볼륨 그룹을 생성합니다.
  2. lvcreate 명령을 사용하여 thin 풀을 생성합니다.
  3. lvcreate 명령을 사용하여 thin 풀에 thin 볼륨을 생성합니다.
lvcreate 명령의 -T (또는 --thin) 옵션을 사용하여 씬 풀 또는 씬 볼륨을 생성할 수 있습니다. 단일 명령을 사용하여 lvcreate 명령의 -T 옵션을 사용하여 해당 풀에 thin 풀과 thin 볼륨을 동시에 생성할 수도 있습니다.
다음 명령은 lvcreate 명령의 -T 옵션을 사용하여 볼륨 그룹 Cryostat 001mythinpool 이라는 씬 풀을 생성합니다. 이는 크기가 100M입니다. 물리 공간 풀을 생성하므로 풀 크기를 지정해야 합니다. lvcreate 명령의 -T 옵션은 인수를 사용하지 않습니다. 명령이 지정하는 다른 옵션에서 생성할 장치 유형을 유추합니다.
# lvcreate -L 100M -T vg001/mythinpool
  Rounding up size to full physical extent 4.00 MiB
  Logical volume "mythinpool" created
# lvs
  LV            VG     Attr     LSize   Pool Origin Data%  Move Log Copy% Convert
  my mythinpool vg001  twi-a-tz 100.00m               0.00
다음 명령은 lvcreate 명령의 -T 옵션을 사용하여 씬 풀 Cryostat 001/mythinpool에 thinvolume 이라는 씬 볼륨을 생성합니다. 이 경우 가상 크기를 지정하고 이를 포함하는 풀보다 큰 볼륨의 가상 크기를 지정합니다.
# lvcreate -V 1G -T vg001/mythinpool -n thinvolume
  Logical volume "thinvolume" created
# lvs
  LV          VG       Attr     LSize   Pool       Origin Data%  Move Log Copy%  Convert
  mythinpool  vg001    twi-a-tz 100.00m                     0.00
  thinvolume  vg001    Vwi-a-tz   1.00g mythinpool          0.00
다음 명령은 lvcreate 명령의 -T 옵션을 사용하여 lvcreate 명령에 크기와 가상 크기 인수를 모두 지정하여 해당 풀에 thin 풀과 thin 볼륨을 생성합니다. 이 명령은 볼륨 그룹에 mythinpool 이라는 씬 풀을 생성하고 해당 풀에 thinvolume이라는 씬 볼륨 도 생성합니다.
# lvcreate -L 100M -T vg001/mythinpool -V 1G -n thinvolume
  Rounding up size to full physical extent 4.00 MiB
  Logical volume "thinvolume" created
# lvs
  LV           VG       Attr     LSize   Pool     Origin Data%  Move Log Copy%  Convert
  mythinpool   vg001    twi-a-tz 100.00m                   0.00
  thinvolume   vg001    Vwi-a-tz   1.00g mythinpool        0.00
lvcreate 명령의 --thinpool 매개변수를 지정하여 thin 풀을 생성할 수도 있습니다. T 옵션과 달리 --thinpool 매개변수에는 생성 중인 thin pool 논리 볼륨의 이름인 인수가 필요합니다. 다음 예제에서는 lvcreate 명령의 --thinpool 매개변수를 지정하여 볼륨 그룹 mythinpool에 mythinpool 이라는 thin 풀을 생성합니다. 이는 크기가 100M입니다.
# lvcreate -L 100M --thinpool mythinpool vg001
  Rounding up size to full physical extent 4.00 MiB
  Logical volume "mythinpool" created
# lvs
  LV          VG     Attr     LSize   Pool Origin Data%  Move Log Copy% Convert
  mythinpool  vg001  twi-a-tz 100.00m               0.00
청크 크기를 사용하려면 다음 기준을 사용합니다.
  • 청크 크기가 작은 경우 더 많은 메타데이터가 필요하며 성능이 저하되지만 스냅샷에 더 나은 공간 사용률을 제공합니다.
  • 대규모 청크 크기는 메타데이터 조작이 덜 필요하지만 스냅샷을 덜 효율적으로 만듭니다.
LVM2는 청크 크기를 다음과 같은 방식으로 계산합니다.
기본적으로 LVM은 64KiB 청크 크기로 시작하고 씬 풀 메타데이터 장치의 결과 크기가 128MiB를 초과하면 값을 늘어남에 따라 메타데이터 크기가 압축됩니다. 이로 인해 일부 큰 청크 크기 값이 생성되어 스냅샷 사용에 효율성이 떨어질 수 있습니다. 이 경우 청크 크기 및 더 큰 메타데이터 크기가 더 나은 옵션입니다.
볼륨 데이터 크기가 TiB 범위인 경우 최대 지원되는 최대 크기인 ~15.8GiB 메타데이터 크기를 사용하고 요구 사항에 따라 청크 크기를 사용합니다. 그러나 이 볼륨 데이터 크기를 확장해야 하고 청크 크기가 작은 경우 메타데이터 크기를 늘릴 수 없습니다.
주의
Red Hat은 기본 청크 크기를 사용하는 것이 좋습니다. 청크 크기가 너무 작고 메타데이터에 필요한 공간이 부족하면 볼륨에서 데이터를 만들 수 없습니다. 논리 볼륨을 모니터링하여 메타데이터 볼륨이 완전히 가득 차기 전에 생성되거나 생성된 스토리지가 확장되었는지 확인합니다. 씬 풀을 충분히 큰 청크 크기로 설정하여 메타데이터 공간이 부족하지 않도록 해야 합니다.
풀 생성에는 스트라이핑이 지원됩니다. 다음 명령은 두 개의 64 kB 스트라이프와 256 kB 크기의 청크 크기를 사용하여 볼륨 그룹 Cryostat 001 이라는 100M 씬 풀을 생성합니다. 또한 1T thin volume, Cryostat 00/thin_lv 를 생성합니다.
# lvcreate -i 2 -I 64 -c 256 -L 100M -T vg00/pool -V 1T --name thin_lv
lvextend 명령을 사용하여 thin 볼륨의 크기를 확장할 수 있습니다. 그러나 씬 풀의 크기를 줄일 수는 없습니다.
다음 명령은 다른 100M을 확장하여 크기가 100M인 기존 씬 풀의 크기를 조정합니다.
# lvextend -L+100M vg001/mythinpool
  Extending logical volume mythinpool to 200.00 MiB
  Logical volume mythinpool successfully resized
# lvs
  LV           VG       Attr     LSize   Pool     Origin Data%  Move Log Copy%  Convert
  mythinpool   vg001    twi-a-tz 200.00m                   0.00
  thinvolume   vg001    Vwi-a-tz   1.00g mythinpool          0.00
다른 유형의 논리 볼륨과 마찬가지로 볼륨의 이름을 lvrename 으로 변경하고, lvremove 로 볼륨을 제거할 수 있으며, 볼륨에 대한 정보를 lvslvdisplay 명령으로 표시할 수 있습니다.
기본적으로 lvcreate 명령은 공식(Pool_LV_size / Pool_LV_chunk_size * 64)에 따라 thin pool의 메타데이터 논리 볼륨의 크기를 설정합니다. 스냅샷 수가 많거나 씬 풀에 대한 청크 크기가 작으므로 나중에 씬 풀의 크기가 크게 증가할 것으로 예상되는 경우 lvcreate 명령의 --poolmetadatasize 매개변수를 사용하여 씬 풀의 기본값을 늘려야 할 수 있습니다. 씬 풀의 metadata 논리 볼륨에 지원되는 값은 2MiB에서 16GiB 사이의 범위에 있습니다.
lvconvert 명령의 --thinpool 매개변수를 사용하여 기존 논리 볼륨을 씬 풀 볼륨으로 변환할 수 있습니다. 기존 논리 볼륨을 씬 풀 볼륨으로 변환하는 경우 lvconvert--thinpool 매개변수와 함께 --poolmetadata 매개변수를 사용하여 기존 논리 볼륨을 씬 풀 볼륨의 메타데이터 볼륨으로 변환해야 합니다.
참고
논리 볼륨을 씬 풀 볼륨 또는 씬 풀 메타데이터 볼륨으로 변환하면 논리 볼륨의 콘텐츠가 제거됩니다. 이 경우 lvconvert 는 장치의 콘텐츠를 보존하지 않고 대신 콘텐츠를 덮어 쓰기 때문입니다.
다음 예제에서는 볼륨 그룹 lv1 의 기존 논리 볼륨 lv1을 thin 풀 볼륨으로 변환하고 볼륨 그룹 Cryostat 001 의 기존 논리 볼륨 lv2 를 해당 씬 풀 볼륨의 metadata 볼륨으로 변환합니다.
# lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
  Converted vg001/lv1 to thin pool.

4.4.6. 스냅샷 볼륨 생성

참고
LVM은 씬 프로비저닝된 스냅샷을 지원합니다. 씬 프로비저닝된 스냅샷 볼륨 생성에 대한 자세한 내용은 4.4.7절. “씬 프로비저닝된 스냅샷 볼륨 생성” 을 참조하십시오.
lvcreate 명령의 -s 인수를 사용하여 스냅샷 볼륨을 생성합니다. 스냅샷 볼륨은 쓸 수 있습니다.
참고
LVM 스냅샷은 클러스터의 노드 전반에서 지원되지 않습니다. 클러스터형 볼륨 그룹에서 스냅샷 볼륨을 생성할 수 없습니다. 그러나 클러스터형 논리 볼륨에서 일관된 데이터 백업을 생성해야 하는 경우 볼륨을 독점적으로 활성화한 다음 스냅샷을 만들 수 있습니다. 하나의 노드에서만 논리 볼륨을 활성화하는 방법에 대한 자세한 내용은 4.7절. “클러스터의 개별 노드에서 논리 볼륨 활성화” 을 참조하십시오.
참고
미러링된 논리 볼륨에서 LVM 스냅샷이 지원됩니다.
스냅샷은 RAID 논리 볼륨에 대해 지원됩니다. RAID 논리 볼륨 생성에 대한 자세한 내용은 4.4.3절. “RAID 논리 볼륨” 을 참조하십시오.
LVM에서는 원본 볼륨의 크기와 볼륨에 필요한 메타데이터보다 큰 스냅샷 볼륨을 만들 수 없습니다. 이 것보다 큰 스냅샷 볼륨을 지정하면 원본 크기에 필요한 만큼만 큰 스냅샷 볼륨을 생성합니다.
기본적으로 스냅샷 볼륨은 정상적인 활성화 명령 중에 건너뜁니다. 스냅샷 볼륨 활성화 제어에 대한 자세한 내용은 4.4.20절. “논리 볼륨 활성화 제어” 을 참조하십시오.
다음 명령은 /dev/vg00/snap 이라는 크기가 100MB인 스냅샷 논리 볼륨을 생성합니다. 그러면 /dev/vg00/lvol1 이라는 원본 논리 볼륨의 스냅샷이 생성됩니다. 원래 논리 볼륨에 파일 시스템이 포함된 경우 원래 파일 시스템이 계속 업데이트되는 동안 파일 시스템의 콘텐츠에 액세스하여 백업을 실행하기 위해 임의의 디렉터리에 snapshot 논리 볼륨을 마운트할 수 있습니다.
# lvcreate --size 100M --snapshot --name snap /dev/vg00/lvol1
스냅샷 논리 볼륨을 생성한 후 lvdisplay 명령에서 origin 볼륨을 지정하면 모든 스냅샷 논리 볼륨 목록과 해당 상태(활성 또는 비활성)가 포함된 출력이 출력됩니다.
다음 예제에서는 /dev/new_vg/lvol0 논리 볼륨 /dev/new_vg/newvgsnap 이 생성된 논리 볼륨 /dev/new_vg/lvol0의 상태를 보여줍니다.
# lvdisplay /dev/new_vg/lvol0
  --- Logical volume ---
  LV Name                /dev/new_vg/lvol0
  VG Name                new_vg
  LV UUID                LBy1Tz-sr23-OjsI-LT03-nHLC-y8XW-EhCl78
  LV Write Access        read/write
  LV snapshot status     source of
                         /dev/new_vg/newvgsnap1 [active]
  LV Status              available
  # open                 0
  LV Size                52.00 MB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2
기본적으로 lvs 명령은 원본 볼륨과 사용 중인 스냅샷 볼륨의 현재 백분율을 표시합니다. 다음 예제에서는 스냅샷 볼륨 /dev/new_vg/newvgsnap 이 생성된 논리 볼륨 /dev/new_vg/lvol0 을 포함하는 시스템의 lvs 명령에 대한 기본 출력을 보여줍니다.
# lvs
  LV         VG     Attr   LSize  Origin Snap%  Move Log Copy%
  lvol0      new_vg owi-a- 52.00M
  newvgsnap1 new_vg swi-a-  8.00M lvol0    0.20
주의
스냅샷은 원본 볼륨이 변경됨에 따라 크기가 증가하므로 lvs 명령을 사용하여 스냅샷 볼륨의 백분율을 정기적으로 모니터링하여 채워지지 않도록 하는 것이 중요합니다. 원본의 변경되지 않은 부분에 대한 쓰기 작업은 스냅샷을 손상시키지 않고 성공하지 못하므로 100% 가득 차 있는 스냅샷이 완전히 손실됩니다.
스냅샷은 가득 차 있을 때 무효화됩니다. 스냅샷 장치의 마운트된 파일 시스템은 강제로 마운트 해제되어 있어 마운트 지점에 액세스할 때 불필요한 파일 시스템 오류를 방지할 수 있습니다. 또한 lvm.conf 파일에 snapshot_autoextend_threshold 옵션을 지정할 수 있습니다. 이 옵션을 사용하면 나머지 스냅샷 공간이 설정한 임계값 미만으로 줄어들 때마다 스냅샷을 자동으로 확장할 수 있습니다. 이 기능을 사용하려면 볼륨 그룹에 할당되지 않은 공간이 있어야 합니다.
LVM에서는 원본 볼륨의 크기와 볼륨에 필요한 메타데이터보다 큰 스냅샷 볼륨을 만들 수 없습니다. 마찬가지로 스냅샷 자동 확장은 스냅샷에 필요한 최대 계산된 크기 이상으로 스냅샷 볼륨의 크기를 늘리지 않습니다. 스냅샷이 원본을 덮을 정도로 충분히 크게 증가하면 자동 확장을 위해 더 이상 모니터링되지 않습니다.
snapshot_autoextend_thresholdsnapshot_autoextend_percent 설정에 대한 정보는 lvm.conf 파일 자체에 제공됩니다. lvm.conf 파일에 대한 자세한 내용은 부록 B. LVM 구성 파일 을 참조하십시오.

4.4.7. 씬 프로비저닝된 스냅샷 볼륨 생성

Red Hat Enterprise Linux는 씬 프로비저닝된 스냅샷 볼륨을 지원합니다. 씬 스냅샷 볼륨의 이점 및 제한 사항에 대한 자세한 내용은 2.3.6절. “씬 프로비저닝된 스냅샷 볼륨” 을 참조하십시오.
참고
이 섹션에서는 씬 프로비저닝된 스냅샷 볼륨을 생성하고 확장하는 데 사용하는 기본 명령에 대해 설명합니다. LVM 씬 프로비저닝 및 씬 프로비저닝된 논리 볼륨이 있는 LVM 명령 및 유틸리티 사용에 대한 자세한 내용은 lvmthin(7) 도움말 페이지를 참조하십시오.
중요
thin 스냅샷 볼륨을 생성할 때 볼륨 크기를 지정하지 않습니다. size 매개변수를 지정하면 생성되는 스냅샷은 씬 스냅샷 볼륨이 아니며 데이터를 저장하는 데 씬 풀을 사용하지 않습니다. 예를 들어 lvcreate -s Cryostat/thinvolume -L10M 명령은 원본 볼륨이 thin 볼륨인 경우에도 씬 스냅샷을 생성하지 않습니다.
씬 스냅샷은 씬 프로비저닝된 원본 볼륨 또는 씬 프로비저닝되지 않은 원본 볼륨에 대해 생성할 수 있습니다.
lvcreate 명령의 --name 옵션을 사용하여 스냅샷 볼륨의 이름을 지정할 수 있습니다. 다음 명령은 mysnapshot1 이라는 씬 프로비저닝된 논리 볼륨 Cryostat 001/thinvolume 의 씬 프로비저닝된 스냅샷 볼륨을 생성합니다.
# lvcreate -s --name mysnapshot1 vg001/thinvolume
  Logical volume "mysnapshot1" created
# lvs
  LV          VG       Attr     LSize   Pool       Origin     Data%  Move Log Copy%  Convert
  mysnapshot1 vg001    Vwi-a-tz   1.00g mythinpool thinvolume   0.00
  mythinpool  vg001    twi-a-tz 100.00m                         0.00
  thinvolume  vg001    Vwi-a-tz   1.00g mythinpool              0.00
참고
씬 프로비저닝을 사용할 때는 스토리지 관리자가 스토리지 풀을 모니터링하고 용량을 늘리기 시작하는 것이 중요합니다. thin 볼륨의 크기 확장에 대한 자세한 내용은 다음을 참조하십시오. 4.4.5절. “씬 프로비저닝된 논리 볼륨 생성”
씬 스냅샷 볼륨은 다른 씬 볼륨과 동일한 특성을 갖습니다. 볼륨을 독립적으로 활성화하고, 볼륨 확장, 볼륨 이름 변경, 볼륨 제거, 볼륨 스냅샷도 수행할 수 있습니다.
기본적으로 스냅샷 볼륨은 정상적인 활성화 명령 중에 건너뜁니다. 스냅샷 볼륨 활성화 제어에 대한 자세한 내용은 4.4.20절. “논리 볼륨 활성화 제어” 을 참조하십시오.
프로비저닝되지 않은 논리 볼륨의 씬 프로비저닝된 스냅샷을 생성할 수도 있습니다. 프로비저닝되지 않은 논리 볼륨은 씬 풀 내에 포함되어 있지 않으므로 외부 원본 이라고 합니다. 외부 원본 볼륨은 다른 씬 풀에서도 씬 프로비저닝된 여러 스냅샷 볼륨에서 사용하고 공유할 수 있습니다. 씬 프로비저닝된 스냅샷이 생성될 때 외부 원본은 비활성이고 읽기 전용이어야 합니다.
외부 원본의 씬 프로비저닝된 스냅샷을 생성하려면 --thinpool 옵션을 지정해야 합니다. 다음 명령은 읽기 전용 비활성 볼륨 origin_volume 의 씬 스냅샷 볼륨을 생성합니다. thin snapshot 볼륨의 이름은 mythinsnap 입니다. 그런 다음 논리 볼륨 origin_volume 은 기존 thin pool Cryostat 001 /pool 을 사용할 볼륨 그룹 mythinsnap 에서 thin snapshot 볼륨 mythinsnap의 씬 외부 원본이 됩니다. 원본 볼륨이 스냅샷 볼륨과 동일한 볼륨 그룹에 있어야 하므로 원본 논리 볼륨을 지정할 때 볼륨 그룹을 지정할 필요가 없습니다.
# lvcreate -s --thinpool vg001/pool origin_volume --name mythinsnap
다음 명령과 같이 첫 번째 스냅샷 볼륨의 두 번째 씬 프로비저닝 스냅샷 볼륨을 생성할 수 있습니다.
# lvcreate -s vg001/mythinsnap --name my2ndthinsnap
Red Hat Enterprise Linux 7.2에서는 lvs 명령의 lv_ancestorslv_descendants 보고 필드를 지정하여 씬 스냅샷 논리 볼륨의 모든 상위 항목 및 하위 항목 목록을 표시할 수 있습니다.
다음 예제에서:
  • stack1 은 볼륨 그룹 Cryostat 001 의 원본 볼륨입니다.
  • stack2stack1의 스냅샷입니다.
  • stack3stack2의 스냅샷입니다.
  • stack4stack3의 스냅샷입니다.
기타:
  • stack5stack2의 스냅샷이기도 합니다.
  • stack6stack5의 스냅샷입니다.
$ lvs -o name,lv_ancestors,lv_descendants vg001
  LV      Ancestors              Descendants
  stack1                         stack2,stack3,stack4,stack5,stack6
  stack2  stack1                 stack3,stack4,stack5,stack6
  stack3  stack2,stack1          stack4
  stack4  stack3,stack2,stack1
  stack5  stack2,stack1          stack6
  stack6  stack5,stack2,stack1
  pool
참고
lv_ancestorslv_descendants 필드에는 기존 종속성이 표시되지만 체인 중간에 항목이 제거된 경우 제거된 항목이 추적되지 않습니다. 예를 들어 이 샘플 구성에서 논리 볼륨 stack3 을 제거하면 다음과 같습니다.
$ lvs -o name,lv_ancestors,lv_descendants vg001
  LV      Ancestors              Descendants
  stack1                         stack2,stack5,stack6
  stack2  stack1                 stack5,stack6
  stack4
  stack5  stack2,stack1          stack6
  stack6  stack5,stack2,stack1
  pool
그러나 Red Hat Enterprise Linux 7.3에서는 제거된 논리 볼륨을 추적하고 표시하도록 시스템을 구성할 수 있으며 lv_ancestors_fulllv_descendants_full 필드를 지정하여 해당 볼륨을 포함하는 전체 종속성 체인을 표시할 수 있습니다. 기록 논리 볼륨 추적, 표시 및 제거에 대한 자세한 내용은 4.4.21절. “추적 및 표시 논리 볼륨 (Red Hat Enterprise Linux 7.3 및 later)” 을 참조하십시오.

4.4.8. LVM 캐시 논리 볼륨 생성

Red Hat Enterprise Linux 7.1 릴리스에서 LVM은 LVM 캐시 논리 볼륨을 완전 지원합니다. 캐시 논리 볼륨은 빠른 블록 장치(예: SSD 드라이브)로 구성된 작은 논리 볼륨을 사용하여 자주 사용되는 논리 볼륨에 자주 사용되는 블록을 저장하여 더 크고 느린 논리 볼륨의 성능을 향상시킵니다.
LVM 캐싱은 다음 LVM 논리 볼륨 유형을 사용합니다. 이러한 모든 관련 논리 볼륨은 동일한 볼륨 그룹에 있어야 합니다.
  • origin 논리 볼륨 - 크고 느린 논리 볼륨
  • 캐시 풀 논리 볼륨 - 캐시 데이터 논리 볼륨과 캐시 메타데이터 논리 볼륨이라는 두 개의 장치로 구성된 작고 빠른 논리 볼륨
  • 캐시 데이터 논리 볼륨 - 캐시 풀 논리 볼륨의 데이터 블록을 포함하는 논리 볼륨
  • 캐시 메타데이터 논리 볼륨 - 캐시 풀 논리 볼륨의 메타데이터가 포함된 논리 볼륨(예: 원본 논리 볼륨 또는 캐시 데이터 논리 볼륨)에 데이터 블록이 저장된 위치를 지정하는 계정 정보가 있습니다.
  • cache 논리 볼륨 - origin 논리 볼륨과 캐시 풀 논리 볼륨이 포함된 논리 볼륨입니다. 이는 다양한 캐시 볼륨 구성 요소를 캡슐화하는 결과 사용 가능한 장치입니다.
다음 절차에서는 LVM 캐시 논리 볼륨을 생성합니다.
  1. 느린 물리 볼륨과 빠른 물리 볼륨이 포함된 볼륨 그룹을 만듭니다. 이 예제에서. /dev/sde1 은 느린 장치이며 /dev/sdf1 은 빠른 장치이며 두 장치 모두 볼륨 그룹 VG 에 포함됩니다.
    # pvcreate /dev/sde1
    # pvcreate /dev/sdf1
    # vgcreate VG /dev/sde1 /dev/sdf1
  2. origin 볼륨을 생성합니다. 이 예에서는 크기가 10GB이고 느린 물리 볼륨인 /dev/sde1 로 구성된 lv 라는 원본 볼륨을 생성합니다.
    # lvcreate -L 10G -n lv VG /dev/sde1
  3. 캐시 풀 논리 볼륨을 생성합니다. 이 예제에서는 볼륨 그룹 VG 의 일부인 빠른 장치 /dev/sdf1cpool 이라는 캐시 풀 논리 볼륨을 생성합니다. 이 명령이 생성하는 캐시 풀 논리 볼륨은 숨겨진 캐시 데이터 cpool_cdata 및 숨겨진 캐시 메타데이터 cpool_cmeta 로 구성됩니다.
    # lvcreate --type cache-pool -L 5G -n cpool VG /dev/sdf1
      Using default stripesize 64.00 KiB.
      Logical volume "cpool" created.
    # lvs -a -o name,size,attr,devices VG
      LV              LSize  Attr       Devices
      [cpool]          5.00g Cwi---C--- cpool_cdata(0)
      [cpool_cdata]    5.00g Cwi-ao---- /dev/sdf1(4)
      [cpool_cmeta]    8.00m ewi-ao---- /dev/sdf1(2)
    
    복잡한 구성의 경우 캐시 데이터와 캐시 메타데이터 논리 볼륨을 개별적으로 생성한 다음 볼륨을 캐시 풀 논리 볼륨으로 통합해야 할 수 있습니다. 이 절차에 대한 자세한 내용은 lvmcache(7) 도움말 페이지를 참조하십시오.
  4. 캐시 풀 논리 볼륨을 원본 논리 볼륨에 연결하여 캐시 논리 볼륨을 만듭니다. 생성된 사용자 액세스 캐시 논리 볼륨은 원본 논리 볼륨의 이름을 사용합니다. origin 논리 볼륨은 원래 이름에 _corig 가 추가된 숨겨진 논리 볼륨이 됩니다. 이 변환은 라이브로 수행할 수 있지만 먼저 백업을 수행했는지 확인해야 합니다.
    # lvconvert --type cache --cachepool cpool VG/lv
      Logical volume cpool is now cached.
    # lvs -a -o name,size,attr,devices vg
        LV              LSize  Attr       Devices
        [cpool]          5.00g Cwi---C--- cpool_cdata(0)
        [cpool_cdata]    5.00g Cwi-ao---- /dev/sdf1(4)
        [cpool_cmeta]    8.00m ewi-ao---- /dev/sdf1(2)
        lv              10.00g Cwi-a-C--- lv_corig(0)
        [lv_corig]      10.00g owi-aoC--- /dev/sde1(0)
        [lvol0_pmspare]  8.00m ewi------- /dev/sdf1(0)
    
  5. 선택적으로 Red Hat Enterprise Linux 릴리스 7.2부터 캐시된 논리 볼륨을 씬 풀 논리 볼륨으로 변환할 수 있습니다. 풀에서 생성된 씬 논리 볼륨이 캐시를 공유합니다.
    다음 명령은 씬 풀 메타데이터(lv_tmeta)를 할당하기 위해 빠른 장치 /dev/sdf1 을 사용합니다. 이는 캐시 풀 볼륨에서 사용하는 장치와 같습니다. 즉, thin 풀 메타데이터 볼륨은 캐시 데이터 논리 볼륨 cpool_cdata 및 캐시 메타데이터 논리 볼륨 cpool_cmeta 와 둘 다 해당 장치를 공유합니다.
    # lvconvert --type thin-pool VG/lv /dev/sdf1
       WARNING: Converting logical volume VG/lv to thin pool's data volume with metadata wiping.
       THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
     Do you really want to convert VG/lv? [y/n]: y
       Converted VG/lv to thin pool.
    # lvs -a -o name,size,attr,devices vg
       LV               LSize  Attr       Devices
       [cpool]           5.00g Cwi---C--- cpool_cdata(0)
       [cpool_cdata]     5.00g Cwi-ao---- /dev/sdf1(4)
       [cpool_cmeta]     8.00m ewi-ao---- /dev/sdf1(2)
       lv               10.00g twi-a-tz-- lv_tdata(0)
       [lv_tdata]       10.00g Cwi-aoC--- lv_tdata_corig(0)
       [lv_tdata_corig] 10.00g owi-aoC--- /dev/sde1(0)
       [lv_tmeta]       12.00m ewi-ao---- /dev/sdf1(1284)
       [lvol0_pmspare]  12.00m ewi------- /dev/sdf1(0)
       [lvol0_pmspare]  12.00m ewi------- /dev/sdf1(1287)
    
추가 관리 예제를 포함한 LVM 캐시 볼륨에 대한 자세한 내용은 lvmcache(7) 매뉴얼 페이지를 참조하십시오.
씬 프로비저닝된 논리 볼륨을 생성하는 방법에 대한 자세한 내용은 4.4.5절. “씬 프로비저닝된 논리 볼륨 생성” 을 참조하십시오.

4.4.9. 스냅샷 볼륨 병합

lvconvert 명령의 --merge 옵션을 사용하여 스냅샷을 원본 볼륨에 병합할 수 있습니다. 원본 볼륨과 스냅샷 볼륨이 모두 열려 있지 않으면 병합이 즉시 시작됩니다. 그렇지 않으면 병합은 origin 또는 snapshot이 처음 활성화되어 있고 둘 다 닫을 때 시작됩니다. 스냅샷을 닫을 수 없는 원본(예: 루트 파일 시스템)에 병합하면 다음에 원본 볼륨이 활성화될 때까지 지연됩니다. 병합이 시작되면 결과 논리 볼륨의 이름, 마이너 번호 및 UUID가 표시됩니다. 병합이 진행 중인 동안 원본에 대한 읽기 또는 쓰기는 병합되는 스냅샷으로 지시된 대로 나타납니다. 병합이 완료되면 병합된 스냅샷이 제거됩니다.
다음 명령은 스냅샷 볼륨 192.0.2. 00/lvol1_snap 을 원본과 병합합니다.
# lvconvert --merge vg00/lvol1_snap
명령줄에서 스냅샷을 여러 개 지정하거나 LVM 오브젝트 태그를 사용하여 각 원본에 여러 스냅샷을 병합하도록 지정할 수 있습니다. 다음 예에서 논리 volumes 00/lvol1, Cryostat00/lvol2, Cryostat 00/lvol3 은 모두 @some_tag 태그가 지정됩니다. 다음 명령은 세 개의 모든 볼륨에 대해 직렬로 스냅샷 논리 볼륨을 병합합니다. Cryostat 00/lvol1, then Cryostat 00/lvol2, then Cryostat 00/lvol3. --background 옵션을 사용하면 모든 스냅샷 논리 볼륨 병합이 병렬로 시작됩니다.
# lvconvert --merge @some_tag
LVM 오브젝트 태그 지정에 대한 자세한 내용은 부록 D. LVM 오브젝트 태그 을 참조하십시오. lvconvert --merge 명령에 대한 자세한 내용은 lvconvert(8) 도움말 페이지를 참조하십시오.

4.4.10. 영구 장치 번호

메이저 및 마이너 장치 번호는 모듈 로드 시 동적으로 할당됩니다. 일부 애플리케이션은 블록 장치가 항상 동일한 장치 (major 및 minor) 번호로 활성화되는 경우 가장 잘 작동합니다. 다음 인수를 사용하여 lvcreatelvchange 명령을 사용하여 이를 지정할 수 있습니다.
--persistent y --major major --minor minor
큰 마이너 번호를 사용하여 다른 장치에 동적으로 할당되지 않았는지 확인하십시오.
NFS를 사용하여 파일 시스템을 내보내는 경우 export 파일에서 fsid 매개변수를 지정하면 LVM 내에서 영구 장치 번호를 설정하지 않아도 됩니다.

4.4.11. 논리 볼륨 그룹의 매개 변수 변경

논리 볼륨의 매개 변수를 변경하려면 lvchange 명령을 사용합니다. 변경할 수 있는 매개변수 목록은 lvchange(8) 도움말 페이지를 참조하십시오.
lvchange 명령을 사용하여 논리 볼륨을 활성화하고 비활성화할 수 있습니다. 볼륨 그룹의 모든 논리 볼륨을 동시에 활성화하고 비활성화하려면 4.3.9절. “볼륨 그룹의 매개변수 변경” 에 설명된 대로 Cryostatchange 명령을 사용합니다.
다음 명령은 볼륨 그룹 Cryostat 00 의 볼륨 lvol1 에 대한 권한을 읽기 전용으로 변경합니다.
# lvchange -pr vg00/lvol1

4.4.12. 논리 볼륨 이름 변경

기존 논리 볼륨의 이름을 변경하려면 lvrename 명령을 사용합니다.
다음 명령 중 하나는 볼륨 그룹 lvold의 논리 볼륨 lvold이름을 lv new 로 바꿉니다.
# lvrename /dev/vg02/lvold /dev/vg02/lvnew
# lvrename vg02 lvold lvnew
루트 논리 볼륨 이름을 변경하려면 추가 구성이 필요합니다. 루트 볼륨 이름 변경에 대한 자세한 내용은 Red Hat Enterprise Linux에서 루트 볼륨 그룹 또는 논리 볼륨 이름을 변경하는 방법을 참조하십시오.
클러스터의 개별 노드에서 논리 볼륨 활성화에 대한 자세한 내용은 4.7절. “클러스터의 개별 노드에서 논리 볼륨 활성화” 을 참조하십시오.

4.4.13. 논리 볼륨 제거

비활성 논리 볼륨을 제거하려면 lvremove 명령을 사용합니다. 논리 볼륨이 현재 마운트되어 있으면 제거하기 전에 볼륨을 마운트 해제합니다. 또한 클러스터형 환경에서는 논리 볼륨을 제거하기 전에 비활성화해야 합니다.
다음 명령은 볼륨 그룹 testvg 에서 논리 볼륨 /dev/testvg/testlv 를 제거합니다. 이 경우 논리 볼륨이 비활성화되지 않았습니다.
# lvremove /dev/testvg/testlv
Do you really want to remove active logical volume "testlv"? [y/n]: y
  Logical volume "testlv" successfully removed
lvchange -an 명령으로 제거하기 전에 논리 볼륨을 명시적으로 비활성화할 수 있습니다. 이 경우 활성 논리 볼륨을 제거할지 여부를 확인하는 프롬프트가 표시되지 않습니다.

4.4.14. 논리 볼륨 표시

LVM 논리 볼륨의 속성을 표시하는 데 사용할 수 있는 명령은 lvs,lvdisplay, lvscan 입니다.
lvs 명령은 논리 볼륨 정보를 구성 가능한 형식으로 제공하여 논리 볼륨당 한 행을 표시합니다. lvs 명령은 많은 형식 제어를 제공하며 스크립팅에 유용합니다. lvs 명령을 사용하여 출력을 사용자 지정하는 방법에 대한 자세한 내용은 4.8절. “LVM에 대한 사용자 정의 보고” 을 참조하십시오.
lvdisplay 명령은 고정된 형식으로 논리 볼륨 속성(예: 크기, 레이아웃, 매핑)을 표시합니다.
다음 명령은 Cryostat 00lvol2 속성을 보여줍니다. 이 원래 논리 볼륨에 대한 스냅샷 논리 볼륨이 생성된 경우 이 명령은 모든 스냅샷 논리 볼륨 목록과 해당 상태(활성 또는 비활성)도 표시합니다.
# lvdisplay -v /dev/vg00/lvol2
lvscan 명령은 시스템의 모든 논리 볼륨을 스캔하여 다음 예와 같이 나열합니다.
# lvscan
 ACTIVE                   '/dev/vg0/gfslv' [1.46 GB] inherit

4.4.15. 논리 볼륨 증가

논리 볼륨의 크기를 늘리려면 lvextend 명령을 사용합니다.
논리 볼륨을 확장할 때 볼륨을 확장할 양 또는 확장 후 원하는 크기를 표시할 수 있습니다.
다음 명령은 논리 볼륨 /dev/myvg/homevol 을 12GB로 확장합니다.
# lvextend -L12G /dev/myvg/homevol 
lvextend -- extending logical volume "/dev/myvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
다음 명령은 다른 기가바이트를 논리 볼륨 /dev/myvg/homevol 에 추가합니다.
# lvextend -L+1G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
lvcreate 명령과 마찬가지로 lvextend 명령의 -l 인수를 사용하여 논리 볼륨의 크기를 늘릴 확장 영역 수를 지정할 수 있습니다. 이 인수를 사용하여 볼륨 그룹의 백분율 또는 볼륨 그룹에서 남은 사용 가능한 공간의 백분율을 지정할 수도 있습니다. 다음 명령은 testlv 라는 논리 볼륨을 확장하여 볼륨 그룹 myvg 의 할당되지 않은 공간을 모두 채웁니다.
# lvextend -l +100%FREE /dev/myvg/testlv
  Extending logical volume testlv to 68.59 GB
  Logical volume testlv successfully resized
논리 볼륨을 확장한 후 파일 시스템 크기를 높여야 합니다.
기본적으로 대부분의 파일 시스템 크기 조정 도구는 파일 시스템의 크기가 기본 논리 볼륨의 크기로 증가하므로 두 명령 각각에 대해 동일한 크기를 지정할 필요가 없습니다.

4.4.16. 논리 볼륨 축소

lvreduce 명령을 사용하여 논리 볼륨의 크기를 줄일 수 있습니다.
참고
GFS2 또는 XFS 파일 시스템에서 축소는 지원되지 않으므로 GFS2 또는 XFS 파일 시스템이 포함된 논리 볼륨의 크기를 줄일 수 없습니다.
감소 중인 논리 볼륨에 파일 시스템이 포함되어 있는 경우 데이터 손실을 방지하기 위해 파일 시스템이 축소되는 논리 볼륨의 공간을 사용하지 않도록 해야 합니다. 따라서 논리 볼륨에 파일 시스템이 포함된 경우 lvreduce 명령의 --resizefs 옵션을 사용하는 것이 좋습니다. 이 옵션을 사용하면 lvreduce 명령은 논리 볼륨을 축소하기 전에 파일 시스템을 줄입니다. 파일 시스템이 가득 차거나 파일 시스템이 축소를 지원하지 않는 경우와 같이 파일 시스템을 축소하는 데 실패하는 경우 lvreduce 명령이 실패하고 논리 볼륨을 축소하지 않습니다.
주의
대부분의 경우 lvreduce 명령은 가능한 데이터 손실에 대해 경고하고 확인을 요청합니다. 그러나 경우에 따라 논리 볼륨이 비활성 상태이거나 --resizefs 옵션을 사용하지 않는 경우와 같이 이러한 프롬프트가 표시되지 않는 경우 데이터 손실을 방지하기 위해 이러한 확인 프롬프트를 사용하지 않아야 합니다.
lvreduce 명령의 --test 옵션을 사용하면 작업이 안전한 위치를 표시하지 않습니다. 이 옵션은 파일 시스템을 확인하거나 파일 시스템 크기 조정을 테스트하지 않습니다.
다음 명령은 볼륨 그룹 lvol1 의 논리 볼륨 lvol 1을 64MB로 줄입니다. 이 예에서 lvol1 에는 논리 볼륨과 함께 크기를 조정하는 파일 시스템이 포함되어 있습니다. 이 예에서는 명령에 대한 출력을 보여줍니다.
# lvreduce --resizefs -L 64M vg00/lvol1
fsck from util-linux 2.23.2
/dev/mapper/vg00-lvol1: clean, 11/25688 files, 8896/102400 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg00-lvol1 to 65536 (1k) blocks.
The filesystem on /dev/mapper/vg00-lvol1 is now 65536 blocks long.

  Size of logical volume vg00/lvol1 changed from 100.00 MiB (25 extents) to 64.00 MiB (16 extents).
  Logical volume vg00/lvol1 successfully resized.
크기 조정 값 앞에 - 기호를 지정하면 논리 볼륨의 실제 크기에서 값이 뺀 것을 나타냅니다. 다음 예제에서는 64 메가바이트의 절대 크기로 논리 볼륨을 축소하는 대신 값 64 메가바이트로 볼륨을 축소하려는 경우 사용하는 명령을 보여줍니다.
# lvreduce --resizefs -L -64M vg00/lvol1

4.4.17. 스트립 볼륨 확장

스트라이핑된 논리 볼륨의 크기를 늘리려면 기본 물리 볼륨에 스트라이프를 지원하기 위해 볼륨 그룹을 구성하는 충분한 여유 공간이 있어야 합니다. 예를 들어 전체 볼륨 그룹을 사용하는 양방향 스트라이프가 있는 경우 볼륨 그룹에 단일 물리 볼륨을 추가하면 스트라이프를 확장할 수 없습니다. 대신 볼륨 그룹에 두 개 이상의 물리 볼륨을 추가해야 합니다.
예를 들어 다음 Cryostats 명령으로 표시된 대로 두 개의 기본 물리 볼륨으로 구성된 볼륨 그룹 Cryostat를 고려해 보십시오.
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg     2   0   0 wz--n- 271.31G 271.31G
볼륨 그룹의 전체 공간을 사용하여 스트라이프를 만들 수 있습니다.
# lvcreate -n stripe1 -L 271.31G -i 2 vg
  Using default stripesize 64.00 KB
  Rounding up size to full physical extent 271.31 GB
  Logical volume "stripe1" created
# lvs -a -o +devices
  LV      VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
  stripe1 vg   -wi-a- 271.31G                               /dev/sda1(0),/dev/sdb1(0)
이제 볼륨 그룹에 사용 가능한 공간이 없습니다.
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg     2   1   0 wz--n- 271.31G    0
다음 명령은 볼륨 그룹에 또 다른 물리 볼륨을 추가합니다. 그러면 135GB의 추가 공간이 있습니다.
# vgextend vg /dev/sdc1
  Volume group "vg" successfully extended
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg     3   1   0 wz--n- 406.97G 135.66G
이 시점에서 데이터를 스트라이프하기 위해 두 개의 기본 장치가 필요하므로 스트립 논리 볼륨을 볼륨 그룹의 전체 크기로 확장할 수 없습니다.
# lvextend vg/stripe1 -L 406G
  Using stripesize of last segment 64.00 KB
  Extending logical volume stripe1 to 406.00 GB
  Insufficient suitable allocatable extents for logical volume stripe1: 34480
more required
스트라이핑된 논리 볼륨을 확장하려면 다른 물리 볼륨을 추가한 다음 논리 볼륨을 확장합니다. 이 예에서는 볼륨 그룹에 두 개의 물리 볼륨을 추가하여 논리 볼륨을 볼륨 그룹의 전체 크기로 확장할 수 있습니다.
# vgextend vg /dev/sdd1
  Volume group "vg" successfully extended
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg     4   1   0 wz--n- 542.62G 271.31G
# lvextend vg/stripe1 -L 542G
  Using stripesize of last segment 64.00 KB
  Extending logical volume stripe1 to 542.00 GB
  Logical volume stripe1 successfully resized
스트라이핑된 논리 볼륨을 확장하는 데 기본 물리 장치가 충분하지 않은 경우 확장 기능을 사용하지 않는 경우 볼륨을 확장할 수 있습니다. 이로 인해 성능이 저하되지 않을 수 있습니다. 논리 볼륨에 공간을 추가할 때 기본 작업은 기존 논리 볼륨의 마지막 세그먼트와 동일한 스트립 매개 변수를 사용하지만 이러한 매개 변수를 재정의할 수 있습니다. 다음 예제에서는 lvextend 초기 명령이 실패한 후 남은 여유 공간을 사용하도록 기존의 스트라이핑 논리 볼륨을 확장합니다.
# lvextend vg/stripe1 -L 406G
  Using stripesize of last segment 64.00 KB
  Extending logical volume stripe1 to 406.00 GB
  Insufficient suitable allocatable extents for logical volume stripe1: 34480
more required
# lvextend -i1 -l+100%FREE vg/stripe1

4.4.18. RAID 볼륨 확장

새 RAID 영역의 동기화를 수행하지 않고 lvextend 명령을 사용하여 RAID 논리 볼륨을 확장할 수 있습니다.
lvcreate 명령을 사용하여 RAID 논리 볼륨을 생성할 때 --nosync 옵션을 지정하면 논리 볼륨이 생성될 때 RAID 영역이 동기화되지 않습니다. 나중에 --nosync 옵션을 사용하여 생성한 RAID 논리 볼륨을 확장하면 RAID 확장이 해당 시점에 동기화되지 않습니다.
lvs 명령을 사용하여 볼륨 속성을 표시하여 기존 논리 볼륨이 --nosync 옵션으로 생성되었는지 여부를 확인할 수 있습니다. 논리 볼륨은 초기 동기화없이 생성된 RAID 볼륨인 경우 특성 필드의 첫 번째 문자로 "R"을 표시하고 초기 동기화로 생성된 경우 "r"이 표시됩니다.
다음 명령은 초기 동기화 없이 생성된 lv 라는 RAID 논리 볼륨의 속성을 표시하여 "R"을 특성 필드에서 첫 번째 문자로 표시합니다. 특성 필드의 일곱 번째 문자는 대상 RAID 유형을 나타내는 "r"입니다. attribute 필드의 의미에 대한 자세한 내용은 표 4.5. “LVs 표시 필드” 을 참조하십시오.
# lvs vg
  LV   VG   Attr     LSize Pool Origin Snap%  Move Log Cpy%Sync  Convert
  lv   vg   Rwi-a-r- 5.00g                               100.00
lvextend 명령으로 이 논리 볼륨을 늘리면 RAID 확장이 다시 동기화되지 않습니다.
lvcreate 명령의 --nosync 옵션을 지정하지 않고 RAID 논리 볼륨을 생성한 경우 lvextend 명령의 --nosync 옵션을 지정하여 미러를 다시 동기화하지 않고 논리 볼륨을 확장할 수 있습니다.
다음 예제에서는 --nosync 옵션 없이 생성된 RAID 논리 볼륨을 확장하여 RAID 볼륨이 생성될 때 동기화되었음을 나타냅니다. 그러나 이 예에서는 볼륨이 확장될 때 볼륨이 동기화되지 않도록 지정합니다. 볼륨에는 "r" 속성이 있지만 --nosync 옵션을 사용하여 lvextend 명령을 실행한 후 볼륨에는 "R" 속성이 있습니다.
# lvs vg
  LV   VG   Attr     LSize  Pool Origin Snap%  Move Log Cpy%Sync  Convert
  lv   vg   rwi-a-r- 20.00m                               100.00
# lvextend -L +5G vg/lv --nosync
  Extending 2 mirror images.
  Extending logical volume lv to 5.02 GiB
  Logical volume lv successfully resized
# lvs vg
  LV   VG   Attr     LSize Pool Origin Snap%  Move Log     Cpy%Sync  Convert
  lv   vg   Rwi-a-r- 5.02g                                   100.00
RAID 볼륨이 비활성화된 경우 --nosync 옵션을 사용하여 볼륨을 생성하는 경우에도 볼륨을 확장할 때 동기화를 자동으로 생략하지 않습니다. 대신 논리 볼륨의 확장된 부분을 완전히 다시 동기화할지 여부를 묻는 메시지가 표시됩니다.
참고
RAID 볼륨에서 복구 작업을 수행하는 경우 --nosync 옵션을 사용하여 볼륨을 생성하거나 확장하면 논리 볼륨을 확장할 수 없습니다. 그러나 --nosync 옵션을 지정하지 않은 경우 복구 중 RAID 볼륨을 확장할 수 있습니다.

4.4.19. 클링 할당 정책을 사용하여 논리 볼륨 확장

LVM 볼륨을 확장할 때 lvextend 명령의 --alloc cling 옵션을 사용하여 클링 할당 정책을 지정할 수 있습니다. 이 정책은 기존 논리 볼륨의 마지막 부분과 동일한 물리 볼륨에서 공간을 선택합니다. 물리 볼륨에 공간이 충분하지 않고 lvm.conf 파일에 태그 목록이 정의되어 있는 경우 LVM은 물리적 볼륨에 태그가 연결되어 있는지 여부를 확인하고 기존 Extent와 새 Extent 간의 물리 볼륨 태그와 일치시킵니다.
예를 들어 단일 볼륨 그룹 내의 두 사이트 간에 미러링된 논리 볼륨이 있는 경우 @site1@site2 태그로 물리 볼륨을 태그하여 배치되는 위치에 따라 물리 볼륨을 태그할 수 있습니다. 그런 다음 lvm.conf 파일에 다음 행을 지정할 수 있습니다.
cling_tag_list = [ "@site1", "@site2" ]
물리 볼륨 태그에 대한 자세한 내용은 부록 D. LVM 오브젝트 태그 을 참조하십시오.
다음 예제에서는 다음 행을 포함하도록 lvm.conf 파일이 수정되었습니다.
cling_tag_list = [ "@A", "@B" ]
또한 이 예에서 물리 볼륨 /dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1, /dev/sdf1 ,/dev /sdg1 로 구성된 볼륨 그룹 taft 가 생성되었습니다. 이러한 물리 볼륨에는 A,BC 태그가 지정되었습니다. 이 예제에서는 C 태그를 사용하지 않지만 LVM에서 태그를 사용하여 미러 브릿지에 사용할 물리 볼륨을 선택함을 보여줍니다.
# pvs -a -o +pv_tags /dev/sd[bcdefgh]
  PV         VG   Fmt  Attr PSize  PFree  PV Tags
  /dev/sdb1  taft lvm2 a--  15.00g 15.00g A
  /dev/sdc1  taft lvm2 a--  15.00g 15.00g B
  /dev/sdd1  taft lvm2 a--  15.00g 15.00g B
  /dev/sde1  taft lvm2 a--  15.00g 15.00g C
  /dev/sdf1  taft lvm2 a--  15.00g 15.00g C
  /dev/sdg1  taft lvm2 a--  15.00g 15.00g A
  /dev/sdh1  taft lvm2 a--  15.00g 15.00g A
다음 명령은 볼륨 그룹 taft 에서 10GB 미러링된 볼륨을 생성합니다.
# lvcreate --type raid1 -m 1 -n mirror --nosync -L 10G taft
  WARNING: New raid1 won't be synchronised. Don't read what you didn't write!
  Logical volume "mirror" created
다음 명령은 미러 다리 및 RAID 메타데이터 하위 볼륨에 사용되는 장치를 보여줍니다.
# lvs -a -o +devices
  LV                VG   Attr       LSize  Log Cpy%Sync Devices
  mirror            taft Rwi-a-r--- 10.00g       100.00 mirror_rimage_0(0),mirror_rimage_1(0)
  [mirror_rimage_0] taft iwi-aor--- 10.00g              /dev/sdb1(1)
  [mirror_rimage_1] taft iwi-aor--- 10.00g              /dev/sdc1(1)
  [mirror_rmeta_0]  taft ewi-aor---  4.00m              /dev/sdb1(0)
  [mirror_rmeta_1]  taft ewi-aor---  4.00m              /dev/sdc1(0)
다음 명령은 클링 할당 정책을 사용하여 동일한 태그가 있는 물리 볼륨을 사용하여 미러 브리지를 확장해야 함을 나타내는 미러링된 볼륨의 크기를 확장합니다.
# lvextend --alloc cling -L +10G taft/mirror
  Extending 2 mirror images.
  Extending logical volume mirror to 20.00 GiB
  Logical volume mirror successfully resized
다음 display 명령은 다리와 동일한 태그가 있는 물리 볼륨을 사용하여 미러가 확장되었음을 보여줍니다. C 태그가 있는 물리 볼륨은 무시되었습니다.
# lvs -a -o +devices
  LV                VG   Attr       LSize  Log Cpy%Sync Devices
  mirror            taft Rwi-a-r--- 20.00g       100.00 mirror_rimage_0(0),mirror_rimage_1(0)
  [mirror_rimage_0] taft iwi-aor--- 20.00g              /dev/sdb1(1)
  [mirror_rimage_0] taft iwi-aor--- 20.00g              /dev/sdg1(0)
  [mirror_rimage_1] taft iwi-aor--- 20.00g              /dev/sdc1(1)
  [mirror_rimage_1] taft iwi-aor--- 20.00g              /dev/sdd1(0)
  [mirror_rmeta_0]  taft ewi-aor---  4.00m              /dev/sdb1(0)
  [mirror_rmeta_1]  taft ewi-aor---  4.00m              /dev/sdc1(0)

4.4.20. 논리 볼륨 활성화 제어

lvcreate 또는 lvchange 명령의 -k 또는 --setactivationskip {y|n} 옵션을 사용하여 논리 볼륨을 건너뛰도록 지정할 수 있습니다. 이 플래그는 비활성화 중에 적용되지 않습니다.
다음 예제와 같이 k 속성을 표시하는 lvs 명령을 사용하여 이 플래그가 논리 볼륨에 설정되어 있는지 여부를 확인할 수 있습니다.
# lvs vg/thin1s1
LV         VG  Attr       LSize Pool  Origin
thin1s1    vg  Vwi---tz-k 1.00t pool0 thin1
기본적으로 씬 스냅샷 볼륨은 활성화 건너뛰기 위해 플래그가 지정됩니다. standard -ay 또는 --activate y 옵션 외에도 -K 또는 --ignoreactivationskip 옵션을 사용하여 k 속성이 설정된 논리 볼륨을 활성화할 수 있습니다.
다음 명령은 thin snapshot 논리 볼륨을 활성화합니다.
# lvchange -ay -K VG/SnapLV
lvcreate 명령의 -kn 또는 --setactivationskip n 옵션을 지정하여 논리 볼륨을 생성할 때 영구 "활성화 건너뛰기" 플래그를 해제할 수 있습니다. lvchange 명령의 -kn 또는 --setactivationskip n 옵션을 지정하여 기존 논리 볼륨에 대한 플래그를 해제할 수 있습니다. -ky 또는 --setactivationskip y 옵션을 사용하여 플래그를 다시 설정할 수 있습니다.
다음 명령은 활성화 건너뛰기 플래그 없이 스냅샷 논리 볼륨을 생성합니다.
# lvcreate --type thin -n SnapLV -kn -s ThinLV --thinpool VG/ThinPoolLV
다음 명령은 스냅샷 논리 볼륨에서 활성화 건너뛰기 플래그를 제거합니다.
# lvchange -kn VG/SnapLV
/etc/lvm/lvm.conf 파일의 auto_set_activation_skip 설정을 사용하여 기본 활성화 건너뛰기 설정을 제어할 수 있습니다.

4.4.21. 추적 및 표시 논리 볼륨 (Red Hat Enterprise Linux 7.3 및 later)

Red Hat Enterprise Linux 7.3부터 lvm.conf 구성 파일에서 record_lvs_history 메타데이터 옵션을 활성화하여 제거된 thin snapshot 및 thin 논리 볼륨을 추적하도록 시스템을 구성할 수 있습니다. 이를 통해 원래 종속성 체인에서 제거되어 과거 논리 볼륨이 된 논리 볼륨이 포함된 전체 씬 스냅샷 종속성 체인을 표시할 있습니다.
lvm.conf 구성 파일의 lvs_history_retention_time 메타데이터 옵션을 사용하여 보존 시간(초)을 지정하여 정의된 기간 동안 기록 볼륨을 유지하도록 시스템을 구성할 수 있습니다.
이전 논리 볼륨은 볼륨의 다음 보고 필드를 포함하여 제거된 논리 볼륨을 간략하게 표시합니다.
  • lv_time_removed: 논리 볼륨의 제거 시간
  • lv_time: 논리 볼륨의 생성 시간
  • lv_name: 논리 볼륨의 이름
  • lv_uuid: 논리 볼륨의 UUID
  • VG_ NAME: 논리 볼륨이 포함된 볼륨 그룹입니다.
볼륨이 제거되면 기록 논리 볼륨 이름이 접두사로 hypen을 가져옵니다. 예를 들어 논리 볼륨 lvol1 을 제거하면 기록 볼륨의 이름은 -lvol1 입니다. 기록 논리 볼륨을 다시 활성화할 수 없습니다.
record_lvs_history 메타데이터 옵션을 활성화하면 lvremove 명령의 --nohistory 옵션을 지정하여 논리 볼륨을 제거할 때 개별적으로 기록 논리 볼륨을 보존할 수 있습니다.
기록 논리 볼륨을 볼륨 디스플레이에 포함하려면 LVM display 명령의 -H|-history 옵션을 지정합니다. -H 옵션과 함께 lv_full_ancestorslv_full_descendants 보고 필드를 지정하여 기록 볼륨을 포함하는 전체 씬 스냅샷 종속성 체인을 표시할 수 있습니다.
다음 일련의 명령은 기록 논리 볼륨을 표시하고 관리하는 방법에 대한 예를 제공합니다.
  1. lvm.conf 파일에서 record_lvs_history=1 을 설정하여 기록 논리 볼륨이 유지되는지 확인합니다. 이 메타데이터 옵션은 기본적으로 활성화되어 있지 않습니다.
  2. 다음 명령을 입력하여 씬 프로비저닝된 스냅샷 체인을 표시합니다.
    이 예제에서는 다음을 수행합니다.
    • lvol1 은 체인의 첫 번째 볼륨인 원본 볼륨입니다.
    • lvol2lvol1 의 스냅샷입니다.
    • lvol3lvol2 의 스냅샷입니다.
    • lvol4lvol3 의 스냅샷입니다.
    • lvol5lvol3 의 스냅샷이기도 합니다.
    lvs display 명령에 -H 옵션이 포함되어 있지만 씬 스냅샷 볼륨이 아직 제거되지 않았으며 표시할 기록 논리 볼륨이 없습니다.
    # lvs -H -o name,full_ancestors,full_descendants
      LV    FAncestors        FDescendants
      lvol1                   lvol2,lvol3,lvol4,lvol5
      lvol2 lvol1             lvol3,lvol4,lvol5
      lvol3 lvol2,lvol1       lvol4,lvol5
      lvol4 lvol3,lvol2,lvol1
      lvol5 lvol3,lvol2,lvol1
      pool
    
  3. 스냅샷 체인에서 논리 볼륨 lvol3 을 제거한 다음 다음 lvs 명령을 다시 실행하여 ancestors 및 하위 항목과 함께 기록 논리 볼륨이 표시되는 방법을 확인합니다.
    # lvremove -f vg/lvol3
      Logical volume "lvol3" successfully removed
    # lvs -H -o name,full_ancestors,full_descendants
      LV     FAncestors         FDescendants
      lvol1                     lvol2,-lvol3,lvol4,lvol5
      lvol2  lvol1              -lvol3,lvol4,lvol5
      -lvol3 lvol2,lvol1        lvol4,lvol5
      lvol4  -lvol3,lvol2,lvol1
      lvol5  -lvol3,lvol2,lvol1
      pool
    
  4. lv_time_removed reporting 필드를 사용하여 기록 볼륨이 제거된 시간을 표시할 수 있습니다.
    # lvs -H -o name,full_ancestors,full_descendants,time_removed
      LV     FAncestors         FDescendants              RTime
      lvol1                     lvol2,-lvol3,lvol4,lvol5
      lvol2  lvol1              -lvol3,lvol4,lvol5
      -lvol3 lvol2,lvol1        lvol4,lvol5               2016-03-14 14:14:32 +0100
      lvol4  -lvol3,lvol2,lvol1
      lvol5  -lvol3,lvol2,lvol1
      pool
    
  5. 다음 예와 같이 vgname/lvname 형식을 지정하여 display 명령으로 기록 논리 볼륨을 개별적으로 참조할 수 있습니다. lv_attr 필드의 5번째 비트는 h 로 설정되어 볼륨이 기록 볼륨임을 나타냅니다.
    # lvs -H vg/-lvol3
      LV     VG   Attr       LSize
      -lvol3 vg   ----h-----    0
    
  6. 볼륨에 라이브 하위 항목이 없는 경우 LVM에서 이전 논리 볼륨을 유지하지 않습니다. 즉, 스냅샷 체인 끝에 논리 볼륨을 제거하면 논리 볼륨이 기록 논리 볼륨으로 유지되지 않습니다.
    # lvremove -f vg/lvol5
      Automatically removing historical logical volume vg/-lvol5.
      Logical volume "lvol5" successfully removed
    # lvs -H -o name,full_ancestors,full_descendants
      LV     FAncestors         FDescendants
      lvol1                     lvol2,-lvol3,lvol4
      lvol2  lvol1              -lvol3,lvol4
      -lvol3 lvol2,lvol1        lvol4
      lvol4  -lvol3,lvol2,lvol1
      pool
    
  7. 다음 명령을 실행하여 lvol1lvol2 볼륨을 제거하고 lvs 명령이 제거되면 볼륨을 표시하는 방법을 확인합니다.
    # lvremove -f vg/lvol1 vg/lvol2
      Logical volume "lvol1" successfully removed
      Logical volume "lvol2" successfully removed
    # lvs -H -o name,full_ancestors,full_descendants
      LV     FAncestors           FDescendants
      -lvol1                      -lvol2,-lvol3,lvol4
      -lvol2 -lvol1               -lvol3,lvol4
      -lvol3 -lvol2,-lvol1        lvol4
      lvol4  -lvol3,-lvol2,-lvol1
      pool
    
  8. 기록 논리 볼륨을 완전히 제거하려면 다음 예제와 같이 현재 하이픈을 포함하는 기록 볼륨의 이름을 지정하여 lvremove 명령을 다시 실행할 수 있습니다.
    # lvremove -f vg/-lvol3
    Historical logical volume "lvol3" successfully removed
    # lvs -H -o name,full_ancestors,full_descendants
      LV     FAncestors    FDescendants
      -lvol1               -lvol2,lvol4
      -lvol2 -lvol1        lvol4
      lvol4  -lvol2,-lvol1
      pool
    
  9. 하위 항목에 라이브 볼륨을 포함하는 체인이 있는 한 이전 논리 볼륨이 유지됩니다. 즉, 이전 논리 볼륨을 제거하면 다음 예제와 같이 체인의 기존 하위 항목이 연결되지 않은 경우 체인의 모든 논리 볼륨도 제거됩니다.
    # lvremove -f vg/lvol4
      Automatically removing historical logical volume vg/-lvol1.
      Automatically removing historical logical volume vg/-lvol2.
      Automatically removing historical logical volume vg/-lvol4.
      Logical volume "lvol4" successfully removed