Red Hat Training

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

4.4.3. 미러 볼륨 생성

참고

클러스터에 미러 LVM 논리 볼륨을 생성하기 위해 단일 노드에 미러 LVM 논리 볼륨을 생성하는 것과 동일한 명령 및 절차가 필요합니다. 하지만 클러스터에 미러 LVM 볼륨을 생성하려면 클러스터 및 클러스터 미러 인프라를 실행하고, 클러스터는 쿼터에 도달해야 하며, lvm.conf 파일에 있는 잠금 유형은 클러스터 잠금 기능을 활성화하기 위해 3.1절. “클러스터에 LVM 볼륨 생성 ”에 설명되어 있듯이 직접적으로 또는 lvmconf 명령을 실행하여 올바르게 설정되어 있어야 합니다.
클러스터에 있는 여러 노드에서 빠른 시간에 연속하여 여러 LVM 미러를 생성하고 변환 명령을 실행하려고 하면 이 명령의 백로그가 발생할 수 있습니다. 이는 요청된 작업이 시간 초과된 후 실패할 가능성이 있습니다. 이 문제를 해결하기 위해 클러스터 미러 생성 명령은 클러스터의 단일 노드에서 실행하는 것이 좋습니다.
미러 볼륨 생성 시, lvcreate 명령의 -m 인수를 사용하여 만들 데이터 사본 수를 지정합니다. -m1을 지정하면 하나의 미러를 생성하고, 선형 논리 볼륨 및 하나의 복사본이라는 두 개의 파일 시스템 복사본을 생성합니다. 이와 유사하게, -m2를 지정하면 두 개의 미러를 생성하고, 세 개의 파일 시스템 복사본을 생성합니다.
다음의 명령으로 단일 미러와 함께 미러 논리 볼륨을 생성합니다. 볼륨은 50 GB 크기에 mirrorlv라는 이름으로, vg0 볼륨 그룹에서 나눕니다:
lvcreate -L 50G -m1 -n mirrorlv vg0
LVM 미러는 기보값으로 512KB 크기인 영역으로 복사된 장치를 나눕니다. lvcreate 명령의 -R 인수를 사용하여 영역 크기를 MB 단위로 지정할 수 있습니다. 또한 lvm.conf 파일에 있는 mirror_region_size 설정을 편집하여 기본값 영역 크기를 변경할 수 있습니다.

참고

클러스터 인프라의 제한으로 인해 1.5TB 이상의 클러스터 미러는 기본값 영역 크기인 512KB로 생성될 수 없습니다. 대용량 미러가 필요한 사용자는 기본값 크기보다 큰 영역 크기로 늘리셔야 합니다. 영역 크기를 늘리지 않을 경우 LVM 생성이 중단되거나 다른 LVM 명령이 중단될 수 있습니다.
1.5TB 이상의 미러에 대해 영역 크기를 지정하기 위한 일반적인 지침으로 미러 크기를 TB 단위로 할 수 있으며 번호를 2로 지정할 수 있습니다. 여기서 lvcreate 명령에 -R 인수로 이 번호를 사용합니다. 예를 들어, 미러 크기가 1.5TB인 경우, -R 2로 지정할 수 있으며, 미러 크기가 3TB인 경우에는 -R 4로 지정할 수 있습니다. 미러 크기가 5TB인 경우, -R 8로 지정할 수 있습니다.
다음의 명령으로 2MB 영역 크기로된 미러 물리 볼륨을 생성합니다:
lvcreate -m1 -L 2T -R 2 -n mirror vol_group
LVM은 미러로 어떤 영역이 동기화되었는 지를 추적하기 위해 사용되는 로그를 관리합니다. 이러한 로그는 기본값으로 디스크에 저장되어, 재부팅 후에도 영구적으로 보관되며 미러가 재부팅할 때마다 다시 동기화할 필요가 없는지를 확인합니다. --mirrorlog core 인수로 이러한 로그가 메모리에 저장되도록 지정할 수 있습니다; 이는 추가 로그 장치가 필요하지 않게 하지만, 재부팅할 때 마다 전체 미러를 동기화해야 합니다.
다음의 명령으로 bigvg 볼륨 그룹에서 미러 논리 볼륨을 생성합니다. 논리 볼륨은 ondiskmirvol라는 이름으로 하나의 단일 미러를 갖게 됩니다. 볼륨은 12MB 크기가 되며 메모리에 미러 로그를 보관합니다.
# lvcreate -L 12MB -m1 --mirrorlog core -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

참고

클러스터된 미러로 미러 로그 관리는 현시점의 최하위 클러스터 ID를 갖는 클러스터 노드의 완전한 책임이 됩니다. 따라서 클러스터 미러 로그를 보유하는 장치는 클러서트의 하부 집합에서 사용할 수 없는 경우, 최하위의 ID를 갖는 클러스터 노드가 미러 로그에 액세스를 유지하고 있는 한 클러스터된 미러는 영향을 받지 않고 작업을 지속할 수 있습니다. 미러는 영향을 받지 않기 때문에 자동 수정 작업 (복구)도 발생하지 않습니다. 최하위 ID의 클러스터 노드가 미러 로그에 액세스할 수 없게 되면 (다른 노드에서 로그로의 액세스 가능 여부와 관계없이) 자동 작업이 작동하게 됩니다.
자체적으로 미러된 미러 로그를 생성하기 위해 --mirrorlog mirrored 옵션을 지정할 수 있습니다. 다음의 명령으로 bigvg 볼륨 그룹에서 미러 논리 볼륨을 생성합니다. 논리 볼륨은 twologvol라는 이름으로 하나의 단일 미러를 갖게 됩니다. 볼륨은 12MB 크기가 되며 개별적 장치에 보관되는 각각의 로그와 함께 미러 로그는 미러됩니다.
# lvcreate -L 12MB -m1 --mirrorlog mirrored -n twologvol bigvg
  Logical volume "twologvol" created
마찬가지로 표준 미러 로그와 함께 vgcreate 명령의 --alloc anywhere 인수를 사용하여 미러 leg와 동일한 장치에 이중 미러 로그를 생성할 수 있습니다. 이는 성능을 저하시킬 수 도 있지만, 이는 미러 leg 외에 분리된 장치에 보관하기 위해 각 로그에 대해 기본 장치가 충분하지 않을 경우에도 이중 미러 로그를 생성할 수 있게 합니다.
미러가 생성되면, 미러 영역은 동기화됩니다. 미러가 용량이 클 경우, 동기화하는데 시간이 더 오래 걸릴 수 도 있습니다. 재생될 필요가 없는 새로운 미러를 생성할 경우, nosync 인수를 지정하여 첫 번째 장치에서의 초기 동기화할 필요가 없음을 나타냅니다.
미러 leg 및 로그 용으로 사용할 장치와 사용할 장치의 익스텐트를 지정할 수 있습니다. 특정 디스크에 로그를 강제하려면, 로그가 위치할 디스크에 정확히 하나의 익스텐트를 지정합니다. 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

참고

Red Hat Enterprise Linux 6.1 릴리즈에서는 단일 논리 볼륨에서 RAID0 (스트라이핑)과 RAID1 (미러링)을 통합할 수 있습니다. 논리 볼륨을 생성하고 동시에 미러 수 (--mirrors X)와 스트라이프 수 (--stripes Y)를 지정하면 미러 장치의 구성 장치가 스트라이프됩니다.

4.4.3.1. 미러 논리 볼륨 실패 정책

lvm.conf 파일의 activation 부분에 있는 mirror_image_fault_policymirror_log_fault_policy 매개 변수로 장치 실패시 미러 논리 볼륨 작동 방식을 지정할 수 있습니다. 이러한 매개 변수가 remove로 설정될 경우, 시스템은 잘못된 장치를 제거하고 이 장치 없이 실행됩니다. 이러한 매개 변수가 allocate로 설정될 경우, 시스템은 잘못된 장치를 제거하고 잘못된 장치 대신 새로운 장치를 할당합니다. 적절한 장치나 공간이 할당될 수 없을 경우 이러한 정책은 remove 정책과 같이 작동합니다.
기본값으로 mirror_log_fault_policy 매개 변수는 allocate로 설정되어 있습니다. 로그에 대해 이러한 정책을 사용하는 것이 신속하며 충돌 및 재부팅을 통한 동기화 상태를 기억하게 하는 기능을 관리합니다. 이 정책을 remove로 설정하였을 경우, 로그 장치가 실패했을 때 미러는 내부 메모리 로그를 사용하도록 전환되며 미러는 충돌 및 재부팅을 통한 동기화 상태를 기억하지 않게 되고 전체 미러는 다시 동기화됩니다.
기본값으로 mirror_image_fault_policy 매개 변수는 remove로 설정되어 있습니다. 이 정책으로 미러 이미지가 실패할 경우 복사본이 하나만 남아있을 때 미러는 미러되지 않은 장치로 전환하게 됩니다. 미러 장치에 대해 이 정책을 allocate로 설정하면, 미러가 장치에 다시 동기화해야 하기 때문에 처리 시간이 소요되지만 이로 인해 장치의 미러 특성을 유지할 수 있게 됩니다.

참고

LVM 미러 장치에 장애가 발생하면, 두 단계의 복구 절차가 실행됩니다. 첫 번째 단계에서는 장애가 발생한 장치의 제거가 이루어 집니다. 이는 선형 장치로 미러가 축소되는 결과를 초래할 수 있습니다. 두 번째 단계에서는 mirror_log_fault_policy 매개 변수가 allocate로 설정되는 경우, 장애가 발생한 장치를 대체하려 합니다. 하지만 두 번째 단계에서 다른 장치가 사용 가능한 경우 미러로 장애와 관련이 없는 이전에 사용하고 있는 장치가 선택된다고 보장할 수 없다는 점에 유의하십시오.
LVM 미러 장애 발생 시 수동으로 복구하는 방법에 대한 내용은 6.3절. “LVM 미러 장애 복구 ”에서 참조하십시오.