LVM (Logical Volume Manager) 관리
LVM 관리자 가이드
엮음 1
초록
개요
1. 가이드 설명
2. 사용자
3. 소프트웨어 버전
표 1. 소프트웨어 버전
| 소프트웨어 | 설명 |
|---|---|
|
RHEL 6
|
RHEL6 및 그 이상 버전을 말함
|
|
GFS2
|
RHEL5 및 그 이상 버전의 GFS2를 말함
|
4. 관련 문서
- 설치 가이드 — Red Hat Enterprise Linux 6 설치 관련 내용을 다루고 있습니다.
- 운용 가이드 — Red Hat Enterprise Linux 6 활용, 설정, 관리 관련 내용을 다루고 있습니다.
- 스토리지 관리 가이드 — Red Hat Enterprise Linux 6의 스토리지 장치 및 파일 시스템을 효과적으로 관리하는 방법에 대한 내용을 다루고 있습니다.
- 고가용성 추가 기능 개요 — 고가용성 추가 기능에 대한 높은 수준의 개요를 다루고 있습니다.
- 클러스터 관리 — Red Hat 고가용성 추가 기능을 설치, 설정, 관리에 대한 내용을 다루고 있습니다.
- GFS 2 (Global File System 2): 설정 및 관리 — 장애 복구형 스토리지 추가 기능에 들어있는 Red Hat GFS 2 (Red Hat Global File System 2) 설치, 설정, 관리에 관한 내용을 다루고 있습니다.
- DM Multipath — Red Hat Enterprise Linux 6의 장치 맵퍼 멀티패스 (Device-Mapper Multipath) 기능 사용에 관한 내용을 다루고 있습니다.
- 로드 밸런서 관리 — 실제 서버 그룹 전체에 걸쳐 IP 부하를 분산하기 위해 LVS (Linux Virtual Servers)를 제공하는 일련의 통합 소프트웨어 구성 요소로 로드 밸런서 추가 기능을 사용하여 고성능 시스템 및 서비스 설정에 대한 정보를 제공합니다.
- 릴리즈 노트 — Red Hat 제품의 최신 릴리즈에 관한 내용을 다루고 있습니다.
5. 피드백을 보내 주십시오!
Logical_Volume_Manager_Administration(EN)-6 (2011-05-19-15:20)를 반드시 기입해 주시기 바랍니다.
1장. LVM 논리 볼륨 관리자
1.1. 새로운 기능 및 변경된 기능
1.1.1. Red Hat Enterprise Linux 6.0에서 새롭게 변경된 기능
lvm.conf파일의activation부분에 있는mirror_image_fault_policy와mirror_log_fault_policy매개 변수로 장치 장애 발생시 미러 논리 볼륨의 동작 방법을 정의할 수 있습니다. 이 매개 변수가remove로 설정될 경우, 시스템은 잘못된 장치를 삭제하고 이 장치 없이 실행하려 합니다. 이 매개 변수가allocate로 설정될 경우, 시스템을 잘못된 장치를 삭제하고 잘못된 장치 대신 새로운 장치를 할당하려 합니다. 장치 대신 적당한 장치나 공간이 할당되지 않을 경우, 이는remove정책과 같이 동작합니다. LVM 미러 실패 정책에 대한 자세한 내용은 4.4.3.1절. “미러 논리 볼륨 실패 정책 ”에서 참조하십시오.- Red Hat Enterprise Linux 6 릴리즈에서 Linux I/O 스택은 벤더 제공 I/O 제한 내용을 처리하기 위해 강화되었습니다. 이는 LVM을 포함하여 스토리지 관리 도구가 데이터 배치 및 액세스를 최적화할 수 있게 합니다. 이러한 지원 사항은
lvm.conf파일에 있는data_alignment_detection및data_alignment_offset_detection의 기본값을 변경하여 비활성화할 수 있으나 이를 비활성화하는 것은 권장 사항이 아닙니다.LVM에서의 데이터 정렬과data_alignment_detection및data_alignment_offset_detection의 기본값 변경에 대한 내용은/etc/lvm/lvm.conf파일에 있는 줄단위 문서를 참조하십시오. 이는 부록 B. LVM 설정 파일 에서도 문서화되어 있습니다. Red Hat Enterprise Linux 6에서 I/O 스택 및 I/O 제한에 대한 일반적인 지원 내용은 스토리지 관리 가이드 (Storage Administration Guide)를 참조하십시오. - Red Hat Enterprise Linux 6에서 장치 맵퍼 (Device Mapper)는
udev통합에 대해 직접 지원합니다. 이는 장치 맵퍼를 LVM 장치를 포함하여 장치 맵퍼 장치와 관련된 모든udev프로세싱에 장치 맵퍼를 동기화합니다.udev장치 관리자에 대한 장치 맵퍼 지원에 대한 자세한 내용은 A.3절. “udev 장치 관리자에 대해 장치 매퍼(Device Mapper) 지원 ”에서 참조하십시오. - Red Hat Enterprise Linux 6 릴리즈에서
lvconvert --repair명령을 사용하여 디스크 장애 발생 후 미러를 복구할 수 있습니다. 이는 일관성있는 상태로 미러를 다시 불러옵니다.lvconvert --repair명령에 대한 자세한 내용은 4.4.3.3절. “미러 논리 장치 복구 ”에서 참조하십시오. - Red Hat Enterprise Linux 6 릴리즈에서
lvconvert명령의--merge옵션을 사용하여 본래 볼륨으로 스냅샷을 합칠 수 있습니다. 스냅샷을 합치는 방법에 대한 자세한 내용은 4.4.5절. “스냅샷 볼륨 합치기 ”에서 참조하십시오. - Red Hat Enterprise Linux 6 릴리즈에서
lvconvert명령의--splitmirrors인수를 사용하여 새 논리 볼륨을 구성하기 위해 미러 논리 볼륨의 중복된 이미지를 분리할 수 있습니다. 이 옵션 사용에 대한 자세한 내용은 4.4.3.2절. “미러 논리 볼륨의 중복된 이미지 분리하기 ”에서 참조하십시오. - 미러 논리 장치를 생성할 때
lvcreate명령의--mirrorlog mirrored인수를 사용하여 미러되는 미러 논리 장치에 대해 미러 로그를 생성합니다. 이 옵션 사용에 대한 자세한 내용은 4.4.3절. “미러 볼륨 생성 ”에서 참조하십시오.
1.1.2. Red Hat Enterprise Linux 6.1에서 새롭게 변경된 기능
- Red Hat Enterprise Linux 6.1 릴리즈에서는 미러 논리 볼륨의 스냅샷 논리 볼륨 생성을 지원합니다. 선형 또는 스트라이프 논리 볼륨의 스냅샷을 생성하는 것과 마찬가지로 미러 볼륨의 스냅샷을 만들 수 있습니다. 스냅샷 볼륨을 생성하는 방법은 4.4.4절. “스냅샷 볼륨 생성 ”에서 참조하십시오.
- LVM 볼륨을 확장할 때
lvextend명령의--alloc cling옵션을 사용하여cling할당 정책을 지정할 수 있습니다. 이러한 정책에서는 동일한 물리 볼륨에 있는 공간이 기존 논리 볼륨의 마지막 세그먼트로 선택됩니다. 물리 볼륨에 공간이 충분하지 않고 태그 목록이lvm.conf파일에 정의되어 있는 경우, LVM은 태그가 물리 볼륨에 부착되어 있는지를 확인하고 기존 익스텐트와 새 익스텐트 간에 물리 볼륨 태그를 일치시키려고 합니다.lvextend명령의--alloc cling옵션을 사용하여 LVM 미러 볼륨 확장에 대한 내용은 4.4.12.2절. “cling할당 정책을 사용하여 논리 볼륨 확장 ”에서 참조하십시오. - 단일
pvchange,vgchange,lvchange명령으로 여러--addtag및--deltag인수를 지정할 수 있습니다. 객체 태그의 추가 및 제거에 대한 내용은 C.1절. “객체 태그 추가 및 삭제 ”에서 참조하십시오. - LVM 객체 태그에서 사용할 수 있는 문자 목록이 확대되고 태그에는 "/", "=", "!", ":", "#", and "&" 문자를 사용할 수 있습니다. LVM 객체 태그에 대한 내용은 부록 C. LVM 객체 태그 에서 참조하십시오.
- 단일 논리 볼륨에 있는 RAID0 (스트라이핑)과 RAID1 (미러링)을 결합할 수 있습니다. 논리 볼륨을 만들고 동시에 미러 수 (
--mirrors X)와 스트라이프 수 (--stripes Y)를 지정하면 미러 장치의 구성 장치가 스프라이프됩니다. 미러 논리 불륨을 생성하는 내용은 4.4.3절. “미러 볼륨 생성 ”에서 참조하십시오. - Red Hat Enterprise Linux 6.1 릴리즈에서는 클러스터 논리 볼륨에서 지속적인 데이터 백업을 생성해야 할 경우 볼륨을 독단적으로 활성화하여 스냅샷을 생성할 수 있습니다. 노드에서 논리 볼륨을 독단적으로 활성화하는 방법에 대한 내용은 4.7절. “클러스터에 있는 개별적 노드에서 논리 볼륨 활성화 ”에서 참조하십시오.
1.2. 논리 볼륨
- 유연한 용량논리 볼륨을 사용할 때, 디스크 및 파티션을 단일 논리 볼륨으로 모을 수 있으므로 파일 시스템을 여러 디스크에 걸쳐 늘릴 수 있습니다.
- 크기 조정 가능한 스토리지 풀기본 디스크 장치를 다시 포맷하거나 파티션하지 않고 간단한 소프트웨어 명령으로 논리 볼륨 크기를 늘이거나 줄일 수 있습니다.
- 온라인 데이터 재배치보다 새롭고 빠른 장애 복구형 스토리지 하부 시스템을 배치하기 위해 시스템이 활성화되어 있는 동안 데이터를 옮길 수 있습니다. 디스크가 사용되고 있는 동안 데이터를 디스크에 재배치할 수 있습니다. 예를 들어, 디스크를 삭제하기 전 핫 스왑이 가능한 디스크 비우기를 할 수 있습니다.
- 편의에 따라 장치 이름 지정논리 스토리지 볼륨은 사용자 정의 그룹에서 관리되며, 편의에 따라 이름을 지정할 수 있습니다.
- 디스크 스트라이핑두 개 이상의 디스크에 걸쳐 데이터를 스트라이핑하는 논리 볼륨을 생성할 수 있습니다. 이는 데이터 처리량을 급격히 상승시킬 수 있습니다.
- 미러 볼륨논리 볼륨은 편리한 방법으로 데이터에 미러를 설정하게 합니다.
- 볼륨 스냅샷논리 볼륨을 사용하여, 지속적인 백업을 위해 장치 스냅샷을 찍거나 또는 실제 데이터에 영향을 미치지 않고 변경 효과를 테스트할 수 있습니다.
1.3. LVM 아키텍쳐 개요
- 유연한 용량
- 보다 효율적인 메타데이터 스토리지
- 보다 향상된 복구 포맷
- 새로운 ASCII 메타데이터 포맷
- 메타데이터로 원자 변경
- 메타데이터의 이중 복사본
vgconvert 명령으로 LVM1 포맷에서 LVM2 포맷으로 볼륨 그룹을 변환할 수 있습니다. LVM 메타데이터 포맷을 변환하는 방법에 대한 내용은 vgconvert(8) 맨 페이지를 참조하시기 바랍니다.

그림 1.1. LVM 논리 볼륨 구성 요소
1.4. CLVM (Clustered Logical Volume Manager)
- 시스템의 하나의 노드만 논리 볼륨으로 설정하는 스토리지에 액세스를 필요로할 경우, CLVM 확장을 사용하지 않고 LVM을 사용할 수 있으며 노드와 함께 생성된 논리 볼륨은 노드에서 모두 로컬로 됩니다.
- 스토리지를 액세스하는 단일 노드 만이 활성화되는 장애 조치를 위해 클러스터 시스템을 사용할 경우, 고가용성 논리 볼륨 관리 에이전트 (HA-LVM)를 사용해야 합니다. HA-LVM에 대한 자세한 내용은 Red Hat Cluster 설정 및 관리 를 참조하십시오.
- 하나 이상의 클러스터 노드가 활성 노드 사이에서 공유되는 스토리지로의 액세스를 필요로할 경우, CLVM을 사용해야 합니다. CLVM은 논리 볼륨이 설정되는 동안 물리 스토리지로의 액세스를 잠금하여 사용자가 공유 스토리지에 논리 볼륨을 설정하게 하며, 공유 스토리지를 관리하기 위해 클러스터화된 잠금 서비스를 사용합니다.
clmvd 데몬을 포함한 고가용성 추가 기능 (High Availability Add-On) 및 장애 복구형 스토리지 추가 기능 (Resilient Storage Add-On) 소프트웨어가 실행되고 있어야 합니다. clmvd 데몬은 LVM으로의 주요 클러스링 확장 데몬입니다. clvmd 데몬은 각각의 클러스터 컴퓨터에서 실행하여 클러스터에 있는 LVM 메타데이터 업데이트를 분산하고, 동일한 논리 볼륨 관점에서 각각의 클러스터 컴퓨터를 보여줍니다. 고가용성 추가 기능 설치 및 관리에 관한 내용은 Red Hat Cluster 설정 및 관리를 참조하십시오.
clmvd 데몬이 시작되었는지를 확인하기위해, 다음과 같이 clvmd 서비스에서 chkconfig ... on 명령을 실행할 수 있습니다:
# chkconfig clvmd onclvmd 데몬이 시작되지 않을 경우, 다음과 같이 clvmd 서비스에서 service ... start 명령을 실행할 수 있습니다:
# service clvmd start주의

그림 1.2. CLVM 개요
참고
lvm.conf 파일로 변경해야 합니다. 클러스터 잠금 기능을 지원하기 위해 lvm.conf 파일을 설정하는 방법은 lvm.conf 파일 자체 내에서 제공합니다. lvm.conf 파일에 관한 내용은 부록 B. LVM 설정 파일 에서 살펴보시기 바랍니다.
1.5. 문서 개요
- 2장. LVM 구성 요소 에서는 LVM 논리 볼륨을 구성하는 구성 요소를 설명합니다.
- 3장. LVM 관리 개요 에서는 LVM CLI (Command Line Interface) 명령이나 LVM GUI (Graphical User Interface)를 사용하여 LVM 논리 볼륨을 설정하기 위해 실행해야 하는 기본적인 단계에 대한 개요를 설명합니다.
- 4장. CLI 명령을 사용한 LVM 관리 에서는 논리 볼륨을 생성 및 관리하기 위해 LVM CLI 명령으로 실행할 수 있는 개별적 관리 작업 내용을 요약 설명합니다.
- 5장. LVM 설정 예 에서는 다양한 LVM 설정 예를 설명합니다.
- 6장. LVM 문제 해결 에서는 다양한 LVM 문제 해결을 위한 방법을 설명합니다.
- 7장. LVM GUI를 통한 LVM 관리에서는 LVM GUI 실행에 관해 요약 설명합니다.
- 부록 A. 장치 매퍼 (Device Mapper)에서는 논리 볼륨 및 물리 볼륨을 맵핑하기 위해 LVM이 사용하는 장치 맵퍼 (Device Mapper)를 설명합니다.
- 부록 B. LVM 설정 파일 에서는 LVM 설정 파일을 설명합니다.
- 부록 C. LVM 객체 태그 에서는 LVM 대상 태그 및 호스트 태그를 설명합니다.
- 부록 D. LVM 볼륨 그룹 메타데이터 에서는 LVM 볼륨 그룹 메타데이터를 설명하며, LVM 볼륨 그룹에 해당하는 메타 데이터 견본 복사본이 포함되어 있습니다.
2장. LVM 구성 요소
2.1. 물리 볼륨
2.1.1. LVM 물리 볼륨 레이아웃
참고

그림 2.1. 물리적 볼륨 레이아웃
2.1.2. 디스크에서 다중 파티션
- 관리 용이실제 디스크가 한 번만 나타날 경우 시스템의 하드웨어를 추적하기 쉽습니다. 특히 디스크에 문제가 있을 경우 실제로 그러합니다. 또한, 단일 디스크에 있는 다중 물리 볼륨은 부팅시 알려지지 않은 파티션 유형에 대해 커널 경고를 할 수 있습니다.
- 스트라이핑 실행LVM은 두 개의 물리 볼륨이 동일한 물리 디스크에 있다고 알려줄 수 없습니다. 두 개의 물리 볼륨이 동일한 물리 디스크에 있을 때 스트라이프 논리 볼륨을 생성할 경우, 이는 같은 디스크에 있는 다른 파티션에 위치하게 되어 실행 기능을 저하시킵니다.
2.2. 볼륨 그룹
2.3. LVM 논리적 볼륨
2.3.1. 선형 (Linear) 볼륨

그림 2.2. 익스텐트 맵핑
VG1 볼륨 그룹을 보여주고 있습니다. 이러한 볼륨 그룹에는 PV1 및 PV2라는 두 개의 물리 볼륨이 들어 있습니다. 익스텐트 크기로 물리 볼륨은 4MB 단위로 나뉘어 집니다. 예에서, PV1은 100 익스텐트 크기 (400MB)로 PV2는 200 익스텐트 크기 (800MB)로 되어 있습니다. 1에서 300 사이의 익스텐트 크기 (4MB to 1200MB)로 선형 볼륨을 만들 수 있습니다. 예에서는 LV1이라는 선형 볼륨이 300 익스텐트 크기로 되어 있습니다.

그림 2.3. 동일하지 않은 물리 볼륨이 있는 선형 (Linear) 볼륨
LV1 및 50 익스텐트 크기 (200MB)로 된 LV2.

그림 2.4. 다중 논리 볼륨
2.3.2. 스트라이프 (Striped) 논리 볼륨
- 데이터의 첫 번째 스트라이프는 PV1에 작성됩니다
- 데이터의 두 번째 스트라이프는 PV2에 작성됩니다
- 데이터의 세 번째 스트라이프는 PV3에 작성됩니다
- 데이터의 네 번째 스트라이프는 PV1에 작성됩니다

그림 2.5. 세 개의 PV를 통한 스트라이핑 데이터
2.3.3. 미러 (Mirrored) 논리 볼륨

그림 2.6. 미러 (Mirrored) 논리 볼륨
2.3.4. 스냅샷 볼륨
참고
참고
참고
/usr과 같은 대부분의 읽기 전용 볼륨의 일시적인 스냅샷은 /home과 같이 쓰기 작업이 많은 오래 보관되는 스냅샷 볼륨 보다 더 적은 공간이 필요하게 됩니다.
- 대부분 지속적으로 데이터를 업데이트하는 라이브 시스템을 중지시키지 않고 논리 볼륨에서 백업을 실행해야 할 경우 스냅샷을 찍습니다.
- 스냅샷 파일 시스템에서
fsck명령을 실행하여 파일 시스템 무결성을 확인하고 본래의 파일 시스템이 파일 시스템 복구를 필요로하는 지에 대해 결정할 수 있습니다. - 스냅샷은 읽기/쓰기가 되기 때문에, 스냅샷을 찍어 테스트를 실행하고, 실제 데이터는 보존하여 프로덕션 데이터에 대한 어플리케이션을 테스트할 수 있습니다.
- Red Hat 가상화와 함께 사용하기 위해 LVM 볼륨을 만들 수 있습니다. LVM 스냅샷을 사용하여 가상 게스트 이미지의 스냅샷을 생성할 수 있습니다. 이러한 스냅샷은 최소한의 추가 스토리지로 새 게스트를 만들거나 기존 게스트를 수정하기 위한 편리한 방법을 제공합니다. 가상 게스트의 LVM 스냅샷에 대한 보다 자세한 내용은 Red Hat Enterprise Linux 가상화 가이드에서 참조하십시오.
lvconvert 명령의 --merge 옵션을 사용하여 스냅샷을 본래 볼륨으로 합칠 수 있습니다. 이 기능을 사용함에 있어서 데이터나 파일이 손상되었을 경우 시스템 롤백을 실행합니다. 그렇지 않을 경우 이전 상태로 시스템을 복구해야 합니다. 스냅샷 볼륨을 합친 후, 논리 볼륨은 본래 볼륨의 이름, 부 버전 번호, UUID를 갖게 되고 합쳐진 스냅샷은 삭제됩니다. 이 옵션 사용에 대한 자세한 내용은 4.4.5절. “스냅샷 볼륨 합치기 ”에서 참조하십시오.
3장. LVM 관리 개요
3.1. 클러스터에 LVM 볼륨 생성
clmvd 데몬을 포함한 고가용성 추가 기능 및 장애 복구형 스토리지 추가 기능 소프트웨어를 반드시 시작해야 합니다.
lvm.conf 파일로 변경해야 합니다. 클러스터 잠금 기능을 지원하기 위해 lvm.conf 파일을 설정하는 방법은 lvm.conf 파일 자체 내에서 제공합니다. lvm.conf 파일에 관한 내용은 부록 B. LVM 설정 파일 에서 살펴보시기 바랍니다.
주의
3.2. 논리 볼륨 생성에 관한 개요
- 물리 볼륨으로서 LVM 볼륨으로 사용할 파티션을 초기화합니다 (이는 파티션을 레이블함)
- 볼륨 그룹을 생성합니다.
- 논리 볼륨을 생성합니다.
참고
mkfs.gfs2명령을 사용하여 논리 볼륨에 GFS2 파일 시스템을 생성합니다.mkdir명령을 사용하여 새로운 마운트 지점을 생성합니다. 클러스터된 시스템에서 클러스터에 있는 모든 노드에 마운트 지점을 생성합니다.- 파일 시스템을 마운트합니다. 시스템에 있는 각각의 노드에 대한
fstab파일에 행을 추가할 수 있습니다.
3.3. 논리 볼륨에 파일 시스템 늘리기
- 새 물리 볼륨을 생성합니다.
- 새 물리 볼륨을 포함시키기 위해 늘리려는 파일 시스템과 함께 논리 불륨이 있는 볼륨 그룹을 확장합니다.
- 새 물리 볼륨을 포함시키기 위해 논리 볼륨을 확장합니다.
- 파일 시스템을 늘립니다.
3.4. 논리 볼륨 백업
lvm.conf 파일에서 비활성화되지 않는 한 모든 볼륨 그룹 및 논리 볼륨 설정 변경 시 자동으로 생성됩니다. 기본값으로 메타데이터 백업은 /etc/lvm/backup 파일에 저장되며 메타데이터 아카이브는 /etc/lvm/archive 파일에 저장됩니다. /etc/lvm/archive 파일에 저장된 메타데이터 아카이브가 얼마나 오래 동안 얼마나 많은 아카이브 파일을 저장할 지는 lvm.conf 파일에서 설정할 수 있는 매개변수에 의해 결정됩니다. 매일 실행되는 시스템 백업에는 /etc/lvm 디렉토리의 내용이 들어 있어야 합니다.
vgcfgbackup 명령을 사용하여 /etc/lvm/backup 파일에 메타데이터를 수동으로 백업할 수 있습니다. vgcfgrestore 명령으로는 메타데이터를 복구할 수 있습니다. vgcfgbackup 및 vgcfgrestore 명령은 4.3.12절. “볼륨 그룹 메타 데이터 백업 ”에 설명되어 있습니다.
3.5. 로깅
- 표준 출력/오류
- syslog
- 로그 파일
- 외부 로그 기능
/etc/lvm/lvm.conf 파일에 설정되어 있습니다.
4장. CLI 명령을 사용한 LVM 관리
참고
clvmd 데몬을 실행하고 있는 지를 확인해야 합니다. 자세한 내용은 3.1절. “클러스터에 LVM 볼륨 생성 ”에서 확인하십시오.
4.1. CLI 명령 사용
--units 인수를 지정하면, 소문자는 1024의 배수로된 단위를 가리키는 반면 대문자는 1000의 배수로된 단위를 가리킵니다.
vg0 볼륨 그룹에 있는 lvol0 논리 볼륨은 vg0/lvol0으로 지정될 수 있습니다. 여기서 볼륨 그룹 목록이 필요하지만 이는 비어있게 되고, 모든 볼륨 그룹 목록은 대체됩니다. 논리 볼륨 목록이 필요하지만 볼륨 그룹이 주어지고, 볼륨 그룹에 있는 모든 논리 볼륨 목록은 대체됩니다. 예를 들어, lvdisplay vg0 명령은 vg0 볼륨 그룹에 있는 모든 논리 볼륨을 보여줍니다.
-v 인수를 허용합니다. 예를 들어, 다음의 예에서는 lvcreate 명령의 기본 출력 결과를 보여주고 있습니다.
# lvcreate -L 50MB new_vg
Rounding up size to full physical extent 52.00 MB
Logical volume "lvol0" created
-v 인수와 함께 사용된 lvcreate 명령의 출력 결과를 보여주고 있습니다.
# lvcreate -v -L 50MB new_vg
Finding volume group "new_vg"
Rounding up size to full physical extent 52.00 MB
Archiving volume group "new_vg" metadata (seqno 4).
Creating logical volume lvol0
Creating volume group backup "/etc/lvm/backup/new_vg" (seqno 5).
Found volume group "new_vg"
Creating new_vg-lvol0
Loading new_vg-lvol0 table
Resuming new_vg-lvol0 (253:2)
Clearing start of logical volume "lvol0"
Creating volume group backup "/etc/lvm/backup/new_vg" (seqno 5).
Logical volume "lvol0" created
-vv, -vvv, -vvvv 인수를 사용할 수 있습니다. -vvvv 인수로 최대 출력 결과를 볼 수 있습니다. 다음의 예에서는 -vvvv 인수와 함께 사용된 lvcreate 명령에 대해 처음 몇 줄의 출력 결과 만을 보여주고 있습니다.
# lvcreate -vvvv -L 50MB new_vg
#lvmcmdline.c:913 Processing: lvcreate -vvvv -L 50MB new_vg
#lvmcmdline.c:916 O_DIRECT will be used
#config/config.c:864 Setting global/locking_type to 1
#locking/locking.c:138 File-based locking selected.
#config/config.c:841 Setting global/locking_dir to /var/lock/lvm
#activate/activate.c:358 Getting target version for linear
#ioctl/libdm-iface.c:1569 dm version OF [16384]
#ioctl/libdm-iface.c:1569 dm versions OF [16384]
#activate/activate.c:358 Getting target version for striped
#ioctl/libdm-iface.c:1569 dm versions OF [16384]
#config/config.c:864 Setting activation/mirror_region_size to 512
...
--help 인수로 LVM CLI 명령에 해당하는 도움말을 볼 수 있습니다.
commandname --help
man 명령을 실행합니다:
man commandname
man lvm 명령은 LVM에 관한 일반적인 온라인 정보를 보여줍니다.
/dev/sdf라는 물리 볼륨을 삭제하여 할 경우 유용할 수 있으며, 이를 다시 플러그인하면 /dev/sdk에서 찾을 수 있습니다. LVM은 장치 이름이 아닌 UUID에 의해 물리 볼륨을 확인하기 때문에 이는 계속 물리 볼륨을 찾게 됩니다. 물리 볼륨을 생성할 때 물리 볼륨의 UUID를 지정하는 방법에 대한 내용은 6.4절. “물리 볼륨 메타 데이터 복구 ”에서 참조하시기 바랍니다.
4.2. 물리 볼륨 관리
4.2.1. 물리 볼륨 생성
4.2.1.1. 파티션 유형 설정
fdisk 또는 cfdisk를 사용하여 0x8e로 설정되어야 합니다. 전체 디스크 장치의 경우 파티션 테이블만이 삭제되어야 하며, 사실상 이는 디스크 상의 모든 데이터를 삭제하게 됩니다. 다음의 명령을 사용하여 첫 번째 섹터를 제로(zero)로 지정하여 기존 파티션 테이블을 삭제할 수 있습니다:
dd if=/dev/zero of=PhysicalVolume bs=512 count=1
4.2.1.2. 물리 볼륨 초기화
pvcreate 명령을 사용하여 물리 볼륨으로 사용할 블록 장치를 초기화합니다. 초기화 작업은 파일 시스템을 포맷하는 것과 유사합니다.
/dev/sdd1, /dev/sde1, /dev/sdf1를 초기화합니다.
pvcreate /dev/sdd1 /dev/sde1 /dev/sdf1
pvcreate 명령을 실행합니다. 다음 예에서는 LVM 논리 볼륨의 일부분으로 차후에 사용할 LVM 물리 볼륨으로서 /dev/hdb1 파티션을 초기화하고 있습니다.
pvcreate /dev/hdb1
4.2.1.3. 블록 장치 스캐닝
lvmdiskscan 명령으로 물리 볼륨으로 사용된 블록 장치를 확인할 수 있습니다.
# lvmdiskscan
/dev/ram0 [ 16.00 MB]
/dev/sda [ 17.15 GB]
/dev/root [ 13.69 GB]
/dev/ram [ 16.00 MB]
/dev/sda1 [ 17.14 GB] LVM physical volume
/dev/VolGroup00/LogVol01 [ 512.00 MB]
/dev/ram2 [ 16.00 MB]
/dev/new_vg/lvol0 [ 52.00 MB]
/dev/ram3 [ 16.00 MB]
/dev/pkl_new_vg/sparkie_lv [ 7.14 GB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb [ 17.15 GB]
/dev/sdb1 [ 17.14 GB] LVM physical volume
/dev/sdc [ 17.15 GB]
/dev/sdc1 [ 17.14 GB] LVM physical volume
/dev/sdd [ 17.15 GB]
/dev/sdd1 [ 17.14 GB] LVM physical volume
7 disks
17 partitions
0 LVM physical volume whole disks
4 LVM physical volumes
4.2.2. 물리 볼륨 보기
pvs, pvdisplay, pvscan.
pvs 명령으로 물리 볼륨 당 하나의 행으로 설정 가능한 형식의 물리 볼륨 정보를 알 수 있습니다. pvs 명령으로 포맷 제어를 할 수 있고 스트립핑에 유용합니다. 출력 결과를 사용자 설정하기 위해 pvs 명령을 사용하는 방법에 대한 내용은 4.8절. “LVM 용 사용자 설정 리포트 ”에서 참조하시기 바랍니다.
pvdisplay 명령으로 각각의 물리 볼륨에 대해 상세 출력을 할 수 있습니다. 이는 고정 포맷으로 물리 볼륨의 속성 (크기, 익스텐트, 볼륨 그룹 등)을 보여줍니다.
pvdisplay 명령의 출력 결과를 보여 주고 있습니다
# pvdisplay
--- Physical volume ---
PV Name /dev/sdc1
VG Name new_vg
PV Size 17.14 GB / not usable 3.40 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 4388
Free PE 4375
Allocated PE 13
PV UUID Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe
pvscan 명령으로 물리 볼륨에 해당하는 시스템에 있는 모든 LVM 블록 장치를 스캔합니다.
# pvscan
PV /dev/sdb2 VG vg0 lvm2 [964.00 MB / 0 free]
PV /dev/sdc1 VG vg0 lvm2 [964.00 MB / 428.00 MB free]
PV /dev/sdc2 lvm2 [964.84 MB]
Total: 3 [2.83 GB] / in use: 2 [1.88 GB] / in no VG: 1 [964.84 MB]
lvm.conf에서 필터를 지정하여 특정 물리 볼륨을 스캔하지 않게 할 수 있습니다. 어떤 장치를 스캔할 지를 제어하기 위한 필터 사용에 관한 자세한 내용은 4.5절. “필터로 LVM 장치 스캔 제어 ”에서 참조하시기 바랍니다.
4.2.3. 물리 볼륨에서 할당을 허용하지 않음
pvchange 명령을 사용하여 한 개 이상의 물리 볼륨의 여유 공간에 있는 물리 익스텐트의 할당을 허용하지 않을 수 있습니다. 디스크 오류가 있을 경우나 물리 볼륨을 삭제할 경우 이러한 작업이 필요하게 됩니다.
/dev/sdk1에 물리 익스텐트의 할당을 허용하지 않습니다.
pvchange -x n /dev/sdk1
pvchange 명령의 -xy 인수를 사용하여 할당이 허용되지 않은 부분에 대해 할당을 허용할 수 있습니다.
4.2.4. 물리 볼륨 크기 조정
pvresize 명령을 사용하여 새로운 크기로 LVM을 업데이트합니다. LVM이 물리 볼륨을 사용하고 있는 동안에도 이 명령을 실행할 수 있습니다.
4.2.5. 물리 볼륨 삭제
pvremove 명령으로 LVM 레이블을 삭제할 수 있습니다. pvremove 명령을 실행하면 빈 물리 볼륨에 있는 LVM 메타 데이터를 제로(zero)로 만듭니다.
vgreduce 명령으로 볼륨 그룹에서 이를 삭제해야 합니다.
# pvremove /dev/ram15
Labels on physical volume "/dev/ram15" successfully wiped
4.3. 볼륨 그룹 관리
4.3.1. 볼륨 그룹 생성
/dev/sdd1 및 /dev/sde1 물리 볼륨이 들어있는 vg1라는 볼륨 그룹을 생성합니다.
vgcreate vg1 /dev/sdd1 /dev/sde1
vgcreate 명령에 -s 옵션을 사용하여 익스텐트 크기를 지정할 수 있습니다. vgcreate 명령의 -p 및 -l 인수를 사용하여 볼륨 그룹이 갖을 수 있는 물리 볼륨 또는 논리 볼륨의 수에 제한을 둘 수 있습니다.
normal 할당 정책입니다. vgcreate 명령의 --alloc 인수를 사용하여 contiguous, anywhere, cling의 할당 정책을 지정할 수 있습니다.
contiguous 정책에서는 새 익스텐트가 기존 익스텐트에 근접해야 합니다. 할당 요청을 만족시키기에 충분한 여유 익스텐트가 있지만 normal 할당 정책에서는 이를 사용하고자 하지 않을 경우, 같은 물리 볼륨에 두 개의 스트라이프가 위치하여 실행 속도가 줄어들어도 anywhere 할당 정책이 이를 사용합니다. cling 정책은 논리 볼륨의 동일한 스트라이프에 있는 기존 익스텐트와 같은 물리 볼륨에 있는 새 익스텐트를 위치하게 합니다. 이러한 정책은 vgchange 명령으로 변경될 수 있습니다.
cling 정책을 LVM 태그와 함께 사용하여 LVM 볼륨을 확장할 때 사용하기 위한 추가 물리 볼륨을 지정하는 방법에 대한 내용은 4.4.12.2절. “cling 할당 정책을 사용하여 논리 볼륨 확장 ”에서 참조하십시오.
normal 외의 할당 정책은 특별한 형태로 익스텐트를 할당해야 하는 것과 같이 특별한 경우에만 요청됩니다.
/dev 디렉토리에 있는 장치 특수 파일 디렉토리 트리에 포함됩니다.
/dev/vg/lv/
lvo1, lvo2, lvo3라는 세 개의 논리 볼륨을 갖는 myvg1 및 myvg2라는 두 개의 볼륨 그룹을 생성할 경우, 여섯 개의 장치 특수 파일이 생성됩니다:
/dev/myvg1/lv01 /dev/myvg1/lv02 /dev/myvg1/lv03 /dev/myvg2/lv01 /dev/myvg2/lv02 /dev/myvg2/lv03
4.3.2. 클러스터에서 볼륨 그룹 생성
vgcreate 명령으로 단일 노드에 생성하는 것과 같이 클러스터 환경에 볼륨 그룹을 생성합니다.
vgcreate 명령의 -c n을 사용하여 클러스터에 있는 하나의 노드에서만 볼 수 있는 로컬 볼륨 그룹을 생성할 수 있습니다.
/dev/sdd1 및 /dev/sde1 물리 볼륨이 들어있는 vg1라는 로컬 볼륨을 생성합니다.
vgcreate -c n vg1 /dev/sdd1 /dev/sde1
vgchange 명령의 -c 옵션으로 클러스터할 지를 변경할 수 있습니다. 자세한 내용은 4.3.7절. “볼륨 그룹의 매개 변수 변경 ”에서 설명하고있습니다.
vgs 명령을 사용하여 기존 볼륨 그룹이 클러스터화된 볼륨 그룹인지를 확인할 수 있으며, 볼륨이 클러스터되어 있을 경우 이는 c 속성을 표시합니다. 다음 명령은 VolGroup00 및 testvg1 볼륨 그룹의 속성을 표시합니다. 예에서VolGroup00는 클러스터되어 있지 않는 반면, testvg1는 Attr 헤딩 아래 c 속성에 의해 표시되어 클러스터됩니다.
[root@doc-07]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 19.88G 0
testvg1 1 1 0 wz--nc 46.00G 8.00M
4.3.3. 볼륨 그룹에 물리 볼륨 추가
vgextend 명령을 사용합니다. vgextend 명령으로 하나 이상의 여유 물리 볼륨을 추가하여 볼륨 그룹의 용량을 늘립니다.
vg1에 물리 볼륨 /dev/sdf1을 추가합니다.
vgextend vg1 /dev/sdf1
4.3.4. 볼륨 그룹 보기
vgs 및 vgdisplay
vgscan 명령으로 볼륨 그룹에 해당하는 모든 디스크를 스캔하고 LVM 캐시 파일을 다시 작성할 수 도 있지만 볼륨 그룹을 볼 수 도 있습니다. vgscan 명령에 관한 내용은4.3.5절. “캐시 파일 작성을 위해 볼륨 그룹에 해당하는 디스크 보기 ”에서 참조하시기 바랍니다.
vgs 명령은 볼륨 그룹 당 하나의 행을 보여주어 설정 가능한 형식으로 볼륨 그룹 정보를 제공합니다. vgs 명령으로 많은 포맷을 제어할 수 있고 스크립팅에 유용하게 사용할 수 있습니다. 출력 결과를 사용자 설정하기 위한 vgs 명령 사용에 관한 내용은 4.8절. “LVM 용 사용자 설정 리포트 ”에서 참조하시기 바랍니다.
vgdisplay 명령으로 고정된 형식으로 볼륨 그룹 속성 (예: 크기, 익스텐트, 물리 볼륨 수 등)을 볼 수 있습니다. 다음 예에서는 new_vg 볼륨 그룹에 해당하는 vgdisplay 명령의 출력 결과를 보여 주고 있습니다. 볼륨 그룹을 지정하지 않을 경우, 기존의 모든 볼륨 그룹이 나타납니다.
# vgdisplay new_vg
--- Volume group ---
VG Name new_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 51.42 GB
PE Size 4.00 MB
Total PE 13164
Alloc PE / Size 13 / 52.00 MB
Free PE / Size 13151 / 51.37 GB
VG UUID jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32
4.3.5. 캐시 파일 작성을 위해 볼륨 그룹에 해당하는 디스크 보기
vgscan 명령으로 LVM 물리 볼륨 및 볼륨 그룹을 찾는 시스템에서 지원되는 모든 디스크 장치를 스캔합니다. 이는 현재 LVM 장치 목록을 관리하는 /etc/lvm/.cache에 LVM 캐시 파일을 작성합니다.
vgcreate 명령을 실행할 때나 LVM이 불일치되는 사항을 발견하였을 때 vgscan 명령을 자동으로 실행합니다.
참고
vgscan 명령을 수동으로 실행해야 할 수 있습니다. 이는 시스템 부팅시 나타나지 않는 시스템의 새로운 장치를 볼 수 있게 하기 위함입니다. 예를 들어, SAN 상의 시스템에 새 디스크를 추가할 때나 또는 물리 볼륨으로 레이블된 새 디스크를 핫플러그 (hotplug)할 때 이러한 기능이 필요할 수 도 있습니다.
lvm.conf 파일에 필터를 지정할 수 있습니다. 장치 스캔 제어를 위한 필터 사용에 관한 내용은 4.5절. “필터로 LVM 장치 스캔 제어 ”에서 참조하시기 바랍니다.
vgscan 명령의 출력 결과를 보여주고 있습니다.
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "new_vg" using metadata type lvm2
Found volume group "officevg" using metadata type lvm2
4.3.6. 볼륨 그룹에서 물리 볼륨 삭제
vgreduce 명령을 사용합니다. vgreduce 명령으로 하나 이상의 비어있는 물리 볼륨을 삭제하여 볼륨 그룹 용량을 줄입니다. 이는 다른 볼륨 그룹에서 사용되도록 또는 시스템에서 삭제되도록 물리 볼륨을 삭제합니다.
pvdisplay 명령으로 물리 볼륨이 다른 논리 볼륨에 의해 사용되지 않는 지를 확인할 수 있습니다.
# pvdisplay /dev/hda1
-- Physical volume ---
PV Name /dev/hda1
VG Name myvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
pvmove 명령으로 데이터를 다른 물리 볼륨으로 옮겨야 합니다. 그 후 vgreduce 명령을 사용하여 물리 볼륨을 삭제합니다:
my_volume_group 볼륨 그룹에서 /dev/hda1 물리 볼륨을 삭제합니다.
# vgreduce my_volume_group /dev/hda14.3.7. 볼륨 그룹의 매개 변수 변경
vgchange 명령은 볼륨 그룹을 활성화 및 비활성화하기 위해 사용됩니다. 이 명령을 사용하여 기존 볼륨 그룹의 여러 볼륨 그룹 매개 변수를 변경할 수 있습니다.
vg00 볼륨 그룹의 논리 볼륨을 최대 128까지로 변경할 수 있습니다.
vgchange -l 128 /dev/vg00
vgchange 명령으로 변경할 수 있습니다. vgchange(8) 맨 페이지를 참조하시기 바랍니다.
4.3.8. 볼륨 그룹 활성화 및 비활성화
vgchange 명령의 -a (--available) 인수를 사용합니다.
my_volume_group 볼륨 그룹을 비활성화하고 있습니다.
vgchange -a n my_volume_group
lvchange 명령을 사용하여 개별적 논리 볼륨을 비활성화할 수 있습니다. 클러스터에 있는 개별적 노드에서 논리 볼륨을 활성화하는 방법은 4.7절. “클러스터에 있는 개별적 노드에서 논리 볼륨 활성화 ”에서 참조하시기 바랍니다.
4.3.9. 볼륨 그룹 삭제
vgremove 명령을 사용합니다.
# vgremove officevg
Volume group "officevg" successfully removed
4.3.10. 볼륨 그룹 나누기
vgsplit 명령을 사용합니다.
pvmove 명령을 사용하여 강제로 분리할 수 있습니다.
bigvg에서 새로운 볼륨 그룹 smallvg을 나누고 있습니다.
# vgsplit bigvg smallvg /dev/ram15
Volume group "smallvg" successfully split from "bigvg"
4.3.11. 볼륨 그룹 합치기
vgmerge 명령을 사용합니다. 볼륨의 물리 익스텐트 크기가 동일하고 양 쪽의 볼륨 그룹의 물리 볼륨 및 논리 볼륨 요약이 destination 볼륨 그룹 제한에 맞을 경우 비활성화 "source" 볼륨을 활성화 또는 비활성화 "destination" 볼륨과 통합할 수 있습니다.
my_vg를 런타임 상세 정보를 제공하는 활성화 또는 비활성화 볼륨 그룹 databases으로 합칠 수 있습니다.
vgmerge -v databases my_vg
4.3.12. 볼륨 그룹 메타 데이터 백업
lvm.conf 파일에서 비활성화되지 않는 한 모든 볼륨 그룹 및 논리 볼륨 설정 변경 시 자동으로 생성됩니다. 기본값으로 메타 데이터 백업은 /etc/lvm/backup에 저장되고 메타 데이터 아카이브는 /etc/lvm/archives에 저장됩니다. vgcfgbackup 명령으로 /etc/lvm/backup 파일에 수동으로 메타 데이터를 백업할 수 있습니다.
vgcfrestore 명령을 사용하여 볼륨 그룹에 있는 아카이브에서 모든 물리 볼륨으로 볼륨 그룹의 메타 데이터를 복구합니다.
vgcfgrestore 명령을 사용하여 물리 볼륨 메타 데이터를 복구하는 예는 6.4절. “물리 볼륨 메타 데이터 복구 ”에서 참조하시기 바랍니다.
4.3.13. 볼륨 그룹 이름 변경
vgrename 명령을 사용하여 기존의 볼륨 그룹 이름을 변경합니다.
vg02 볼륨 그룹을 my_volume_group으로 이름을 변경합니다.
vgrename /dev/vg02 /dev/my_volume_group
vgrename vg02 my_volume_group
4.3.14. 다른 시스템으로 볼륨 그룹 이동
vgexport 및 vgimport 명령을 사용할 것을 권장합니다.
vgexport 명령은 물리 볼륨을 분리시키는 시스템에 비활성화 볼륨 그룹을 액세스 불가능하게 합니다. vgexport 명령으로 이를 비활성화시킨 후 vgimport 명령으로 볼륨 그룹이 시스템에 다시 액세스할 수 있게 합니다.
- 볼륨 그룹에서 어떤 사용자도 활성화 볼륨에 있는 파일에 액세스하지 않도록 한 후, 논리 볼륨을 마운트 해제합니다.
vgchange명령의-a n인수를 사용하여 볼륨 그룹을 비활성화시키면, 볼륨 그룹에서 더이상 작업이 이루어지지 않게 됩니다.- 볼륨 그룹을 내보내기 위해
vgexport명령을 사용합니다. 삭제된 볼륨 그룹이 시스템에 의해 액세스되지 않게 합니다.볼륨 그룹을 내보낸 후, 다음의 예처럼pvscan명령을 실행할 때 물리 볼륨은 내보내어진 볼륨 그룹에 있는 것처럼 나타납니다.[root@tng3-1]#
pvscanPV /dev/sda1 is in exported VG myvg [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG myvg [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG myvg [17.15 GB / 15.15 GB free] ...시스템이 종료되면, 볼륨 그룹으로 구성된 디스크를 언플러그하고 이를 새로운 시스템에 연결할 수 있습니다. - 디스크가 새로운 시스템에 플로그될 경우,
vgimport명령을 사용하여 볼륨 그룹을 읽어온 후, 새로운 디스크에서 액세스 가능하게 합니다. vgchange명령의-a y인수를 사용하여 볼륨 그룹을 활성화합니다.- 파일 시스템을 마운트하여 사용 가능하게 합니다.
4.4. 논리 볼륨 관리
4.4.1. 선형 논리 볼륨 생성
lvcreate 명령을 사용하비다. 논리 볼륨에 해당하는 이름을 지정하지 않을 경우, 기본값으로 lvol# 이름이 사용되며 여기서 #는 논리 볼륨의 내부 번호로 대체합니다.
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
lvcreate 명령의 -l 인수를 사용하여 전체 볼륨 그룹을 사용하는 논리 볼륨을 생성할 수 있습니다. 전체 볼륨 그룹을 사용하는 논리 볼륨을 생성하기 위한 다른 방법으로는 vgdisplay 명령을 사용하여 "Total PE" 크기를 찾아 이를 lvcreate 명령에 입력값으로 사용하는 것입니다.
testvg라는 볼륨 그룹을 채우는 mylv라는 논리 볼륨을 생성합니다.
#vgdisplay testvg | grep "Total PE"Total PE 10230 #lvcreate -l 10230 testvg -n mylv
lvcreate 명령 행의 마지막에 있는 볼륨을 지정합니다. 다음 명령으로 /dev/sdg1 물리 볼륨에서 할당된 testvg 볼륨 그룹에 testlv라는 논리 볼륨을 생성합니다.
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
/dev/sda1의 익스텐트 0 부터 24 까지에서 그리고 testvg 볼륨 그룹에 있는 물리 볼륨 /dev/sdb1의 익스텐트 50 부터 124 까지에서 선형 논리 볼륨을 생성하고 있습니다.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-24 /dev/sdb1:50-124
/dev/sda1의 익스텐트 0에서 25까지에서 선형 논리 볼륨을 생성하고 그 후 익스텐트 100까지 배열합니다.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
inherit되는 것이며, 이는 볼륨 그룹에 대해서도 같은 정책이 적용됩니다. 이러한 정책은 lvchange 명령으로 변경될 수 있습니다. 할당 정책에 관한 자세한 내용은 4.3.1절. “볼륨 그룹 생성 ”에서 참조하시기 바랍니다.
4.4.2. 스트라이프 (striped) 볼륨 생성
lvcreate 명령의 -i 인수를 사용하여 스트라이프 수를 지정합니다. 이는 얼마나 많은 물리 볼륨 및 논리 볼륨을 스트라이프할 지를 결정합니다. 스트라이프 수는 볼륨 그룹에 있는 물리 볼륨의 수 보다 커서는 안됩니다. (--alloc anywhere 인수가 사용되지 않을 경우).
gfslv라는 이름으로, vg0 볼륨 그룹에서 나누어져 있습니다.
lvcreate -L 50G -i2 -I64 -n gfslv vg0
stripelv라고 이름을 정한 후, testvg 볼륨 그룹에 둡니다. 스트라이프는 /dev/sda1의 0-49 섹터와 /dev/sdb1의 50-99 섹터를 사용하게 됩니다.
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-49 /dev/sdb1:50-99
Using default stripesize 64.00 KB
Logical volume "stripelv" created
4.4.3. 미러 볼륨 생성
참고
lvm.conf 파일에 있는 잠금 유형은 클러스터 잠금 기능을 활성화하기 위해 3.1절. “클러스터에 LVM 볼륨 생성 ”에 설명되어 있듯이 직접적으로 또는 lvmconf 명령을 실행하여 올바르게 설정되어 있어야 합니다.
lvcreate 명령의 -m 인수를 사용하여 만들 데이터 사본 수를 지정합니다. -m1을 지정하면 하나의 미러를 생성하고, 선형 논리 볼륨 및 하나의 복사본이라는 두 개의 파일 시스템 복사본을 생성합니다. 이와 유사하게, -m2를 지정하면 두 개의 미러를 생성하고, 세 개의 파일 시스템 복사본을 생성합니다.
mirrorlv라는 이름으로, vg0 볼륨 그룹에서 나눕니다:
lvcreate -L 50G -m1 -n mirrorlv vg0
lvcreate 명령의 -R 인수를 사용하여 영역 크기를 MB 단위로 지정할 수 있습니다. 또한 lvm.conf 파일에 있는 mirror_region_size 설정을 편집하여 기본값 영역 크기를 변경할 수 있습니다.
참고
lvcreate 명령에 -R 인수로 이 번호를 사용합니다. 예를 들어, 미러 크기가 1.5TB인 경우, -R 2로 지정할 수 있으며, 미러 크기가 3TB인 경우에는 -R 4로 지정할 수 있습니다. 미러 크기가 5TB인 경우, -R 8로 지정할 수 있습니다.
lvcreate -m1 -L 2T -R 2 -n mirror vol_group
--mirrorlog core 인수로 이러한 로그가 메모리에 저장되도록 지정할 수 있습니다; 이는 추가 로그 장치가 필요하지 않게 하지만, 재부팅할 때 마다 전체 미러를 동기화해야 합니다.
bigvg 볼륨 그룹에서 미러 논리 볼륨을 생성합니다. 논리 볼륨은 ondiskmirvol라는 이름으로 하나의 단일 미러를 갖게 됩니다. 볼륨은 12MB 크기가 되며 메모리에 미러 로그를 보관합니다.
# lvcreate -L 12MB -m1 --mirrorlog core -n ondiskmirvol bigvg
Logical volume "ondiskmirvol" created
vgcreate 명령의 --alloc anywhere 인수를 사용하여 미러 leg 중 하나로 동일한 장치에 미러 로그를 생성할 수 있습니다. 이는 성능을 저하시킬 수 도 있지만, 기본 장치기 두 개 밖에 없을 경우에도 미러를 생성할 수 있게 합니다.
vg0 볼륨 그룹은 두 개의 장치로만 구성되어 있습니다. 이러한 명령이 생성한 미러 볼륨은 500 메가 바이트 크기에 mirrorlv라는 이름으로 vg0 볼륨 그룹에서 나누어 집니다.
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
참고
--mirrorlog mirrored 옵션을 지정할 수 있습니다. 다음의 명령으로 bigvg 볼륨 그룹에서 미러 논리 볼륨을 생성합니다. 논리 볼륨은 twologvol라는 이름으로 하나의 단일 미러를 갖게 됩니다. 볼륨은 12MB 크기가 되며 개별적 장치에 보관되는 각각의 로그와 함께 미러 로그는 미러됩니다.
# lvcreate -L 12MB -m1 --mirrorlog mirrored -n twologvol bigvg
Logical volume "twologvol" created
vgcreate 명령의 --alloc anywhere 인수를 사용하여 미러 leg와 동일한 장치에 이중 미러 로그를 생성할 수 있습니다. 이는 성능을 저하시킬 수 도 있지만, 이는 미러 leg 외에 분리된 장치에 보관하기 위해 각 로그에 대해 기본 장치가 충분하지 않을 경우에도 이중 미러 로그를 생성할 수 있게 합니다.
nosync 인수를 지정하여 첫 번째 장치에서의 초기 동기화할 필요가 없음을 나타냅니다.
mirrorlv라는 이름으로 vg0 볼륨 그룹에서 나뉘어져 있습니다. 첫 번째 미러 leg는 /dev/sda1 장치에 위치하게 되고, 두 번째 미러 leg는 /dev/sdb1 장치에 위치하게 되며, 미러 로그는 /dev/sdc1에 위치하게 됩니다.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
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
참고
--mirrors X)와 스트라이프 수 (--stripes Y)를 지정하면 미러 장치의 구성 장치가 스트라이프됩니다.
4.4.3.1. 미러 논리 볼륨 실패 정책
lvm.conf 파일의 activation 부분에 있는 mirror_image_fault_policy 및 mirror_log_fault_policy 매개 변수로 장치 실패시 미러 논리 볼륨 작동 방식을 지정할 수 있습니다. 이러한 매개 변수가 remove로 설정될 경우, 시스템은 잘못된 장치를 제거하고 이 장치 없이 실행됩니다. 이러한 매개 변수가 allocate로 설정될 경우, 시스템은 잘못된 장치를 제거하고 잘못된 장치 대신 새로운 장치를 할당합니다. 적절한 장치나 공간이 할당될 수 없을 경우 이러한 정책은 remove 정책과 같이 작동합니다.
mirror_log_fault_policy 매개 변수는 allocate로 설정되어 있습니다. 로그에 대해 이러한 정책을 사용하는 것이 신속하며 충돌 및 재부팅을 통한 동기화 상태를 기억하게 하는 기능을 관리합니다. 이 정책을 remove로 설정하였을 경우, 로그 장치가 실패했을 때 미러는 내부 메모리 로그를 사용하도록 전환되며 미러는 충돌 및 재부팅을 통한 동기화 상태를 기억하지 않게 되고 전체 미러는 다시 동기화됩니다.
mirror_image_fault_policy 매개 변수는 remove로 설정되어 있습니다. 이 정책으로 미러 이미지가 실패할 경우 복사본이 하나만 남아있을 때 미러는 미러되지 않은 장치로 전환하게 됩니다. 미러 장치에 대해 이 정책을 allocate로 설정하면, 미러가 장치에 다시 동기화해야 하기 때문에 처리 시간이 소요되지만 이로 인해 장치의 미러 특성을 유지할 수 있게 됩니다.
참고
mirror_log_fault_policy 매개 변수가 allocate로 설정되는 경우, 장애가 발생한 장치를 대체하려 합니다. 하지만 두 번째 단계에서 다른 장치가 사용 가능한 경우 미러로 장애와 관련이 없는 이전에 사용하고 있는 장치가 선택된다고 보장할 수 없다는 점에 유의하십시오.
4.4.3.2. 미러 논리 볼륨의 중복된 이미지 분리하기
lvconvert 명령의 --splitmirrors 인수를 사용하여 분리할 중복된 이미지 수를 지정합니다. 명령의 --name 인수를 사용하여 새롭게 분리된 논리 볼륨의 이름을 지정해야 합니다.
vg/lv라는 미러 논리 볼륨에서 copy라는 새로운 논리 볼륨을 분리할 수 있습니다. 새로운 논리 볼륨에는 두 개의 미러 leg가 들어 있게 됩니다. 예에서 LVM은 분리한 장치를 선택하고 있습니다.
lvconvert --splitmirrors 2 --name copy vg/lv
vg/lv 미러 논리 볼륨에서 copy라는 새로운 논리 볼륨을 분리할 수 있습니다. 새 논리 볼륨에는 /dev/sdc1 및 /dev/sde1 장치로 구성된 두 개의 미러 leg가 들어 있게 됩니다.
lvconvert --splitmirrors 2 --name copy vg/lv /dev/sd[ce]1
4.4.3.3. 미러 논리 장치 복구
lvconvert --repair 명령을 사용하여 디스크 실패 후 미러를 복구할 수 있습니다. 이는 안정적인 상태로 미러를 되돌려 놓습니다. lvconvert --repair 명령은 대화식 명령으로 시스템이 실패한 장치를 대체하기 위한 여부를 나타낼지에 대해 묻습니다.
- 프롬프트를 생략하고 실패한 장치 모드를 대체하려면 명령행에서
-y옵션을 지정합니다. - 프롬프트를 생략하고 실패한 장치 중 어느것도 대체하지 않으려면 명령행에서
-f옵션을 지정합니다. - 프롬프트를 생략하고 미러 이미지 및 미러 로그에 에대 다른 대체 정책을 적용하려면
--use-policies인수를 지정하여lvm.conf파일에mirror_log_fault_policy와mirror_device_fault_policy를 지정하여 장치 대체 정책을 사용할 수 있습니다.
4.4.3.4. 미러 볼륨 설정 변경
lvconvert 명령을 사용하여 미러 볼륨에서 선형 볼륨으로 또는 선형 볼륨에서 미러 볼륨으로 논리 볼륨을 변환할 수 있습니다. 이 명령을 사용하여 corelog와 같은 기존 논리 볼륨의 다른 미러 매개 변수를 재설정할 수 도 있습니다.
lvconvert 명령을 사용합니다. 이러한 절차는 6.3절. “LVM 미러 장애 복구 ”에 설명되어 있습니다.
vg00/lvol1을 미러 논리 볼륨으로 변환합니다.
lvconvert -m1 vg00/lvol1
vg00/lvol1 미러 논리 볼륨을 선형 논리 볼륨으로 변환합니다.
lvconvert -m0 vg00/lvol1
4.4.4. 스냅샷 볼륨 생성
lvcreate 명령의 -s 인수를 사용합니다. 스냅샷 볼륨은 쓰기 가능합니다.
참고
참고
/dev/vg00/snap라는 이름의 스냅샷 논리 볼륨을 생성합니다. 이는 /dev/vg00/lvol1라는 초기 논리 볼륨의 스냅샷을 생성합니다. 초기 논리 볼륨에 파일 시스템이 들어 있을 경우, 초기 파일 시스템이 업데이트되는 동안 백업을 실행하기 위해 파일 시스템의 컨텐츠를 액세스함으로 임시 디렉토리에 스냅샷 논리 볼륨을 마운트할 수 있습니다.
lvcreate --size 100M --snapshot --name snap /dev/vg00/lvol1
lvdisplay 명령으로 초기 볼륨을 지정하면 모든 스냅샷 논리 볼륨 목록 및 상태 (활성 또는 비활성)가 들어있는 출력 결과가 나타납니다.
/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%로 채워졌을 경우에는 완전히 손실될 수 있습니다.
4.4.5. 스냅샷 볼륨 합치기
lvconvert 명령의 --merge 옵션을 사용하여 스냅샷을 원래 볼륨으로 합치기할 수 있습니다. 원래 볼륨과 스냅샷 볼륨 모두가 열리지 않을 경우, 합치기가 바로 시작됩니다. 그렇지 않을 경우, 원래 볼륨 또는 스냅샷 볼륨이 처음으로 활성화되어 모두가 종료되었을 경우 합치기가 시작됩니다. root 파일 시스템과 같이 종료할 수 없는 원래 볼륨으로 스냅샷 볼륨을 합치기할 경우 이는 다음번에 원래 볼륨이 활성화될 때 까지 연기됩니다. 합치기가 시작되면 논리 볼륨에는 원래 볼륨의 이름 마이너 번호 및 UUID가 나타나게 됩니다. 합치기 작업이 진행되고 있을 경우 원래 볼륨으로의 읽기 또는 쓰기 작업은 합쳐진 스냅샷으로 이동한 것처럼 나타납니다. 합치기 작업이 완료되면 합쳐진 스냅샷은 삭제됩니다.
vg00/lvol1_snap을 원래의 볼륨으로 통합합니다.
lvconvert --merge vg00/lvol1_snap"
vg00/lvol1, vg00/lvol2, vg00/lvol3 논리 볼륨이 @some_tag로 태그되어 있습니다. 다음의 명령으로 이러한 세가지 볼륨에 대한 스냅샷 논리 볼륨을 순차적으로 vg00/lvol1, vg00/lvol2, vg00/lvol3으로 합치기할 수 있습니다. --background 옵션이 사용되었을 경우 모든 스냅샷 논리 볼륨 합치기 작업은 병렬로 시작됩니다.
lvconvert --merge @some_tag"
lvconvert --merge 명령에 대한 자세한 내용은 lvconvert(8) man 페이지를 참조하십시오.
4.4.6. 영구 장치 번호
lvcreate 및 lvchange 명령으로 이를 지정할 수 있습니다:
--persistent y --major major --minor minor
fsid 매개 변수를 지정하면 LVM 내에 있는 영구 장치 번호를 설정할 필요가 없게 됩니다.
4.4.7. 논리 볼륨 크기 조정
lvreduce 명령을 사용합니다. 논리 볼륨에 파일 시스템이 들어 있을 경우, 먼저 파일 시스템을 줄여서 (또는 LVM GUI를 사용하여) 최소한 논리 볼륨 크기가 파일 시스템 크기 만큼 되도록 합니다.
vg00 볼륨 그룹에서 lvol1 논리 볼륨의 크기를 줄입니다.
lvreduce -l -3 vg00/lvol1
4.4.8. 논리 볼륨 그룹의 매개 변수 변경
lvchange 명령을 사용합니다. 변경 가능한 매개 변수의 목록은 lvchange(8) 맨 페이지에서 참조하시기 바랍니다.
lvchange 명령을 사용하여 논리 볼륨을 활성화 및 비활성화시킬 수 있습니다. 동시에 볼륨 그룹에 있는 모든 논리 볼륨을 활성화 및 비활성화시키기 위해 4.3.7절. “볼륨 그룹의 매개 변수 변경 ”에서 설명하고 있듯이 vgchange 명령을 사용합니다.
vg00 볼륨 그룹에 있는 lvol1 볼륨이 읽기 전용이 되도록 권한을 변경합니다.
lvchange -pr vg00/lvol1
4.4.9. 논리 볼륨 이름 변경
lvrename 명령을 사용합니다.
vg02 볼륨 그룹에 있는 lvold 논리 볼륨을 lvnew로 이름을 변경할 수 있습니다.
lvrename /dev/vg02/lvold /dev/vg02/lvnew
lvrename vg02 lvold lvnew
4.4.10. 논리 볼륨 삭제
lvremove 명령을 사용합니다. 현재 논리 볼륨이 마운트되어 있을 경우 삭제 하기전 논리 볼륨을 마운트 해제해야 합니다. 또한 클러스터 환경에서도 논리 볼륨을 삭제하기전 이를 비활성화시켜야 합니다.
testvg 볼륨 그룹에서 /dev/testvg/testlv 논리 볼륨을 삭제합니다. 이러한 경우 논리 볼륨은 비활성화되지 않음에 유의하시기 바랍니다.
[root@tng3-1 lvm]#lvremove /dev/testvg/testlvDo you really want to remove active logical volume "testlv"? [y/n]:yLogical volume "testlv" successfully removed
lvchange -an 명령을 사용하여 논리 볼륨을 삭제하기 전 이를 비활성화시킬 수 있으며, 이러한 경우, 활성 논리 볼륨을 삭제하기를 원하는 지에 대한 여부를 확인하는 프롬프트가 나타나지 않습니다.
4.4.11. 논리 볼륨 보기
lvs, lvdisplay, lvscan.
lvs 명령은 하나의 논리 볼륨 당 하나의 행을 나타나게 하여 설정 가능한 형식으로 논리 볼륨 정보를 제공합니다. lvs 명령으로 포맷 관리를 할 수 있으며, 스크립팅에 유용합니다. 출력 결과를 사용자 설정하기 위해 lvs 명령을 사용하는 방법에 관한 내용은 4.8절. “LVM 용 사용자 설정 리포트 ”에서 참조하시기 바랍니다.
lvdisplay 명령은 고정된 형식으로 논리 볼륨 속성 (예: 크기, 레이아웃, 맵핑)을 보여줍니다.
vg00에 있는 lvol2의 속성을 볼 수 있습니다. 스냅샷 논리 볼륨이 초기 논리 볼륨 용으로 생성되었을 경우, 이러한 명령은 스냅샷 논리 볼륨 및 논리 볼륨의 (활성 또는 비활성) 상태에 대한 목록을 보여줍니다.
lvdisplay -v /dev/vg00/lvol2
lvscan 명령으로 시스템에 있는 모든 논리 볼륨을 찾고 이를 나열합니다.
# lvscan
ACTIVE '/dev/vg0/gfslv' [1.46 GB] inherit
4.4.12. 논리 볼륨 늘리기
lvextend 명령을 사용합니다.
/dev/myvg/homevol 논리 볼륨을 12 GB 까지 확장합니다.
# 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 논리 볼륨에 다른 GB를 추가합니다.
# 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 볼륨 그룹에 있는 할당되지 않은 모든 공간을 채웁니다.
[root@tng3-1 ~]# lvextend -l +100%FREE /dev/myvg/testlv
Extending logical volume testlv to 68.59 GB
Logical volume testlv successfully resized
4.4.12.1. 스트라이프 볼륨 확장
vgs 명령으로 나타난 두 개의 기본 물리 볼륨으로 된 vg 볼륨 그룹이 있다고 가정해 봅시다.
# 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 vgUsing default stripesize 64.00 KB Rounding up size to full physical extent 271.31 GB Logical volume "stripe1" created #lvs -a -o +devicesLV 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
# 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/sdd1Volume group "vg" successfully extended #vgsVG #PV #LV #SN Attr VSize VFree vg 4 1 0 wz--n- 542.62G 271.31G #lvextend vg/stripe1 -L 542GUsing 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 406GUsing 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.12.2. cling 할당 정책을 사용하여 논리 볼륨 확장
lvextend 명령의 --alloc cling 옵션을 사용하여 cling 할당 정책을 지정할 수 있습니다. 이러한 정책은 기존 논리 볼륨의 마지막 세그먼트로 동일한 물리 볼륨에 있는 공간이 선택됩니다. 물리 볼륨에 공간이 충분하지 않고 태그 목록이 lvm.conf 파일에 정의되어 있는 경우, LVM은 태그가 물리 볼륨에 부착되어 있는지를 확인하고 기존 익스텐트와 새 익스텐트 간의 물리 볼륨 태그를 일치시키려 합니다.
lvm.conf 파일에 다음과 같은 행을 지정하여 물리 볼륨을 태그할 수 있습니다:
cling_tag_list = [ "@site1", "@site2" ]
lvm.conf 파일이 변경되어 있습니다:
cling_tag_list = [ "@A", "@B" ]
/dev/sdb1, /dev/sdc1, /dev/sdd1, /dev/sde1, /dev/sdf1, /dev/sdg1, /dev/sdh1 물리 볼륨으로 구성된 taft 볼륨 그룹을 생성합니다. 이러한 물리 볼륨은 A, B, C로 태그될 수 있습니다. 예제에서는 C 태그를 사용하지 않지만 미러 leg에 사용할 물리 볼륨을 선택하기 위해 LVM이 이러한 태그를 사용하고 있음을 보여주고 있습니다.
[root@taft-03 ~]# pvs -a -o +pv_tags /dev/sd[bcdefgh]1
PV VG Fmt Attr PSize PFree PV Tags
/dev/sdb1 taft lvm2 a- 135.66g 135.66g A
/dev/sdc1 taft lvm2 a- 135.66g 135.66g B
/dev/sdd1 taft lvm2 a- 135.66g 135.66g B
/dev/sde1 taft lvm2 a- 135.66g 135.66g C
/dev/sdf1 taft lvm2 a- 135.66g 135.66g C
/dev/sdg1 taft lvm2 a- 135.66g 135.66g A
/dev/sdh1 taft lvm2 a- 135.66g 135.66g A
taft 볼륨 그룹에서 100G 미러 볼륨을 생성합니다.
[root@taft-03 ~]# lvcreate -m 1 -n mirror --nosync -L 100G taft
[root@taft-03 ~]# lvs -a -o +devices
LV VG Attr LSize Log Copy% Devices
mirror taft Mwi-a- 100.00g mirror_mlog 100.00
mirror_mimage_0(0),mirror_mimage_1(0)
[mirror_mimage_0] taft iwi-ao 100.00g /dev/sdb1(0)
[mirror_mimage_1] taft iwi-ao 100.00g /dev/sdc1(0)
[mirror_mlog] taft lwi-ao 4.00m /dev/sdh1(0)
cling 할당 정책을 사용하여 미러 볼륨의 크기를 확장합니다.
[root@taft-03 ~]# lvextend --alloc cling -L +100G taft/mirror
Extending 2 mirror images.
Extending logical volume mirror to 200.00 GiB
Logical volume mirror successfully resized
C 태그를 갖는 물리 볼륨은 무시되는 점에 유의하십시오.
[root@taft-03 ~]# lvs -a -o +devices
LV VG Attr LSize Log Copy% Devices
mirror taft Mwi-a- 200.00g mirror_mlog 50.16
mirror_mimage_0(0),mirror_mimage_1(0)
[mirror_mimage_0] taft Iwi-ao 200.00g /dev/sdb1(0)
[mirror_mimage_0] taft Iwi-ao 200.00g /dev/sdg1(0)
[mirror_mimage_1] taft Iwi-ao 200.00g /dev/sdc1(0)
[mirror_mimage_1] taft Iwi-ao 200.00g /dev/sdd1(0)
[mirror_mlog] taft lwi-ao 4.00m /dev/sdh1(0)
4.4.13. 논리 볼륨 축소하기
lvreduce 명령을 사용하여 볼륨을 축소할 수 있습니다. 볼륨을 축소한 후 파일 시스템을 다시 마운트합니다.
주의
vg00 볼륨 그룹에 있는 lvol1 논리 볼륨을 크기를 3 개의 논리 익스텐트로 축소하고 있습니다.
lvreduce -l -3 vg00/lvol1
4.5. 필터로 LVM 장치 스캔 제어
vgscan 명령이 실행되어 LVM 레이블을 찾아 시스템에 있는 블록 장치를 스캔하고, 이중 어떤 것이 물리 볼륨인지를 확인하며 메타데이터를 읽고 볼륨 그룹 목록을 작성합니다. 물리 볼륨 명은 시스템에 있는 각 노드의 캐시 파일 /etc/lvm/.cache에 저장됩니다. 그 후의 명령은 파일을 읽어 다시 스캔되지 않도록 합니다.
lvm.conf 설정 파일에서 필터를 설정하여 어떤 LVM 장치가 스캔하게 할 지를 제어할 수 있습니다. lvm.conf파일에 있는 필터는 /dev 디렉토리에 있는 장치 이름에 적용하기 위해 일련의 간단한 정규 표현식으로 되어 있어 스캔하여 발견한 각각의 블록 장치를 허용할 지 또는 거부할 지를 결정합니다.
a/loop/는 a/.*loop.*/ 와 동일하고 /dev/solooperation/lvol1과 일치될 수 있습니다.
filter = [ "a/.*/" ]
filter = [ "r|/dev/cdrom|" ]
filter = [ "a/loop.*/", "r/.*/" ]
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|" ]
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
4.6. 온라인 데이터 재배치
pvmove 명령을 사용하고 있는 동안 데이터를 이동시킬 수 있습니다.
pvmove 명령으로 데이터를 나누어 섹션으로 이동시키고 각각의 섹션을 이동시키기 위해 임시 미러를 생성합니다. pvmove 명령 실행에 관한 내용은 pvmove(8) 맨 페이지를 참조하시기 바랍니다.
/dev/sdc1에 할당된 모든 공간을 볼륨 그룹에 있는 물리 볼륨의 여유 공간으로 옮깁니다.
pvmove /dev/sdc1
MyLV 논리 볼륨의 익스텐트를 이동시킵니다.
pvmove -n MyLV /dev/sdc1
pvmove 명령이 실행하는 데 시간이 오래 걸릴 수 있으므로, 포그라운드에서의 진행 상태를 볼 수 없게 백그라운드에서 명령을 실행할 수 있습니다. 다음의 명령으로 /dev/sdc1 물리 볼륨에 할당된 모든 익스텐트를 백그라운드에 있는 /dev/sdf1로 옮깁니다.
pvmove -b /dev/sdc1 /dev/sdf1
pvmove -i5 /dev/sdd1
4.7. 클러스터에 있는 개별적 노드에서 논리 볼륨 활성화
lvchange -aey 명령을 사용합니다. 다른 방법으로 lvchange -aly 명령을 사용하여 배타적이지는 않지만 하나의 노드에 논리 볼륨만을 활성화시킬 수 있습니다. 그 후 이를 추가 노드에서 동시에 활성화시킬 수 있습니다.
4.8. LVM 용 사용자 설정 리포트
pvs, lvs, vgs 명령으로 LVM 객체에 대한 간결하고 사용자 설정 가능한 리포트를 만들 수 있습니다. 이러한 명령으로 생성된 리포트에는 각각의 객체에 대해 하나의 행으로된 출력 결과가 포함되어 있습니다. 각 행에는 객체와 관련하여 영역 속성 목록이 순서대로 나열됩니다. 물리 볼륨, 볼륨 그룹, 논리 볼륨, 물리 볼륨 세그 먼트, 논리 볼륨 세그먼트로 보고할 객체를 선택합니다.
- 생성된 리포트의 포맷을 제어하기 위해 사용할 수 있는 명령 인수에 대한 요약
- 각각의 LVM 객체에 대해 선택할 수 있는 영역 목록
- 생성된 리포트를 정렬하는데 사용할 수 있는 명령 인수에 대한 요약
- 리포트 출력 결과 단위 지정을 위한 지시사항
4.8.1. 포맷 제어
pvs, lvs 또는 vgs 명령을 사용할 지는 영역 보기의 기본 설정 및 정렬 순서에 의해 결정됩니다. 다음과 같은 인수로 이러한 명령의 출력 결과를 제어할 수 있습니다:
-o인수를 사용하여 기본값 이외에 표시 영역에 있는 것을 다른 것으로 변경할 수 있습니다. 예를 들어 다음과 같은 출력 결과는pvs명령에 대해 기본값이 나타납니다 (물리 볼륨에 관한 정보를 보여줌).#
pvsPV VG Fmt Attr PSize PFree /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G다음의 명령은 물리 볼륨 이름 및 크기 만이 나타나게 합니다.#
pvs -o pv_name,pv_sizePV PSize /dev/sdb1 17.14G /dev/sdc1 17.14G /dev/sdd1 17.14G- 덧샘 기호 (+)와 함께 출력 결과에 영역을 추가할 수 있습니다. 이는 -o 인수와 함께 사용됩니다.다음의 예에서는 기본 영역에 더하여 물리 볼륨의 UUID를 보여주고 있습니다.
#
pvs -o +pv_uuidPV VG Fmt Attr PSize PFree PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G Joqlch-yWSj-kuEn-IdwM-01S9-X08M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-UqkCS - 명령에
-v인수를 추가하는 것에는 몇몇 추가 영역이 포함됩니다. 예를 들어,pvs -v명령은 기본 영역에 더하여DevSize및PV UUID영역을 보여주고 있습니다.#
pvs -vScanning for physical volume names PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCS --noheadings인수는 헤드 라인을 삭제합니다. 이는 스크립트를 작성할 경우 유용할 수 있습니다.다음의 예에서는pv_name인수와 함께--noheadings인수를 사용하고 있습니다. 이는 모든 물리 볼륨 목록을 생성하게 됩니다.#
pvs --noheadings -o pv_name/dev/sdb1 /dev/sdc1 /dev/sdd1--separator separator인수는 separator를 사용하여 각각의 영역을 구분합니다.다음의 예에서는 등호 (=)로pvs명령의 기본 출력 결과 란을 구분하고 있습니다.#
pvs --separator =PV=VG=Fmt=Attr=PSize=PFree /dev/sdb1=new_vg=lvm2=a-=17.14G=17.14G /dev/sdc1=new_vg=lvm2=a-=17.14G=17.09G /dev/sdd1=new_vg=lvm2=a-=17.14G=17.14Gseparator인수를 사용할 때 출력 결과 란을 정렬하기 위해,--aligned인수와 관련하여separator인수를 사용합니다.#
pvs --separator = --alignedPV =VG =Fmt =Attr=PSize =PFree /dev/sdb1 =new_vg=lvm2=a- =17.14G=17.14G /dev/sdc1 =new_vg=lvm2=a- =17.14G=17.09G /dev/sdd1 =new_vg=lvm2=a- =17.14G=17.14G
lvs 또는 vgs 명령의 -P 인수를 사용하여 출력 결과에 나타나지 않는 실패한 볼륨에 관한 정보를 볼 수 있습니다. 이러한 인수 영역의 출력 결과에 대한 내용은 6.2절. “실패한 장치에 있는 정보 보기 ”에서 참조하시기 바랍니다.
pvs(8), vgs(8), lvs(8) 맨 페이지에서 참조하시기 바랍니다.
# vgs -o +pv_name
VG #PV #LV #SN Attr VSize VFree PV
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdc1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdd1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdb1
4.8.2. 객체 선택
pvs, vgs, lvs 명령과 함께 LVM 객체에 관한 정보를 나열한 표가 있습니다.
pvs 명령에서, name은 pv_name을 의미하며, vgs 명령에서는 name은 vg_name을 의미합니다.
pvs -o pv_free 명령을 실행하는 것과 동일합니다.
# pvs -o +free
PFree
17.14G
17.09G
17.14G
4.8.2.1. pvs 명령
pvs 명령의 디스플레이 인수가 나열되어 있습니다.
표 4.1. pvs 표시 영역
| 인수 | 헤더 | 설명 |
|---|---|---|
dev_size | DevSize | 물리 볼륨이 생성된 기본적인 장치의 크기 |
pe_start | 1st PE | 기본 장치에서 첫 번째 물리 익스텐트의 시작으로의 오프셋 |
pv_attr | Attr | 물리 볼륨 상태: 할당 가능(a) 또는 내보내어짐(X) |
pv_fmt | Fmt | 물리 볼륨의 메타데이터 포맷 (lvm2 또는 lvm1) |
pv_free | PFree | 물리 볼륨에 남아있는 여유 공간 |
pv_name | PV | 물리 볼륨명 |
pv_pe_alloc_count | Alloc | 사용된 물리 익스텐트 수 |
pv_pe_count | PE | 물리 익스텐트 수 |
pvseg_size | SSize | 물리 볼륨의 세그먼트 크기 |
pvseg_start | Start | 물리 볼륨 세그먼트의 물리 익스텐트 시작 |
pv_size | PSize | 물리 볼륨의 크기 |
pv_tags | PV Tags | 물리 볼륨에 부착된 LVM 태그 |
pv_used | Used | 현재 물리 볼륨에서 사용되는 공간 |
pv_uuid | PV UUID | 물리 볼륨의 UUID |
pvs 명령으로 pv_name, vg_name, pv_fmt, pv_attr, pv_size, pv_free 영역의 기본값을 볼 수 있습니다. 이는 pv_name에 의해 정렬됩니다.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G
pvs 명령과 함께 -v 인수를 사용하여 기본값 영역 보기에 dev_size, pv_uuid 영역을 추가합니다.
# pvs -v
Scanning for physical volume names
PV VG Fmt Attr PSize PFree DevSize PV UUID
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCS
pvs 명령의 --segments 인수를 사용할 수 있습니다. 세그먼트는 익스텐트 그룹입니다. 세그먼트 보기는 논리 볼륨이 나뉘어졌는 지를 확인하는데 유용합니다.
pvs --segments 명령으로 pv_name, vg_name, pv_fmt, pv_attr, pv_size, pv_free, pvseg_start, pvseg_size 영역의 기본값을 볼 수 있습니다. 이는 물리 볼륨에서 pv_name 및 pvseg_size에 의해 정렬됩니다.
# pvs --segments
PV VG Fmt Attr PSize PFree Start SSize
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 0 1172
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1172 16
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1188 1
/dev/sda1 vg lvm2 a- 17.14G 16.75G 0 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 26 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 50 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 76 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 100 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 126 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 150 22
/dev/sda1 vg lvm2 a- 17.14G 16.75G 172 4217
/dev/sdb1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdc1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdd1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sde1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdf1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdg1 vg lvm2 a- 17.14G 17.14G 0 4389
pvs -a 명령을 사용할 수 있습니다.
# pvs -a
PV VG Fmt Attr PSize PFree
/dev/VolGroup00/LogVol01 -- 0 0
/dev/new_vg/lvol0 -- 0 0
/dev/ram -- 0 0
/dev/ram0 -- 0 0
/dev/ram2 -- 0 0
/dev/ram3 -- 0 0
/dev/ram4 -- 0 0
/dev/ram5 -- 0 0
/dev/ram6 -- 0 0
/dev/root -- 0 0
/dev/sda -- 0 0
/dev/sdb -- 0 0
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc -- 0 0
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd -- 0 0
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14G
4.8.2.2. vgs 명령
vgs 명령의 디스플레이 인수가 나열되어 있습니다.
표 4.2. vgs 표시 영역
| 인수 | 헤더 | 설명 |
|---|---|---|
lv_count | #LV | 볼륨 그룹이 있는 논리 볼륨 수 |
max_lv | MaxLV | 볼륨 그룹에서 허용하는 최대 논리 볼륨 수 (무제한일 경우 0) |
max_pv | MaxPV | 볼륨 그룹에서 허용하는 최대 물리 볼륨 수 (무제한일 경우 0) |
pv_count | #PV | 볼륨 그룹을 지정하는 물리 볼륨 수 |
snap_count | #SN | 볼륨 그룹에 있는 스냅샷 수 |
vg_attr | Attr | 볼륨 그룹의 상태: 쓰기 가능(w), 읽기 전용(r), 크기 조정 가능(z), 내보내어짐(x), 부분(p), 클러스터됨(c). |
vg_extent_count | #Ext | 볼륨 그룹에서 물리 익스텐트 수 |
vg_extent_size | Ext | 볼륨 그룹에서 물리 익스텐트 크기 |
vg_fmt | Fmt | 볼륨 그룹의 메타데이터 포맷 (lvm2 또는 lvm1) |
vg_free | VFree | 볼륨 그룹에 남아있는 여유 공간 크기 |
vg_free_count | Free | 볼륨 그룹에 있는 여유 물리 익스텐트 수 |
vg_name | VG | 볼륨 그룹명 |
vg_seqno | Seq | 볼륨 그룹 버전을 나타내는 번호 |
vg_size | VSize | 볼륨 그룹의 크기 |
vg_sysid | SYS ID | LVM1 시스템 ID |
vg_tags | VG Tags | 볼륨 그룹에 부착된 LVM 태그 |
vg_uuid | VG UUID | 볼륨 그룹의 UUID |
vgs 명령으로 vg_name, pv_count, lv_count, snap_count, vg_attr, vg_size, vg_free 영역의 기본값을 볼 수 있습니다. 이는 vg_name에 의해 정렬됩니다.
# vgs
VG #PV #LV #SN Attr VSize VFree
new_vg 3 1 1 wz--n- 51.42G 51.36G
vgs 명령과 함께 -v 인수를 사용하여 기본값 영역 보기에 vg_extent_size, vg_uuid 영역을 추가합니다.
# vgs -v
Finding all volume groups
Finding volume group "new_vg"
VG Attr Ext #PV #LV #SN VSize VFree VG UUID
new_vg wz--n- 4.00M 3 1 1 51.42G 51.36G jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32
4.8.2.3. lvs 명령
lvs 명령의 디스플레이 인수가 나열되어 있습니다.
표 4.3. lvs 표시 영역
| 인수 | 헤더 | 설명 | ||||||
|---|---|---|---|---|---|---|---|---|
| Chunk | 스냅샷 볼륨에서 단위 크기 | ||||||
copy_percent | Copy% | 미러 논리 볼륨의 동기화 퍼센트: 물리 익스텐트가 pv_move 명령과 함께 이동할 경우 사용 | ||||||
devices | Devices | 논리 볼륨을 만드는 기본 장치: 물리 볼륨, 논리 볼륨, 물리 익스텐트 및 논리 익스텐트 시작 | ||||||
lv_attr | Attr | 논리 볼륨의 상태. 논리 볼륨 비트 속성은 다음과 같습니다:
| ||||||
lv_kernel_major | KMaj | 논리 볼륨의 실제 주 장치 번호 (비활성 상태일 경우 -1) | ||||||
lv_kernel_minor | KMIN | 논리 볼륨의 실제 부 장치 번호 (비활성 상태일 경우 -1) | ||||||
lv_major | Maj | 논리 볼륨의 영구 주 장치 번호 (지정되지 않았을 경우 -1로 됨) | ||||||
lv_minor | Min | 논리 볼륨의 영구 부 장치 번호 (지정되지 않았을 경우 -1로 됨) | ||||||
lv_name | LV | 논리 볼륨 이름 | ||||||
lv_size | LSize | 논리 볼륨 크기 | ||||||
lv_tags | LV Tags | 논리 볼륨에 부착된 LVM 태그 | ||||||
lv_uuid | LV UUID | 논리 볼륨의 UUID | ||||||
mirror_log | Log | 미러 로그가 있는 장치 | ||||||
modules | Modules | 논리 볼륨을 사용하기 위해 알맞은 커널 장치 매퍼 대상 필요 | ||||||
move_pv | Move | pvmove 명령으로 생성된 임시적 논리 볼륨의 물리 볼륨 소스 | ||||||
origin | Origin | 스냅샷 볼륨의 초기 장치 | ||||||
| Region | 미러 논리 볼륨의 단위 크기 | ||||||
seg_count | #Seg | 논리 볼륨에서 세그먼트의 수 | ||||||
seg_size | SSize | 논리 볼륨에서 세그먼트의 크기 | ||||||
seg_start | Start | 논리 볼륨에서 세그먼트의 오프셋 | ||||||
seg_tags | Seg Tags | 논리 볼륨의 세그먼트에 부착된 LVM 태그 | ||||||
segtype | Type | 논리 볼륨의 세그먼트 유형 (예: 미러, 스트라이프, 선형) | ||||||
snap_percent | Snap% | 사용되고 있는 스냅샷 볼륨의 퍼센트 | ||||||
stripes | #Str | 논리 볼륨에서 스트라이프 또는 미러 수 | ||||||
| Stripe | 스트라이프 논리 볼륨에서 스트라이트의 단위 크기 |
lvs 명령으로 lv_name, vg_name, lv_attr, lv_size, origin, snap_percent, move_pv, mirror_log, copy_percent 영역의 기본값을 볼 수 있습니다. 이는 기본값으로 볼륨 그룹과 함께 vg_name 및 lv_name에 의해 정렬됩니다.
# 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 명령과 함께 -v 인수를 사용하여 기본값 영역 보기에 seg_count, lv_major, lv_minor, lv_kernel_major, lv_kernel_minor, lv_uuid영역을 추가합니다.
# lvs -v
Finding all logical volumes
LV VG #Seg Attr LSize Maj Min KMaj KMin Origin Snap% Move Copy% Log LV UUID
lvol0 new_vg 1 owi-a- 52.00M -1 -1 253 3 LBy1Tz-sr23-OjsI-LT03-nHLC-y8XW-EhCl78
newvgsnap1 new_vg 1 swi-a- 8.00M -1 -1 253 5 lvol0 0.20 1ye1OU-1cIu-o79k-20h2-ZGF0-qCJm-CfbsIx
lvs 명령의 --segments 인수를 사용하여 세그먼트 정보에 중점을 둔 기본값 정보를 볼 수 있습니다. segments 인수를 사용할 때, seg 접두부는 옵션값입니다. lvs --segments 명령으로 lv_name, vg_name, lv_attr, stripes, segtype, seg_size 영역의 기본값을 볼 수 있습니다. 이는 기본값으로 볼륨 그룹 내에서 vg_name, lv_name에 의해 정렬되고, 논리 볼륨 내에서는 seg_start에 의해 정렬됩니다. 논리 볼륨이 분리된 경우, 명령의 출력 결과가 이를 보여줍니다.
# lvs --segments
LV VG Attr #Str Type SSize
LogVol00 VolGroup00 -wi-ao 1 linear 36.62G
LogVol01 VolGroup00 -wi-ao 1 linear 512.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 88.00M
lvs --segments 명령과 함께 -v 인수를 사용하여 기본값 영역 보기에 seg_start, stripesize, chunksize 영역을 추가합니다.
# lvs -v --segments
Finding all logical volumes
LV VG Attr Start SSize #Str Type Stripe Chunk
lvol0 new_vg owi-a- 0 52.00M 1 linear 0 0
newvgsnap1 new_vg swi-a- 0 8.00M 1 linear 0 8.00K
lvs 명령의 기본 출력값을 보여주고 있으며, 다음으로 segments 인수와 함께 lvs 명령의 기본 출력값을 보여주고 있습니다.
#lvsLV VG Attr LSize Origin Snap% Move Log Copy% lvol0 new_vg -wi-a- 52.00M #lvs --segmentsLV VG Attr #Str Type SSize lvol0 new_vg -wi-a- 1 linear 52.00M
4.8.3. LVM 리포트 정렬
lvs, vgs, pvs 명령의 출력 결과가 올바르게 정렬되기 이전에 이를 내부적으로 저장해야 합니다. --unbuffered 인수를 지정하여 결과가 출력되자 마자 정렬되지 않은 출력 결과 보기를 할 수 있습니다.
-O 인수를 사용합니다. 출력 결과 자체에 이러한 영역을 포함시킬 필요는 없습니다.
pvs 명령의 출력 결과를 보여주고 있습니다.
# pvs -o pv_name,pv_size,pv_free
PV PSize PFree
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
# pvs -o pv_name,pv_size,pv_free -O pv_free
PV PSize PFree
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
# pvs -o pv_name,pv_size -O pv_free
PV PSize
/dev/sdc1 17.14G
/dev/sdd1 17.14G
/dev/sdb1 17.14G
-와 함께 -O 인수 뒤에 지정한 부분이 선행되어야 합니다.
# pvs -o pv_name,pv_size,pv_free -O -pv_free
PV PSize PFree
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G
4.8.4. 단위 지정
--units 인수를 사용합니다. 바이트 (b), 킬로바이트 (k), 메가바이트 (m), 기가바이트 (g), 테라바이트(t), 엑사바이트(e), 페터바이트(p), 인간 판독 가능(h) 등을 지정할 수 있습니다. lvm.conf 파일의 global 섹션에서 units 매개 변수를 지정하여 기본값을 덮어쓰기할 수 있습니다.
pvs 명령의 출력 결과를 보여주고 있습니다.
# pvs --units m
PV VG Fmt Attr PSize PFree
/dev/sda1 lvm2 -- 17555.40M 17555.40M
/dev/sdb1 new_vg lvm2 a- 17552.00M 17552.00M
/dev/sdc1 new_vg lvm2 a- 17552.00M 17500.00M
/dev/sdd1 new_vg lvm2 a- 17552.00M 17552.00M
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14G
# pvs --units G
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 18.40G 18.40G
/dev/sdc1 new_vg lvm2 a- 18.40G 18.35G
/dev/sdd1 new_vg lvm2 a- 18.40G 18.40G
pvs 명령의 출력 결과를 보여주고 있습니다.
# pvs --units s
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 35946496S 35946496S
/dev/sdc1 new_vg lvm2 a- 35946496S 35840000S
/dev/sdd1 new_vg lvm2 a- 35946496S 35946496S
pvs 명령의 출력 결과를 보여주고 있습니다.
# pvs --units 4m
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 4388.00U 4388.00U
/dev/sdc1 new_vg lvm2 a- 4388.00U 4375.00U
/dev/sdd1 new_vg lvm2 a- 4388.00U 4388.00U
5장. LVM 설정 예
5.1. 세 개의 디스크에 LVM 논리 볼륨 생성
/dev/sda1, /dev/sdb1, /dev/sdc1에 있는 디스크로 구성된 new_logical_volume이라는 LVM 논리 볼륨을 생성합니다.
5.1.1. 물리 볼륨 생성
주의
/dev/sda1, /dev/sdb1, /dev/sdc1에 있는 데이터를 삭제합니다.
[root@tng3-1 ~]# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
Physical volume "/dev/sda1" successfully created
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
5.1.2. 볼륨 그룹 생성
new_vol_group 볼륨 그룹을 생성합니다.
[root@tng3-1 ~]# vgcreate new_vol_group /dev/sda1 /dev/sdb1 /dev/sdc1
Volume group "new_vol_group" successfully created
vgs 명령을 사용할 수 있습니다.
[root@tng3-1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
new_vol_group 3 0 0 wz--n- 51.45G 51.45G
5.1.3. 논리 볼륨 생성
new_vol_group 볼륨 그룹에서 new_logical_volume 논리 볼륨을 생성합니다. 예에서는 볼륨 그룹의 2GB를 사용하여 논리 볼륨을 생성합니다.
[root@tng3-1 ~]# lvcreate -L2G -n new_logical_volume new_vol_group
Logical volume "new_logical_volume" created
5.1.4. 파일 시스템 생성
[root@tng3-1 ~]#mkfs.gfs2 -plock_nolock -j 1 /dev/new_vol_group/new_logical_volumeThis will destroy any data on /dev/new_vol_group/new_logical_volume. Are you sure you want to proceed? [y/n]yDevice: /dev/new_vol_group/new_logical_volume Blocksize: 4096 Filesystem Size: 491460 Journals: 1 Resource Groups: 8 Locking Protocol: lock_nolock Lock Table: Syncing... All Done
[root@tng3-1 ~]#mount /dev/new_vol_group/new_logical_volume /mnt[root@tng3-1 ~]#dfFilesystem 1K-blocks Used Available Use% Mounted on /dev/new_vol_group/new_logical_volume 1965840 20 1965820 1% /mnt
5.2. 스트라이프 (Striped) 논리 볼륨 생성
/dev/sda1, /dev/sdb1, /dev/sdc1에 있는 디스크의 데이터를 스트라이프로 나누는 striped_logical_volume이라는 LVM 스트라이프 논리 볼륨을 생성합니다.
5.2.1. 물리 볼륨 생성
주의
/dev/sda1, /dev/sdb1, /dev/sdc1에 있는 데이터를 삭제합니다.
[root@tng3-1 ~]# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
Physical volume "/dev/sda1" successfully created
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
5.2.2. 볼륨 그룹 생성
volgroup01 볼륨 그룹을 생성합니다.
[root@tng3-1 ~]# vgcreate volgroup01 /dev/sda1 /dev/sdb1 /dev/sdc1
Volume group "volgroup01" successfully created
vgs 명령을 사용할 수 있습니다.
[root@tng3-1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
volgroup01 3 0 0 wz--n- 51.45G 51.45G
5.2.3. 논리 볼륨 생성
volgroup01 볼륨 그룹에서 striped_logical_volume 스트라이프 논리 볼륨을 생성합니다. 예에서는 3개의 스트라이프 및 4 KB의 스트라이프 한 개와 함께 2 GB의 논리 볼륨을 생성하고 있습니다.
[root@tng3-1 ~]# lvcreate -i3 -I4 -L2G -nstriped_logical_volume volgroup01
Rounding size (512 extents) up to stripe boundary size (513 extents)
Logical volume "striped_logical_volume" created
5.2.4. 파일 시스템 생성
[root@tng3-1 ~]#mkfs.gfs2 -plock_nolock -j 1 /dev/volgroup01/striped_logical_volumeThis will destroy any data on /dev/volgroup01/striped_logical_volume. Are you sure you want to proceed? [y/n]yDevice: /dev/volgroup01/striped_logical_volume Blocksize: 4096 Filesystem Size: 492484 Journals: 1 Resource Groups: 8 Locking Protocol: lock_nolock Lock Table: Syncing... All Done
[root@tng3-1 ~]#mount /dev/volgroup01/striped_logical_volume /mnt[root@tng3-1 ~]#dfFilesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 13902624 1656776 11528232 13% / /dev/hda1 101086 10787 85080 12% /boot tmpfs 127880 0 127880 0% /dev/shm /dev/volgroup01/striped_logical_volume 1969936 20 1969916 1% /mnt
5.3. 볼륨 그룹 나누기
mylv 논리 볼륨은 /dev/sda1, /dev/sdb1, /dev/sdc1이라는 세 개의 물리 볼륨으로 구성된 myvol 볼륨 그룹에서 생성됩니다.
myvg 볼륨 그룹은 /dev/sda1 및 /dev/sdb1로 구성됩니다. 두 번째 볼륨 그룹인 yourvg는 /dev/sdc1로 구성됩니다.
5.3.1. 여유 공간 지정
pvscan 명령으로 현재 볼륨 그룹에서 사용할 수 있는 여유 공간 크기를 지정할 수 있습니다.
[root@tng3-1 ~]# pvscan
PV /dev/sda1 VG myvg lvm2 [17.15 GB / 0 free]
PV /dev/sdb1 VG myvg lvm2 [17.15 GB / 12.15 GB free]
PV /dev/sdc1 VG myvg lvm2 [17.15 GB / 15.80 GB free]
Total: 3 [51.45 GB] / in use: 3 [51.45 GB] / in no VG: 0 [0 ]
5.3.2. 데이터 이동
/dev/sdc1에서 사용된 모든 물리 익스텐트를 pvmove 명령을 사용하여 /dev/sdb1로 옮길 수 있습니다. pvmove 명령이 실행되는 데 시간이 오래 걸릴 수 도 있습니다.
[root@tng3-1 ~]# pvmove /dev/sdc1 /dev/sdb1
/dev/sdc1: Moved: 14.7%
/dev/sdc1: Moved: 30.3%
/dev/sdc1: Moved: 45.7%
/dev/sdc1: Moved: 61.0%
/dev/sdc1: Moved: 76.6%
/dev/sdc1: Moved: 92.2%
/dev/sdc1: Moved: 100.0%
/dev/sdc1에 있는 모든 여유 공간을 확인할 수 있습니다.
[root@tng3-1 ~]# pvscan
PV /dev/sda1 VG myvg lvm2 [17.15 GB / 0 free]
PV /dev/sdb1 VG myvg lvm2 [17.15 GB / 10.80 GB free]
PV /dev/sdc1 VG myvg lvm2 [17.15 GB / 17.15 GB free]
Total: 3 [51.45 GB] / in use: 3 [51.45 GB] / in no VG: 0 [0 ]
5.3.3. 볼륨 그룹 나누기
yourvg를 생성하려면, vgsplit 명령을 사용하여 myvg 볼륨 그룹을 나눕니다.
lvchange 명령이나 또는 vgchange 명령을 사용하여 논리 볼륨을 비활성화시킬 수 있습니다. 다음의 명령에서는 mylv 논리 볼륨을 비활성화하고 myvg 볼륨 그룹에서 yourvg 볼륨 그룹을 나눈 뒤, /dev/sdc1 물리 볼륨을 새 볼륨 그룹 yourvg로 옮기고 있습니다.
[root@tng3-1 ~]#lvchange -a n /dev/myvg/mylv[root@tng3-1 ~]#vgsplit myvg yourvg /dev/sdc1Volume group "yourvg" successfully split from "myvg"
vgs 명령을 사용하여 두 개의 볼륨 그룹의 속성을 확인할 수 있습니다.
[root@tng3-1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 34.30G 10.80G
yourvg 1 0 0 wz--n- 17.15G 17.15G
5.3.4. 새 논리 볼륨 생성
yourlv를 생성할 수 있습니다.
[root@tng3-1 ~]# lvcreate -L5G -n yourlv yourvg
Logical volume "yourlv" created
5.3.5. 파일 시스템 생성 및 새로운 논리 볼륨 마운트하기
[root@tng3-1 ~]#mkfs.gfs2 -plock_nolock -j 1 /dev/yourvg/yourlvThis will destroy any data on /dev/yourvg/yourlv. Are you sure you want to proceed? [y/n]yDevice: /dev/yourvg/yourlv Blocksize: 4096 Filesystem Size: 1277816 Journals: 1 Resource Groups: 20 Locking Protocol: lock_nolock Lock Table: Syncing... All Done [root@tng3-1 ~]#mount /dev/yourvg/yourlv /mnt
5.3.6. 원래의 논리 볼륨을 활성화하고 마운트하기
mylv 논리 볼륨을 비활성화시켰을 경우, 마운트하기 전 이를 다시 활성화시켜야 합니다.
root@tng3-1 ~]#lvchange -a y mylv[root@tng3-1 ~]#mount /dev/myvg/mylv /mnt[root@tng3-1 ~]#dfFilesystem 1K-blocks Used Available Use% Mounted on /dev/yourvg/yourlv 24507776 32 24507744 1% /mnt /dev/myvg/mylv 24507776 32 24507744 1% /mnt
5.4. 논리 볼륨에서 디스크 삭제하기
5.4.1. 기존의 물리 볼륨으로 익스텐트 옮기기
myvg 볼륨 그룹에 있는 네 개의 물리 볼륨으로 할당됩니다.
[root@tng3-1]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdb1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00G
/dev/sdb1의 익스텐트를 삭제하고자 할 경우, 이를 볼륨 그룹에서 삭제할 수 있습니다.
pvmove 명령을 실행하면 익스텐트는 다른 장치로 할당됩니다.
[root@tng3-1 ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 2.0%
...
/dev/sdb1: Moved: 79.2%
...
/dev/sdb1: Moved: 100.0%
pvmove 명령을 실행 완료하면, 익스텐트는 다음과 같이 분배됩니다:
[root@tng3-1]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00G
vgreduce 명령을 사용하여 볼륨 그룹에서의 /dev/sdb1 물리 볼륨을 삭제합니다.
[root@tng3-1 ~]# vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"
[root@tng3-1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 myvg lvm2 a- 17.15G 7.15G
/dev/sdb1 lvm2 -- 17.15G 17.15G
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G
5.4.2. 새 디스크로 익스텐트 옮기기
myvg 볼륨 그룹에 있는 세 개의 물리 볼륨으로 할당되며 이는 다음과 같습니다:
[root@tng3-1]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdb1의 익스텐트를 새 장치 /dev/sdd1로 옮기려 합니다.
5.4.2.1. 새 물리 볼륨 생성하기
/dev/sdd1에서 새 물리 볼륨을 생성합니다.
[root@tng3-1 ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created
5.4.2.2. 새 물리 볼륨을 볼륨 그룹에 추가하기
myvg 볼륨 그룹에 /dev/sdd1을 추가합니다.
[root@tng3-1 ~]#vgextend myvg /dev/sdd1Volume group "myvg" successfully extended [root@tng3-1]#pvs -o+pv_usedPV VG Fmt Attr PSize PFree Used /dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G /dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdd1 myvg lvm2 a- 17.15G 17.15G 0
5.4.2.3. 데이터 이동
pvmove 명령을 사용하여 /dev/sdb1에서 /dev/sdd1로 데이터를 이동합니다.
[root@tng3-1 ~]#pvmove /dev/sdb1 /dev/sdd1/dev/sdb1: Moved: 10.0% ... /dev/sdb1: Moved: 79.7% ... /dev/sdb1: Moved: 100.0% [root@tng3-1]#pvs -o+pv_usedPV VG Fmt Attr PSize PFree Used /dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G /dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0 /dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdd1 myvg lvm2 a- 17.15G 15.15G 2.00G
5.4.2.4. 볼륨 그룹에서 기존의 물리 볼륨을 삭제하기
/dev/sdb1의 데이터를 삭제한 후에, 볼륨 그룹에서 이를 삭제할 수 있습니다.
[root@tng3-1 ~]# vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"
5.5. 클러스터에 미러 LVM 논리 볼륨 생성
lvm.conf 파일에 있는 잠금 유형은 클러스터 잠금 기능을 활성화하기 위해 3.1절. “클러스터에 LVM 볼륨 생성 ”에 설명되어 있듯이 직접적으로 또는 lvmconf 명령을 실행하여 올바르게 설정되어 있어야 합니다.
- 클러스터에 있는 모든 노드에 의해 공유되는 미러 논리 볼륨을 생성하기 위해 잠금 기능 유형은 클러스터의 모든 노드에 있는
lvm.conf에 올바르게 설정되어 있어야 합니다. 기본값으로 잠금 기능 유형은 로컬에 설정되어 있습니다. 이를 변경하려면, 클러스터의 각 노드에서 다음과 같은 명령을 실행하여 클러스터 잠금 기능을 활성화합니다:#
/sbin/lvmconf --enable-cluster - 클러스터 논리 볼륨을 생성하려면, 클러스터 인프라가 반드시 설정되어 있어야 하고 클러스터에 있는 모든 노드에서 실행되고 있어야 합니다. 다음의 예에서는 문제가 발생했던 노드에서
clvmd데몬이 실행되고 있는지를 확인합니다:[root@doc-07 ~]#
ps auxw | grep clvmdroot 17642 0.0 0.1 32164 1072 ? Ssl Apr06 0:00 clvmd -T20 -t 90다음 명령으로 클러스터의 로컬 상태 보기를 합니다:[root@example-01 ~]#
cman_tool servicesfence domain member count 3 victim count 0 victim now 0 master nodeid 2 wait state none members 1 2 3 dlm lockspaces name clvmd id 0x4104eefa flags 0x00000000 change member 3 joined 1 remove 0 failed 0 seq 1,1 members 1 2 3 cmirror패키지가 설치되었는지를 확인합니다.cmirrord서비스를 시작합니다.[root@hexample-01 ~]#
service cmirrord startStarting cmirrord: [ OK ]- 미러를 생성합니다. 먼저 물리 볼륨을 생성합니다. 다음 명령으로 세 개의 물리 볼륨을 생성합니다. 물리 볼륨 중 두 개는 미러의 leg로 사용되며 세번째 물리 볼륨에는 미러 로그가 들어 있게 됩니다.
[root@doc-07 ~]#
pvcreate /dev/xvdb1Physical volume "/dev/xvdb1" successfully created [root@doc-07 ~]#pvcreate /dev/xvdb2Physical volume "/dev/xvdb2" successfully created [root@doc-07 ~]#pvcreate /dev/xvdc1Physical volume "/dev/xvdc1" successfully created - 볼륨 그룹을 생성합니다. 다음 예에서는 이전 단계에서 생성된 세 개의 물리 볼륨으로 구성된
vg001볼륨 그룹을 생성합니다.[root@doc-07 ~]#
vgcreate vg001 /dev/xvdb1 /dev/xvdb2 /dev/xvdc1Clustered volume group "vg001" successfully createdvgcreate명령 출력 결과에서는 볼륨 그룹이 클러스터됨을 가리킴에 유의합니다. 볼륨 그룹이vgs명령으로 클러스터됨을 확인할 수 있습니다. 이러한 명령은 볼륨 그룹의 속성을 표시합니다. 볼륨 그룹이 클러스터될 경우 이는 c 속성이 표시됩니다.[root@doc-07 ~]#
vgs vg001VG #PV #LV #SN Attr VSize VFree vg001 3 0 0 wz--nc 68.97G 68.97G - 미러 논리 볼륨을 생성합니다. 예에서는
vg001볼륨 그룹에서mirrorlv논리 볼륨을 생성하고 있습니다. 이 볼륨은 하나의 미러 leg를 갖습니다. 예에서는 논리 볼륨에 어떤 물리 볼륨 익스텐트를 사용할 지를 지정하고 있습니다.[root@doc-07 ~]#
lvcreate -l 1000 -m1 vg001 -n mirrorlv /dev/xvdb1:1-1000 /dev/xvdb2:1-1000 /dev/xvdc1:0Logical volume "mirrorlv" createdlvs명령을 사용하여 미러 생성 진행 상태를 확인할 수 있습니다. 다음의 예에서는 미러가 완료되었을 때 47%에서 91%로 그리고 100%까지 동기화되는 상태를 보여주고 있습니다.[root@doc-07 log]#
lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 47.00 [root@doc-07 log]#lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 91.00 [root@doc-07 ~]#lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 100.00미러 완료 상태는 시스템 로그에 기록됩니다:May 10 14:52:52 doc-07 [19402]: Monitoring mirror device vg001-mirrorlv for events May 10 14:55:00 doc-07 lvm[19402]: vg001-mirrorlv is now in-sync
-o +devices옵션과 함께lvs명령을 사용하여 미러 leg를 구성하는 장치와 함께 미러 설정을 확인할 수 있습니다. 예에서는 논리 볼륨이 두개의 선형 이미지와 하나의 로그로 구성되어 있음을 확인할 수 있습니다.[root@doc-07 ~]#
lvs -a -o +devicesLV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices mirrorlv vg001 mwi-a- 3.91G mirrorlv_mlog 100.00 mirrorlv_mimage_0(0),mirrorlv_mimage_1(0) [mirrorlv_mimage_0] vg001 iwi-ao 3.91G /dev/xvdb1(1) [mirrorlv_mimage_1] vg001 iwi-ao 3.91G /dev/xvdb2(1) [mirrorlv_mlog] vg001 lwi-ao 4.00M /dev/xvdc1(0)lvs명령의seg_pe_ranges옵션을 사용하여 데이터 레이아웃을 확인할 수 있습니다. 이 옵션을 사용하여 레이아웃이 올바르게 이중화되어 있는지를 확인할 수 있습니다. 이 명령의 출력 결과에서lvcreate및lvresize명령이 입력으로 얻는 것과 동일한 형식의 PE 범위를 확인할 수 있습니다.[root@doc-07 ~]#
lvs -a -o +seg_pe_ranges --segmentsPE Ranges mirrorlv_mimage_0:0-999 mirrorlv_mimage_1:0-999 /dev/xvdb1:1-1000 /dev/xvdb2:1-1000 /dev/xvdc1:0-0
참고
6장. LVM 문제 해결
6.1. 문제 해결 진단
- 상세한 출력 결과를 얻기 위해 명령에
-v,-vv,-vvv,-vvvv인수를 사용합니다. - 논리 볼륨 활성화와 관련된 문제일 경우, 설정 파일의 '로그(log)' 섹션에서 '활성화 (activation) = 1'을 설정하고
-vvvv인수와 함께 명령을 실행합니다. 이에 대한 출력 결과를 확인한 후에 매개 변수를 0으로 다시 설정하여 메모리 부족시 잠금 상태로 인한 문제가 발생하지 않게 합니다. - 진단 목적으로 정보 덤프를 제공하는
lvmdump명령을 실행합니다. 자세한 내용은lvmdump(8) 맨 페이지에서 참조하시기 바랍니다. - 추가 시스템 정보를 위해
lvs -v,pvs -a,dmsetup info -c명령을 실행합니다. /etc/lvm/backup파일에서 메타 데이터의 마지막 백업을/etc/lvm/archive파일에서는 아카이브된 버전을 검사합니다.lvm dumpconfig명령을 실행하여 최신 설정 정보를 확인합니다.- 어떤 장치에 물리 볼륨이 있는 지에 대한 기록을 알기 위해
/etc/lvm디렉토리에서.cache파일을 확인합니다.
6.2. 실패한 장치에 있는 정보 보기
lvs 또는 vgs 명령의 -P 인수를 사용하여 출력 결과에서 나타나지 않는 실패한 볼륨에 관한 정보를 확인합니다. 이러한 인수는 메타데이터가 내부적으로 완전하게 일치하지 않아도 실행하게 합니다. 예를 들어, vg 볼륨 그룹으로된 장치 중 하나가 실패했을 경우, vgs 명령을 실행하면 다음과 같은 출력 결과가 나타납니다.
[root@link-07 tmp]# vgs -o +devices
Volume group "vg" not found
vgs 명령의 -P 인수를 지정한 경우, 볼륨 그룹은 사용 가능하지 않게되지만 실패한 장치에 관한 상세 정보를 볼 수 있습니다.
[root@link-07 tmp]# vgs -P -o +devices
Partial mode. Incomplete volume groups will be activated read-only.
VG #PV #LV #SN Attr VSize VFree Devices
vg 9 2 0 rz-pn- 2.11T 2.07T unknown device(0)
vg 9 2 0 rz-pn- 2.11T 2.07T unknown device(5120),/dev/sda1(0)
-P 인수없이 lvs 명령을 실행하면 다음과 같은 출력 결과가 나타납니다.
[root@link-07 tmp]# lvs -a -o +devices
Volume group "vg" not found
-P 인수를 사용하여 실패한 논리 볼륨을 확인합니다.
[root@link-07 tmp]# lvs -P -a -o +devices
Partial mode. Incomplete volume groups will be activated read-only.
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
linear vg -wi-a- 20.00G unknown device(0)
stripe vg -wi-a- 20.00G unknown device(5120),/dev/sda1(0)
-P 인수와 함께 사용된 pvs 및 lvs 명령에 대한 출력 결과를 보여줍니다.
root@link-08 ~]# vgs -a -o +devices -P
Partial mode. Incomplete volume groups will be activated read-only.
VG #PV #LV #SN Attr VSize VFree Devices
corey 4 4 0 rz-pnc 1.58T 1.34T my_mirror_mimage_0(0),my_mirror_mimage_1(0)
corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdd1(0)
corey 4 4 0 rz-pnc 1.58T 1.34T unknown device(0)
corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdb1(0)
[root@link-08 ~]# lvs -a -o +devices -P
Partial mode. Incomplete volume groups will be activated read-only.
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
my_mirror corey mwi-a- 120.00G my_mirror_mlog 1.95 my_mirror_mimage_0(0),my_mirror_mimage_1(0)
[my_mirror_mimage_0] corey iwi-ao 120.00G unknown device(0)
[my_mirror_mimage_1] corey iwi-ao 120.00G /dev/sdb1(0)
[my_mirror_mlog] corey lwi-ao 4.00M /dev/sdd1(0)
6.3. LVM 미러 장애 복구
mirror_log_fault_policy 매개 변수가 remove로 설정되어 있어 미러를 수동으로 다시 구축해야 하는 상태에서 복구하는 방법에 대해 설명합니다. mirror_log_fault_policy 매개 변수 설정에 대한 보다 자세한 내용은 6.3절. “LVM 미러 장애 복구 ”에서 참조하십시오.
[root@link-08 ~]# pvcreate /dev/sd[abcdefgh][12]
Physical volume "/dev/sda1" successfully created
Physical volume "/dev/sda2" successfully created
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdc2" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sdd2" successfully created
Physical volume "/dev/sde1" successfully created
Physical volume "/dev/sde2" successfully created
Physical volume "/dev/sdf1" successfully created
Physical volume "/dev/sdf2" successfully created
Physical volume "/dev/sdg1" successfully created
Physical volume "/dev/sdg2" successfully created
Physical volume "/dev/sdh1" successfully created
Physical volume "/dev/sdh2" successfully created
vg 볼륨 그룹 및 미러된 볼륨 groupfs를 생성합니다.
[root@link-08 ~]#vgcreate vg /dev/sd[abcdefgh][12]Volume group "vg" successfully created [root@link-08 ~]#lvcreate -L 750M -n groupfs -m 1 vg /dev/sda1 /dev/sdb1 /dev/sdc1Rounding up size to full physical extent 752.00 MB Logical volume "groupfs" created
lvs 명령을 사용하여 미러 볼륨의 레이아웃과 미러 leg 및 미러 로그에 대한 기본 장치를 확인합니다. 첫 번째 미러의 예는 아직 완전히 동기화되지 않았습니다; Copy% 란이 100.00이라고 나타날 때 까지 기다리셔야 합니다.
[root@link-08 ~]#lvs -a -o +devicesLV VG Attr LSize Origin Snap% Move Log Copy% Devices groupfs vg mwi-a- 752.00M groupfs_mlog 21.28 groupfs_mimage_0(0),groupfs_mimage_1(0) [groupfs_mimage_0] vg iwi-ao 752.00M /dev/sda1(0) [groupfs_mimage_1] vg iwi-ao 752.00M /dev/sdb1(0) [groupfs_mlog] vg lwi-ao 4.00M /dev/sdc1(0) [root@link-08 ~]#lvs -a -o +devicesLV VG Attr LSize Origin Snap% Move Log Copy% Devices groupfs vg mwi-a- 752.00M groupfs_mlog 100.00 groupfs_mimage_0(0),groupfs_mimage_1(0) [groupfs_mimage_0] vg iwi-ao 752.00M /dev/sda1(0) [groupfs_mimage_1] vg iwi-ao 752.00M /dev/sdb1(0) [groupfs_mlog] vg lwi-ao 4.00M i /dev/sdc1(0)
/dev/sda1 미러 leg 작업에 장애가 발생하였습니다. 미러 볼륨에 쓰기 작업을 실행할 경우 LVM이 장애가 발생한 미러를 감지하게 됩니다. 이러한 경우, LVM은 미러를 단일 선형 (linear) 볼륨으로 전환합니다. 전환 작업을 위해 dd 명령을 실행합니다.
[root@link-08 ~]# dd if=/dev/zero of=/dev/vg/groupfs count=10
10+0 records in
10+0 records out
lvs 명령을 사용하여 현재 장치가 선형 (linear) 장치로 되어 있는 지를 확인할 수 있습니다. 실패한 디스크의 경우 I/O 오류가 발생합니다.
[root@link-08 ~]# lvs -a -o +devices
/dev/sda1: read failed after 0 of 2048 at 0: Input/output error
/dev/sda2: read failed after 0 of 2048 at 0: Input/output error
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
groupfs vg -wi-a- 752.00M /dev/sdb1(0)
pvcreate 명령을 실행했을 때 "일치하지 않음 (inconsistent)"이라는 경고 메세지가 나타납니다. vgreduce --removemissing 명령을 실행하여 이러한 경고 메세지가 나타나지 않게 할 수 있습니다.
[root@link-08 ~]#pvcreate /dev/sdi[12]Physical volume "/dev/sdi1" successfully created Physical volume "/dev/sdi2" successfully created [root@link-08 ~]#pvscanPV /dev/sdb1 VG vg lvm2 [67.83 GB / 67.10 GB free] PV /dev/sdb2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdc1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdc2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdd1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdd2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sde1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sde2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdf1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdf2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdg1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdg2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdh1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdh2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdi1 lvm2 [603.94 GB] PV /dev/sdi2 lvm2 [603.94 GB] Total: 16 [2.11 TB] / in use: 14 [949.65 GB] / in no VG: 2 [1.18 TB]
[root@link-08 ~]#vgextend vg /dev/sdi[12]Volume group "vg" successfully extended [root@link-08 ~]#pvscanPV /dev/sdb1 VG vg lvm2 [67.83 GB / 67.10 GB free] PV /dev/sdb2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdc1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdc2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdd1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdd2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sde1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sde2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdf1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdf2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdg1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdg2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdh1 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdh2 VG vg lvm2 [67.83 GB / 67.83 GB free] PV /dev/sdi1 VG vg lvm2 [603.93 GB / 603.93 GB free] PV /dev/sdi2 VG vg lvm2 [603.93 GB / 603.93 GB free] Total: 16 [2.11 TB] / in use: 16 [2.11 TB] / in no VG: 0 [0 ]
[root@link-08 ~]# lvconvert -m 1 /dev/vg/groupfs /dev/sdi1 /dev/sdb1 /dev/sdc1
Logical volume mirror converted.
lvs 명령을 사용하여 미러가 복구되었는지를 확인할 수 있습니다.
[root@link-08 ~]# lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
groupfs vg mwi-a- 752.00M groupfs_mlog 68.62 groupfs_mimage_0(0),groupfs_mimage_1(0)
[groupfs_mimage_0] vg iwi-ao 752.00M /dev/sdb1(0)
[groupfs_mimage_1] vg iwi-ao 752.00M /dev/sdi1(0)
[groupfs_mlog] vg lwi-ao 4.00M /dev/sdc1(0)
6.4. 물리 볼륨 메타 데이터 복구
주의
[root@link-07 backup]# lvs -a -o +devices
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find all physical volumes for volume group VG.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find all physical volumes for volume group VG.
...
/etc/lvm/archive 디렉토리에서 확인하여 덮어 쓰기된 물리 볼륨에 해당하는 UUID를 찾을 수 있습니다. 해당 볼륨 그룹의 아카이브된 LVM 메타 데이터에 해당하는 VolumeGroupName_xxxx.vg 파일을 찾습니다.
partial (-P) 인수를 설정하여 손상된 볼륨 그룹에 대한 UUID를 찾을 수 있습니다.
[root@link-07 backup]# vgchange -an --partial
Partial mode. Incomplete volume groups will be activated read-only.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
...
pvcreate 명령의 --uuid 및 --restorefile 인수를 사용하여 물리 볼륨을 복구합니다. 다음의 예에서는 위의 UUID와 함께 , FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk를 사용하여 물리 볼륨으로 /dev/sdh1 장치를 레이블하고 있습니다. 이 명령으로 볼륨 그룹에 최근 아카이브된 메타 데이터, VG_00050.vg에 있는 메타데이터 정보를 사용하여 물리 볼륨 레이블을 복구합니다. restorefile 인수는 pvcreate 명령을 지시하여 볼륨 그룹에 있는 이전 물리 볼륨과 호환하는 새 물리 볼륨을 만들어, 새로운 메타 데이터가 이전 물리 볼륨이 들어있는 데이터에 배치되지 않는지를 확인합니다. (예를 들어, 본래의 pvcreate 명령이 메타 데이터 위치를 제어하는 명령행 인수를 사용하거나 또는 다른 기본값을 사용하는 다른 버전의 소프트웨어를 사용하여 기존 물리 볼륨이 생성된 경우에 발생할 수 있음).pvcreate 명령은 LVM 메타 데이터 영역만을 덮어쓰기하고 기존의 데이터 영역에는 영향을 미치지 않습니다.
[root@link-07 backup]# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" --restorefile /etc/lvm/archive/VG_00050.vg /dev/sdh1
Physical volume "/dev/sdh1" successfully created
vgcfgrestore 명령을 사용하여 볼륨 그룹의 메타 데이터를 복구할 수 있습니다.
[root@link-07 backup]# vgcfgrestore VG
Restored volume group VG
[root@link-07 backup]# lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
stripe VG -wi--- 300.00G /dev/sdh1 (0),/dev/sda1(0)
stripe VG -wi--- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
[root@link-07 backup]#lvchange -ay /dev/VG/stripe[root@link-07 backup]#lvs -a -o +devicesLV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi-a- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi-a- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
fsck 명령을 사용하여 데이터를 복구할 수 있습니다.
6.5. 손실된 물리 볼륨 대체
vgdisplay 명령의 --partial 및 --verbose 인수를 사용하여 UUID 및 더 이상 존재하지 않는 물리 볼륨의 크기를 확인합니다. 같은 크기의 다른 물리 볼륨을 대체하고자 할 경우, --restorefile 및 --uuid 인수와 함께 pvcreate 명령을 사용하여 손실된 물리 볼륨과 같은 UUID를 사용하는 새로운 장치를 초기화할 수 있습니다. 그 후 vgcfgrestore 명령으로 볼륨 그룹의 메타 데이터를 복구합니다.
6.6. 볼륨 그룹에서 손실된 물리 볼륨 제거
vgchange 명령의 --partial 인수를 사용하여 볼륨 그룹에 있는 남아있는 다른 물리 볼륨을 활성화할 수 있습니다. vgreduce 명령의 --removemissing 인수를 사용하여 볼륨 그룹에서 물리 볼륨이 사용된 모든 논리 볼륨을 삭제할 수 있습니다.
--test 인수와 함께 vgreduce 명령을 실행할 것을 권장합니다.
vgcfgrestore 명령을 사용하여 이전 상태로 볼륨 그룹 메타데이터를 복구할 경우, vgreduce 명령으로 역실행가능합니다. 예를 들어, --test 인수 없이 vgreduce 명령의 --removemissing 인수를 사용하여 보관하고자 했던 논리 볼륨이 삭제된 것을 발견했을 경우, 물리 볼륨을 대체하여 이전 상태로 볼륨 그룹을 복구하기 위해 다른 vgcfgrestore 명령을 사용하실 수 있습니다.
6.7. 논리 볼륨에 대해 불충분한 여유 익스텐트
vgdisplay 또는 vgs 명령의 출력 결과에 기반하여 익스텐트가 충분하다고 생각되어 논리 볼륨을 생성할 경우 "여유 익스텐트가 충분하지 않음"이라는 오류 메세지가 나타날 수 있습니다. 이는 판독 가능한 출력 결과를 위해 명령이 소수 2 자리로 나타나기 때문입니다. 논리 볼륨 크기를 정확하게 지정하려면 바이트 배수 대신 여유 물리 익스텐트 수를 사용합니다.
vgdisplay 명령에는 여유 물리 익스텐트를 나타내는 출력 결과 행이 포함됩니다.
# vgdisplay
--- Volume group ---
...
Free PE / Size 8780 / 34.30 GB
vgs 명령의 vg_free_count 및 vg_extent_count 인수를 사용하여 여유 익스텐트 및 총 익스텐트 수를 나타낼 수 있습니다.
[root@tng3-1 ~]# vgs -o +vg_free_count,vg_extent_count
VG #PV #LV #SN Attr VSize VFree Free #Ext
testvg 2 0 0 wz--n- 34.30G 34.30G 8780 8780
# lvcreate -l8780 -n testlv testvg
# vgs -o +vg_free_count,vg_extent_count
VG #PV #LV #SN Attr VSize VFree Free #Ext
testvg 2 1 0 wz--n- 34.30G 0 0 8780
lvcreate 명령의 -l 인수를 사용하여 볼륨 그룹에 있는 남아있는 여유 공간의 퍼센트를 사용하기 위해 논리 볼륨을 확장할 수 있습니다. 보다 자세한 내용은 4.4.1절. “선형 논리 볼륨 생성 ”에서 참조하시기 바랍니다.
7장. LVM GUI를 통한 LVM 관리
system-config-lvm 명령을 사용하여 이러한 유틸리티를 불러올 수 있습니다. 스토리지 관리 가이드의 LVM 부분에서는 이러한 유릴리티를 사용하여 LVM 논리 볼륨을 설정하는 방법에 대해 단계적으로 설명하고 있습니다.
부록 A. 장치 매퍼 (Device Mapper)
dmraid 명령은 장치 매퍼를 사용합니다. 장치 매퍼로의 애플리케이션 인터페이스는 ioctl 시스템 호출입니다. 사용자 인터페이스는 dmsetup 명령입니다.
dmsetup 명령으로 쿼리 가능한 기본 장치 맵퍼를 생성합니다. 맵핑 테이블에서 장치 포맷에 관한 내용은 A.1절. “장치 테이블 맵핑 ”에서 참조하십시오. 장치를 쿼리하기 위해 dmsetup 명령을 사용하는 방법에 관한 내용은 A.2절. “dmsetup 명령 ”에서 참조하십시오.
A.1. 장치 테이블 맵핑
start length mapping[mapping_parameters...]
start 매개 변수는 0과 동일해야 합니다. 하나의 행에 있는 start + length 매개 변수는 다음 행의 start와 동일해야 합니다. 어떤 맵핑 매개변수가 맵핑 테이블의 행에 지정되어야 하는 가는 어떤 mapping 유형이 해당 행에 지정되는 가에 따라 결정됩니다.
/dev/hda)에서 장치 이름에 의해서나 또는 major:minor 형식의 major 및 minor 번호에 의해 참조될 수 있습니다. major:minor 형식은 경로명 검색을 피할 수 있기 때문에 선호됩니다.
0 35258368 linear 8:48 65920 35258368 35258368 linear 8:32 65920 70516736 17694720 linear 8:16 17694976 88211456 17694720 linear 8:16 256
linear가 됩니다. 나머지 행은 linear 대상에 대한 매개 변수로 구성됩니다.
- linear
- striped
- mirror
- snapshot 및 snapshot-origin
- error
- zero
- multipath
- crypt
A.1.1. 선형 맵핑 대상
start lengthlineardevice offset
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
device- 블록 장치, 파일 시스템에서 장치 이름에 의해 또는
major:minor형식에서 major 및 minor 번호에 의해 참조됩니다 offset- 장치에서 맵핑의 시작점 오프셋
0 16384000 linear 8:2 41156992
/dev/hda로 지정된 장치 매개 변수와 함께 선형 대상을 보여주고 있습니다.
0 20971520 linear /dev/hda 384
A.1.2. 스트라이프 맵핑 대상
start lengthstriped#stripes chunk_size device1 offset1 ... deviceN offsetN
device 및 offset 매개 변수 모음 하나가 있습니다.
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
#stripes- 가상 장치 용 스트라이프 수
chunk_size- 다음으로 전환하기 전 까지 각각의 스트라이프에 작성된 섹터 수량; 컨널 페이지 크기 만큼 큰 것으로 최소 2 개의 전력이 되어야 합니다
device- 블록 장치, 파일 시스템에서 장치 이름에 의해서나 또는
major:minor형식에서 major 및 minor 번호에 의해 참조됩니다. offset- 장치에서 맵핑의 시작점 오프셋
0 73728 striped 3 128 8:9 384 8:8 384 8:7 9789824
- 0
- 가상 장치에서 시작점 블록
- 73728
- 세그먼트 길이
- striped 3 128
- 128 블록의 chunk size를 갖는 세 개의 장치를 통해 스트라이프
- 8:9
- 첫 번째 장치의 major:minor 번호
- 384
- 첫 번째 장치에서 맵핑의 시작점 오프셋
- 8:8
- 두 번째 장치의 major:minor 번호
- 384
- 두 번째 장치에서 맵핑의 시작점 오프셋
- 8:7
- 세 번째 장치의 major:minor 번호
- 9789824
- 세 번째 장치에서 맵핑의 시작점 오프셋
0 65536 striped 2 512 /dev/hda 0 /dev/hdb 0
A.1.3. 미러 맵핑 대상
start lengthmirrorlog_type #logargs logarg1 ... logargN #devs device1 offset1 ... deviceN offsetN
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
log_type- 가능한 로그 유형 및 인수는 다음과 같습니다:
core- 미러는 로컬로 되고 미러 로그는 코어 메모리에 저장됩니다. 이러한 로그 유형은 1 - 3 인수를 갖습니다:regionsize [[
no]sync] [block_on_error] disk- 미러는 로컬로 되고 미러 로그는 디스크에 저장됩니다. 이러한 로그 유형은 2 - 4 인수를 갖습니다:logdevice regionsize [[
no]sync] [block_on_error] clustered_core- 미러는 클러스터되고 미러 로그는 코어 메모리에 저장됩니다. 이러한 로그 유형은 2 - 4 인수를 갖습니다:regionsize UUID [[
no]sync] [block_on_error] clustered_disk- 미러는 클러스터되고 미러 로그는 디스크에 저장됩니다. 이러한 로그 유형은 3 - 5 인수를 갖습니다:logdevice regionsize UUID [[
no]sync] [block_on_error]
LVM은 어떤 영역이 미러와 동기화하는 지를 기록하기 위해 사용하는 로그를 유지합니다. regionsize 인수는 이러한 영역의 크기를 지정합니다.클러스터된 환경에서, UUID 인수는 미러 로그 장치와 관련된 고유한 식별자이므로 로그 상태는 클러스터 전역에서 유지될 수 있습니다.[no]sync인수 옵션은 "in-sync" 또는 "out-of-sync"로 미러를 지정하기 위해 사용될 수 있습니다.block_on_error인수는 미러에 대해 오류를 무시하는 것이 아니라 오류를 처리하도록 지시하는데 사용됩니다. #log_args- 맵핑에서 지정될 로그 인수의 수
logargs- 미러에 대한 로그 인수; 제공되는 로그 인수 수량은
#log-args매개 변수에 의해 지정되고 유효한 로그 인수는log_type매개 변수에 의해 결정됩니다. #devs- 미러에서 leg 수; 각 leg에 대해 장치 및 오프셋이 지정됩니다.
device- 각 미러 leg에 대한 블록 장치, 파일 시스템에 있는 장치 이름으로 참조 또는
major:minor형식에 있는 major 및 minor 번호에 의해 참조. 블록 장치 및 오프셋은 각각의 미러 leg에 대해 지정되며,#devs매개 변수에 의해 표시됩니다. offset- 장치에서 맵핑의 시작점 오프셋. 블록 장치 및 오프셋은
#devs매개 변수에 의해 나타나는 각 미러 leg에 대해 지정됩니다.
0 52428800 mirror clustered_disk 4 253:2 1024 UUID block_on_error 3 253:3 0 253:4 0 253:5 0
- 0
- 가상 장치에서 시작점 블록
- 52428800
- 세그먼트 길이
- mirror clustered_disk
- 미러가 클러스터되어 있고 미러 로그가 디스크 상에서 유지되고 있음을 지정하는 로그 유형을 갖는 미러 대상 \t
- 4
- 4 개의 미러 로그 인수가 계속됩니다
- 253:2
- 로그 장치의 major:minor 번호
- 1024
- 동기화하고 있는 기록을 보관하기 위해 미러 로그가 사용하는 영역 크기
UUID- 클러스터를 통해 로그 정보를 관리하기 위한 미러 로그 장치의 UUID
block_on_error- 미러는 오류에 대응해야 합니다
- 3
- 미러에서 leg 수
- 253:3 0 253:4 0 253:5 0
- 미러의 각 leg를 구성하는 장치에 대한 major:minor 번호 및 오프셋
A.1.4. snapshot 및 snapshot-origin 맵핑 대상
- 소스 볼륨의 기존 맵핑 테이블이 들어 있는
linear맵핑을 갖는 장치 - 소스 볼륨에 대해 COW (copy-on-write) 장치로 사용되는
linear맵핑을 갖는 장치; 각각의 쓰기 작업에 대해, 기존 데이터는 각 스냅샷의 COW 장치에 저장되어 가시적 컨텐츠가 변경되지 않게 보관됩니다 (COW 장치가 채워질 때 까지). - 가시적 스냅샷 볼륨인 #1과 #2를 결합한
snapshot맵핑을 갖는 장치 - "기존" 볼륨 (이는 기존 소스 볼륨에 의해 사용되는 장치 번호를 사용합니다). 이러한 볼륨의 테이블은 장치 #1에서 "snapshot-origin" 맵핑하여 교체됩니다.
base라는 LVM 볼륨을 생성하고 해당 볼륨에 snap 라는 스냅샷 볼륨을 생성할 수 있습니다.
#lvcreate -L 1G -n base volumeGroup#lvcreate -L 100M --snapshot -n snap volumeGroup/base
#dmsetup table|grep volumeGroupvolumeGroup-base-real: 0 2097152 linear 8:19 384 volumeGroup-snap-cow: 0 204800 linear 8:19 2097536 volumeGroup-snap: 0 2097152 snapshot 254:11 254:12 P 16 volumeGroup-base: 0 2097152 snapshot-origin 254:11 #ls -lL /dev/mapper/volumeGroup-*brw------- 1 root root 254, 11 29 ago 18:15 /dev/mapper/volumeGroup-base-real brw------- 1 root root 254, 12 29 ago 18:15 /dev/mapper/volumeGroup-snap-cow brw------- 1 root root 254, 13 29 ago 18:15 /dev/mapper/volumeGroup-snap brw------- 1 root root 254, 10 29 ago 18:14 /dev/mapper/volumeGroup-base
snapshot-origin 대상의 형식은 다음과 같습니다:
start lengthsnapshot-originorigin
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
origin- 스냅샷의 기본 볼륨
snapshot-origin은 이를 기반으로 하는 하나 이상의 스냅샷을 가지고 있습니다. 읽기 작업은 백업 장치에 직접 맵핑됩니다. 각각의 쓰기 작업의 경우 기존 데이터는 각각의 스냅샷의 COW 장치에 저장되어 COW 장치가 채워질 때 까지 가시적 컨텐츠가 변경되지 않게 보관됩니다.
snapshot 대상의 형식은 다음과 같습니다.
start lengthsnapshotorigin COW-deviceP|Nchunksize
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
origin- 스냅샷의 기본 볼륨
COW-device- 변경된 데이터 청크가 저장된 장치
- P|N
- P (Persistent) 또는 N (Not persistent); 재부팅 후 스냅샷이 유지되고 있는지에 대한 여부를 나타냅니다. 임시 스냅샷 (N)의 경우 많은 데이터를 디스크에 저장할 수 없으며, 커널에 의해 메모리에 저장할 수 있습니다.
chunksize- COW 장치에 저장될 변경된 데이터 청크의 섹터 크기
snapshot-origin 대상을 보여주고 있습니다.
0 2097152 snapshot-origin 254:11
snapshot 대상을 보여주고 있습니다. 이러한 스냅샷 장치는 재부팅 후에도 지속되며 COW 장치에 저장된 데이터의 청크 크기는 16 섹터입니다.
0 2097152 snapshot 254:11 254:12 P 16
A.1.5. 오류 맵핑 대상
error 맵핑 대상은 start 및 length 이외에 추가 매개 변수를 갖지 않습니다.
error 대상을 보여주고 있습니다.
0 65536 error
A.1.6. zero 맵핑 대상
zero 맵핑 대상은 /dev/zero와 동등한 블록 장치입니다. 이러한 맵핑으로의 읽기 작업을 영 블록을 반환합니다. 맵핑에 작성된 데이터는 삭제되지만 쓰기 작업은 성공합니다. zero 맵핑 대상은 start 및 length 매개 변수 이외에 추가 매개 변수를 갖지 않습니다.
zero 대상을 보여주고 있습니다.
0 65536 zero
A.1.7. 멀티패스 맵핑 대상
multipath 대상의 형식은 다음과 같습니다:
start lengthmultipath#features [feature1 ... featureN] #handlerargs [handlerarg1 ... handlerargN] #pathgroups pathgroup pathgroupargs1 ... pathgroupargsN
pathgroupargs 매개 변수 모음이 하나 있습니다.
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
#features- 멀티패스 기능의 수로 이러한 기능은 다음에 표시됩니다. 이러한 매개 변수가 영이되면,
feature매개 변수가 없게 되고 다음의 장치 맵핑 매개 변수는#handlerargs가 됩니다. 현재 지원되는 멀티패스 기능은queue_if_no_path하나 입니다. 이는 사용 가능한 경로가 없을 경우 현재 멀티패스된 장치는 I/O 작업을 대기열로 하도록 설정됨을 의미합니다.예를 들어,multipath.conf파일의no_path_retry옵션이 지정된 일련의 시도 횟수가 경로를 사용한 후 전체 경로가 실패로 표시될 때 까지 I/O 작업을 대기열로 하도록 설정되어 있을 경우, 맵핑은 전체 경로 검사기가 지정된 검사를 실패할 때 까지 다음과 같이 나타나게 됩니다.0 71014400 multipath 1 queue_if_no_path 0 2 1 round-robin 0 2 1 66:128 \ 1000 65:64 1000 round-robin 0 2 1 8:0 1000 67:192 1000
전체 경로 검사기가 지정된 검사를 실패한 후, 맵핑은 다음과 같이 나타나게 됩니다.0 71014400 multipath 0 0 2 1 round-robin 0 2 1 66:128 1000 65:64 1000 \ round-robin 0 2 1 8:0 1000 67:192 1000
#handlerargs- 하드웨어 처리기 인수 수량으로 이러한 인수가 그 다음에 표시됩니다. 하드웨어 처리기는 경로 그룹을 전환하거나 또는 I/O 오류를 처리할 때 하드웨어 특정 작업을 실행하기 위해 사용되는 모듈을 지정합니다. 이것이 0으로 설정되어 있을 경우, 다음 매개 변수는
#pathgroups이 됩니다. #pathgroups- 경로 그룹의 수량. 경로 그룹은 멀티패스된 장치가 로드 밸런스를 수행하는 경로 모음입니다. 각각의 경로 그룹에 대해
pathgroupargs매개 변수 모음이 하나 있습니다. pathgroup- 시도할 다음 경로 그룹
pathgroupsargs- 각 경로 그룹은 다음과 같은 인수로 구성되어 있습니다:
pathselector #selectorargs #paths #pathargs device1 ioreqs1 ... deviceN ioreqsN경로 그룹에는 각 경로에 대한 경로 인수 모음 하나가 있습니다.pathselector- 경로 그룹에서 어떤 경로를 다음 I/O 작업에 사용할 지를 결정하기 위해 사용되고 있는 알고리즘을 지정합니다.
#selectorargs- 멀티패스 맵핑에서 이러한 인수를 따르는 경로 선택기 인수의 수량. 현재 이러한 인수 값은 항상 0입니다.
#paths- 경로 그룹에 있는 경로 수량
#pathargs- 이 그룹의 각 경로에 지정된 경로 인수의 수량. 현재 이러한 숫자는 항상
ioreqs인수인 1로 되어 있습니다. device- 경로의 블록 장치 번호,
major:minor형식으로 major와 minor 번호에 의해 참조됩니다 ioreqs- 현재 그룹의 다음 경로로 전환하기 전 이러한 경로로 라우팅하기 위한 I/O 요청 수.

그림 A.1. 멀티패스 맵핑 대상
0 71014400 multipath 0 0 4 1 round-robin 0 1 1 66:112 1000 \ round-robin 0 1 1 67:176 1000 round-robin 0 1 1 68:240 1000 \ round-robin 0 1 1 65:48 1000
0 71014400 multipath 0 0 1 1 round-robin 0 4 1 66:112 1000 \ 67:176 1000 68:240 1000 65:48 1000
A.1.8. crypt 맵핑 대상
crypt 대상은 지정된 장치를 통해 전송된 데이터를 암호화합니다. 이는 커널 Crypto API를 사용합니다.
crypt 대상의 형식은 다음과 같습니다:
start lengthcryptcipher key IV-offset device offset
start- 가상 장치에서 시작점 블록
length- 세그먼트 길이
cipher- Cipher는
cipher[-chainmode]-ivmode[:iv options]로 구성되어 있습니다.cipher- 사용 가능한 Ciphers는
/proc/crypto에 나열되어 있습니다 (예:aes) chainmode- 항상
cbc를 사용합니다.ebc는 사용하지 않습니다; 이는 초기 백터 (IV)를 사용하지 않습니다. ivmode[:iv options]- IV는 초기 벡터 (initial vector)로 암호를 변경하는 데 사용됩니다. IV 모드는
plain또는essiv:hash입니다.-plain의ivmode는 IV로서 섹터 번호 (및 IV 오프셋)를 사용합니다.-essiv의ivmode는 워터마크의 약점을 피하기 위해 강화되었습니다.
key- 암호화 키, 16 진법으로 공급
IV-offset- 초기 백터 (IV) 오프셋
device- 블록 장치, 파일 시스템에서 장치 이름에 의해 또는
major:minor형식에서 major 및 minor 번호에 의해 참조됩니다 offset- 장치에서 맵핑의 시작점 오프셋
crypt 대상의 예제입니다.
0 2097152 crypt aes-plain 0123456789abcdef0123456789abcdef 0 /dev/hda 0
A.2. dmsetup 명령
dmsetup 명령은 장치 매퍼와 통신하기 위한 명령행 래퍼 (wrapper)입니다. LVM 장치에 관한 일반적인 시스템 정보는 다음의 하부 섹션에서 설명하고 있듯이 dmsetup 명령의 info, ls, status, deps 옵션을 사용하여 참조하시기 바랍니다.
dmsetup명령의 추가 옵션 및 기능에 관한 내용은 dmsetup(8) 맨 페이지에서 참조하십시오.
A.2.1. dmsetup info 명령
dmsetup info device 명령은 Device Mapper 장치에 관한 요약 정보를 제공합니다. 장치 이름을 지정하지 않으셨을 경우, 출력 결과에는 현재 설정된 모든 Device Mapper 장치에 관한 정보가 나타납니다. 장치를 지정하셨을 경우, 이 명령은 해당 장치에 대한 정보만을 제공합니다.
dmsetup info 명령은 다음과 같은 범주에 있는 정보를 제공합니다:
Name- 장치의 이름입니다. LVM 장치는 하이픈으로 구별된 볼륨 그룹 이름 및 논리 볼륨 이름으로 나타납니다. 원래 이름에서의 하이픈은 두 개의 하이픈으로 변환됩니다.
State- 가능한 장치 상태는
SUSPENDED,ACTIVE,READ-ONLY가 됩니다.dmsetup suspend명령은 장치 상태를SUSPENDED로 설정합니다. 장치가 일시 정지 상태가 되어 있을 경우, 해당 장치의 모든 I/O 작업이 중지됩니다.dmsetup resume명령은 장치의 상태를ACTIVE로 복원합니다. Read Ahead- 읽기 작업이 실행되고 있는 열린 파일에 대해 시스템을 미리 읽어오는 데이터 블록의 수량입니다. 기본값으로 커널은 자동으로 적절한 값을 선택합니다.
--readaheadoption of thedmsetup명령을 사용하여 이러한 값을 변경할 수 있습니다. Tables present- 이 카테고리의 가능한 상태 값은
LIVE및INACTIVE입니다.INACTIVE상태는 테이블 상태가LIVE가 되도록dmsetup resume명령이 장치 상태를ACTIVE로 복원할 때 교체될 수 있게 테이블이 로딩되는 것을 나타냅니다. 자세한 내용은dmsetup맨 페이지를 참조하십시오. Open count- open reference count는 장치가 열린 횟수를 나타냅니다.
mount명령은 장치를 엽니다. Event number- 수신된 현재 이벤트 수.
dmsetup wait n명령을 실행하면 수신될 때 까지 호출을 차단하여 사용자는 n 번째 이벤트를 기다리게 합니다. Major, minor- Major 및 minor 장치 번호
Number of targets- 장치를 구성하는 부분의 수량입니다. 예를 들어, 3 개의 디스크를 통과하는 선형 장치는 3 개의 대상을 갖게 됩니다. 디스크의 시작과 끝 지점으로 구성되는 중간 지점이 없는 선형 장치는 2 개의 대상을 갖게 됩니다.
UUID- 장치의 UUID
dmsetup info 명령의 일부 출력 결과를 보여주고 있습니다.
[root@ask-07 ~]# dmsetup info
Name: testgfsvg-testgfslv1
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 253, 2
Number of targets: 2
UUID: LVM-K528WUGQgPadNXYcFrrf9LnPlUMswgkCkpgPIgYzSvigM7SfeWCypddNSWtNzc2N
...
Name: VolGroup00-LogVol00
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 0
Number of targets: 1
UUID: LVM-tOcS1kqFV9drb0X1Vr8sxeYP0tqcrpdegyqj5lZxe45JMGlmvtqLmbLpBcenh2L3
A.2.2. dmsetup ls 명령
dmsetup ls 명령으로 맵핑된 장치의 장치 이름을 나열할 수 있습니다. dmsetup ls --target target_type 명령을 사용하여 최소 한개의 특정 유형의 대상을 갖는 장치를 나열할 수 있습니다. dmsetup ls 명령의 다른 옵션은 dmsetup 맨 페이지를 참조하십시오.
[root@ask-07 ~]# dmsetup ls
testgfsvg-testgfslv3 (253, 4)
testgfsvg-testgfslv2 (253, 3)
testgfsvg-testgfslv1 (253, 2)
VolGroup00-LogVol01 (253, 1)
VolGroup00-LogVol00 (253, 0)
[root@grant-01 ~]# dmsetup ls --target mirror
lock_stress-grant--02.1722 (253, 34)
lock_stress-grant--01.1720 (253, 18)
lock_stress-grant--03.1718 (253, 52)
lock_stress-grant--02.1716 (253, 40)
lock_stress-grant--03.1713 (253, 47)
lock_stress-grant--02.1709 (253, 23)
lock_stress-grant--01.1707 (253, 8)
lock_stress-grant--01.1724 (253, 14)
lock_stress-grant--03.1711 (253, 27)
dmsetup ls 명령은 다음의 예에서와 같이 장치간의 의존 관계를 트리로 표시하는 --tree 옵션을 제공합니다.
# dmsetup ls --tree
vgtest-lvmir (253:13)
├─vgtest-lvmir_mimage_1 (253:12)
│ └─mpathep1 (253:8)
│ └─mpathe (253:5)
│ ├─ (8:112)
│ └─ (8:64)
├─vgtest-lvmir_mimage_0 (253:11)
│ └─mpathcp1 (253:3)
│ └─mpathc (253:2)
│ ├─ (8:32)
│ └─ (8:16)
└─vgtest-lvmir_mlog (253:4)
└─mpathfp1 (253:10)
└─mpathf (253:6)
├─ (8:128)
└─ (8:80)
A.2.3. dmsetup status 명령
dmsetup status device 명령은 특정 장치에 있는 각각의 대상에 대한 상태 정보를 제공합니다. 장치 이름을 지정하지 않으셨을 경우, 출력 결과에는 현재 설정된 모든 Device Mapper 장치에 관한 정보가 나타나게 됩니다. dmsetup status --target target_type 명령을 사용하여 최소 한개의 특정 유형의 대상을 갖는 장치의 상태 만을 나열할 수 있습니다.
[root@ask-07 ~]# dmsetup status
testgfsvg-testgfslv3: 0 312352768 linear
testgfsvg-testgfslv2: 0 312352768 linear
testgfsvg-testgfslv1: 0 312352768 linear
testgfsvg-testgfslv1: 312352768 50331648 linear
VolGroup00-LogVol01: 0 4063232 linear
VolGroup00-LogVol00: 0 151912448 linear
A.2.4. dmsetup deps 명령
dmsetup deps device 명령은 지정된 장치의 맵핑 테이블에서 참조하는 장치 (major, minor) 쌍의 목록을 제공합니다. 장치 이름을 지정하지 않으셨을 경우, 출력 결과에는 현재 설정된 모든 Device Mapper 장치에 관한 정보가 나타나게 됩니다.
[root@ask-07 ~]# dmsetup deps
testgfsvg-testgfslv3: 1 dependencies : (8, 16)
testgfsvg-testgfslv2: 1 dependencies : (8, 16)
testgfsvg-testgfslv1: 1 dependencies : (8, 16)
VolGroup00-LogVol01: 1 dependencies : (8, 2)
VolGroup00-LogVol00: 1 dependencies : (8, 2)
lock_stress-grant--02.1722 장치의 의존성만을 나열하는 명령을 보여주고 있습니다.
[root@grant-01 ~]# dmsetup deps lock_stress-grant--02.1722
3 dependencies : (253, 33) (253, 32) (253, 31)
A.3. udev 장치 관리자에 대해 장치 매퍼(Device Mapper) 지원
udev 장치 관리자의 주요 역할은 /dev 디렉토리에 있는 노드의 동적 설정 방식을 제공하는 것입니다. 이러한 노드를 생성하여 사용자 공간에 있는 udev 규칙 응용 프로그램을 지시합니다. 이러한 규칙은 특정 장치의 추가, 제거, 변경의 결과로 커널에서 직접 전송된 udev 이벤트에서 실행됩니다. 이는 핫플러그 지원에 대한 편리한 중앙 메커니즘을 제공합니다.
udev 장치 관리자는 자신의 이름으로된 심볼릭 링크를 생성할 수 있으며, 필요할 경우 사용자는 사용자 정의된 이름과 /dev 디렉토리에 디렉토리 구조를 선택할 수 있습니다.
udev 이벤트에는 이름, 하부 시스템, 장치 유형, 사용되는 주/부 번호, 이벤트 유형과 같은 실행되고 있는 장치에 대한 기본 정보가 들어있습니다. udev 규칙에서 액세스할 수 있는 /sys 디렉토리에 있는 모든 정보에 액세스할 수 있으며, 사용자는 이 정보를 기반으로 간단한 필터를 사용하여 정보에 따라 조건부로 규칙을 실행할 수 있습니다.
udev 장치 관리자는 중앙 관리 방식의 노드 권한 설정을 제공합니다. 사용자는 이벤트를 처리하는 동안 사용 가능한 정보로 지정한 장치의 권한을 정의하기 위해 사용자 정의된 규칙을 쉽게 추가할 수 있습니다.
udev 규칙에 직접 hook 프로그램을 추가할 수 도 있습니다. udev 장치 관리자는 이벤트를 처리하기 위해 필요한 프로세스를 제공하기 위해 이러한 프로그램을 호출할 수 있습니다. 또한 프로그램은 이러한 처리의 결과로 환경 변수를 내보낼 수 있습니다. 어떤 처리 결과든지 정보의 추가 소스로 규칙에 사용될 수 있습니다.
udev 라이브러리를 사용하는 소프트웨어는 사용 가능한 모든 정보와 함께 udev 이벤트를 받아 처리할 수 있으므로 처리 사항은 udev 데몬에 바인딩되지 않습니다.
A.3.1. 장치 맵퍼 (Device Mapper)로 udev 통합
udev 통합에 대해 직접적인 지원을 제공합니다. 이는 장치 맵퍼를 LVM 장치를 포함하여 장치 맵퍼 장치와 연관된 모든 udev 처리와 동기화합니다. udev 데몬에 있는 규칙 어플리 케이션은 장치 변경의 소스인 (dmsetup 및 LVM 등) 프로그램과 병령 처리 형태이기 때문에 동기화가 필요합니다. 이러한 지원 없이 이전 변경 이벤트의 결과로 udev 규칙에 의해 처리되는 아직 열려있는 상태의 장치를 제거하기 위한 문제가 사용자에게 자주 발생했었습니다. 특히 장치의 변경 간격이 매우 짧은 경우에 자주 발생했었습니다.
udev 규칙을 제공합니다. 표 A.1. “장치 맵퍼 (Device-Mapper) 장치에 대한 udev 규칙 ”에는 /lib/udev/rules.d에 설치된 이러한 규칙에 대해 요약되어 있습니다.
표 A.1. 장치 맵퍼 (Device-Mapper) 장치에 대한 udev 규칙
| 파일 이름 | 설명 | ||
|---|---|---|---|
10-dm.rules |
| ||
11-dm-lvm.rules |
| ||
13-dm-disk.rules | 일반적으로 모든 장치 맵퍼 (Device Mapper) 장치에 대해 적용되는 규칙이 포함되어 있으며 /dev/disk/by-id, /dev/disk/by-uuid, /dev/disk/by-uuid 디렉토리에 심볼릭 링크를 생성합니다. | ||
95-dm-notify.rules | libdevmapper (LVM 및 dmsetup과 같이)를 사용하여 대기중 프로세스를 통지하기 위한 규칙이 포함되어 있습니다. 이전의 모든 규칙이 적용된 후 통지가 완료되며, udev 프로세스가 완됴되었는지를 확인합니다. 그 후 통지된 프로세스는 다시 시작됩니다. |
12-dm-permissions.rules 파일을 사용하여 사용자 설정 권한 규칙을 추가할 수 있습니다. 이 파일은 /lib/udev/rules 디렉토리에 설치되지 않고 /usr/share/doc/device-mapper-version 디렉토리에서 찾을 수 있습니다. 12-dm-permissions.rules 파일은 예에서 처럼 일부 일치되는 규칙에 기반한 권한 설정 방법에 대한 설명이 들어있는 템플릿으로 이 파일에는 일반적인 상황의 예가 들어 있습니다. 이 파일을 편집하여 /etc/udev/rules.d 디렉토리에 수동으로 배치하면 여기에 업데이트가 위치하게 되어 설정이 그대로 유지됩니다.
DM_NAME: 장치 매퍼 장치 이름DM_UUID: 장치 매퍼 장치 UUIDDM_SUSPENDED: 장치 맵퍼 (Device Mapper) 장치의 일시 정지 상태DM_UDEV_RULES_VSN:udev규칙 버전 (이는 이전에 언급된 매개 변수가 공식적인 장치 맵퍼 규칙에 의해 직접 설정되어 있는지를 다른 모든 규칙이 확인하는 것입니다)
11-dm-lvm.rules에 설정되어 있습니다:
DM_LV_NAME: 논리 볼륨 이름DM_VG_NAME: 볼륨 그룹 이름DM_LV_LAYER: LVM 레이어 이름
12-dm-permissions.rules 파일에서 설명하고 있듯이 12-dm-permissions.rules 파일에서 사용하여 특정 장치 매퍼 (Device Mapper) 장치에 대한 권한을 정의할 수 있습니다.
A.3.2. udev를 지원하는 명령 및 인터페이스
표 A.2. udev를 지원하기 위한 dmsetup 명령
| 명령 | 설명 |
|---|---|
dmsetup udevcomplete | udev가 규칙 처리를 완료하고 대기 중인 프로세스의 잠금 해제를 알리는데 사용됩니다 (95-dm-notify.rules에 있는 udev 규칙에서 호출됩니다) |
dmsetup udevcomplete_all | 모든 대기 프로세스를 수동으로 잠금 해제하기 위한 디버깅 목적으로 사용됩니다 |
dmsetup udevcookies | 기존의 모든 쿠키 (시스템 전역 세마포어)를 보기 위한 디버깅 목적으로 사용됩니다 |
dmsetup udevcreatecookie | 수동으로 쿠키 (세마포어)를 생성하는데 사용됩니다. 이는 하나의 동기화 리소스 하에서 많은 프로세스를 실행하는데 유용합니다. |
dmsetup udevreleasecookie | 동기화 쿠키하에 있는 모든 프로세스와 관련된 모든 udev 처리를 위해 기다리는데 사용됩니다. |
udev 통합을 지원하는 dmsetup 옵션은 다음과 같습니다.
--udevcookie- udev 트랜잭션에 추가하려는 모든 dmsetup 프로세스를 대상으로 정의해야 합니다.
udevcreatecookie및udevreleasecookie과 함께 사용됩니다.COOKIE=$(dmsetup udevcreatecookie) dmsetup command --udevcookie $COOKIE .... dmsetup command --udevcookie $COOKIE .... .... dmsetup command --udevcookie $COOKIE .... dmsetup udevreleasecookie --udevcookie $COOKIE
--udevcookie옵션 사용 이외에 매개 변수를 프로세스 환경으로 내보내기할 수 있습니다:export DM_UDEV_COOKIE=$(dmsetup udevcreatecookie) dmsetup command ... dmsetup command ... ... dmsetup command ...
--noudevrules- udev 규칙 비활성화: 노드/심볼릭 링크는
libdevmapper자체에 의해 생성됩니다 (이전 방식). 이는udev가 올바르게 작동하지 않을 경우 디버깅 목적을 위한 옵션입니다. --noudevsyncudev동기화를 비활성화합니다. 또한 이는 디버깅을 목적으로 하는 것입니다.
dmsetup 및 이 명령의 옵션에 대한 자세한 내용은 dmsetup(8) man 페이지를 참조하십시오.
udev 통합을 지원하는 다음과 같은 옵션을 지원합니다:
--noudevrules:dmsetup명령에 대해udev규칙을 비활성화합니다.--noudevsync:dmsetup명령에 대해udev동기화를 비활성화합니다.
lvm.conf 파일에는 udev 통합을 지원하는 다음과 같은 옵션이 포함되어 있습니다:
udev_rules: 모든 LVM2 명령 전역에 걸쳐udev_rules을 활성화/비활성화udev_sync: 모든 LVM 명령에 대해udev동기화를 활성화/비활성화
lvm.conf 파일 옵션에 대한 보다 자세한 내용은 lvm.conf 파일에 있는 인라인 주석을 참조하십시오.
부록 B. LVM 설정 파일
/etc/lvm에 기본값으로 설정된 LVM_SYSTEM_DIR 환경 변수에 의해 지정된 디렉토리에서 lvm.conf 설정 파일을 읽어 오게 됩니다.
lvm.conf 파일은 읽어올 추가 설정 파일을 지정할 수 있습니다. 나중에 설정된 파일은 이전에 설정된 파일을 덮어쓰게 됩니다. 모든 설정 파일을 읽어온 후, 현재 사용되고 있는 설정 보기를 하려면, lvm dumpconfig 명령을 실행합니다.
B.1. LVM 설정 파일
- /etc/lvm/lvm.conf
- 도구로 읽혀진 중앙 설정 파일
- etc/lvm/lvm_hosttag.conf
- 각각의 호스트 태그에 대해 추가 설정 파일이 있을 경우 이를 읽어 옵니다:
lvm_hosttag.conf. 이 파일이 새 태크를 지정할 경우, 추가 설정 파일은 읽어 올 tiles 목록에 추가됩니다. 호스트 태그에 관한 내용은 C.2절. “호스트 태그 ”에서 참조하시기 바랍니다.
- /etc/lvm/.cache
- 장치 이름 필터 캐시 파일 (설정 가능).
- /etc/lvm/backup/
- 자동 볼륨 그룹 메타 데이터 백업 용 디렉토리 (설정 가능).
- /etc/lvm/archive/
- 자동 볼륨 그룹 메타 데이터 아카이브 용 디렉토리 (디렉토리 경로 및 아카이브 히스토리 정보 관련 설정 가능).
- /var/lock/lvm/
- 단일 호스트 설정에서, 병렬 프로그램 도구 실행으로 메타 데이터를 손상시키지 않게 하기 위한 잠금 파일, 클러스터 전반에 걸친 DLM이 사용됩니다.
B.2. lvm.conf 설정 파일의 예
lvm.conf 설정 파일의 예입니다. 사용하시는 설정 파일은 이것과 조금 다를 수 있습니다.
# This is an example configuration file for the LVM2 system.
# It contains the default settings that would be used if there was no
# /etc/lvm/lvm.conf file.
#
# Refer to 'man lvm.conf' for further information including the file layout.
#
# To put this file in a different directory and override /etc/lvm set
# the environment variable LVM_SYSTEM_DIR before running the tools.
# This section allows you to configure which block devices should
# be used by the LVM system.
devices {
# Where do you want your volume groups to appear ?
dir = "/dev"
# An array of directories that contain the device nodes you wish
# to use with LVM2.
scan = [ "/dev" ]
# If several entries in the scanned directories correspond to the
# same block device and the tools need to display a name for device,
# all the pathnames are matched against each item in the following
# list of regular expressions in turn and the first match is used.
# preferred_names = [ ]
# Try to avoid using undescriptive /dev/dm-N names, if present.
preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
# A filter that tells LVM2 to only use a restricted set of devices.
# The filter consists of an array of regular expressions. These
# expressions can be delimited by a character of your choice, and
# prefixed with either an 'a' (for accept) or 'r' (for reject).
# The first expression found to match a device name determines if
# the device will be accepted or rejected (ignored). Devices that
# don't match any patterns are accepted.
# Be careful if there there are symbolic links or multiple filesystem
# entries for the same device as each name is checked separately against
# the list of patterns. The effect is that if any name matches any 'a'
# pattern, the device is accepted; otherwise if any name matches any 'r'
# pattern it is rejected; otherwise it is accepted.
# Don't have more than one filter line active at once: only one gets used.
# Run vgscan after you change this parameter to ensure that
# the cache file gets regenerated (see below).
# If it doesn't do what you expect, check the output of 'vgscan -vvvv'.
# By default we accept every block device:
filter = [ "a/.*/" ]
# Exclude the cdrom drive
# filter = [ "r|/dev/cdrom|" ]
# When testing I like to work with just loopback devices:
# filter = [ "a/loop/", "r/.*/" ]
# Or maybe all loops and ide drives except hdc:
# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
# Use anchors if you want to be really specific
# filter = [ "a|^/dev/hda8$|", "r/.*/" ]
# The results of the filtering are cached on disk to avoid
# rescanning dud devices (which can take a very long time).
# By default this cache is stored in the /etc/lvm/cache directory
# in a file called '.cache'.
# It is safe to delete the contents: the tools regenerate it.
# (The old setting 'cache' is still respected if neither of
# these new ones is present.)
cache_dir = "/etc/lvm/cache"
cache_file_prefix = ""
# You can turn off writing this cache file by setting this to 0.
write_cache_state = 1
# Advanced settings.
# List of pairs of additional acceptable block device types found
# in /proc/devices with maximum (non-zero) number of partitions.
# types = [ "fd", 16 ]
# If sysfs is mounted (2.6 kernels) restrict device scanning to
# the block devices it believes are valid.
# 1 enables; 0 disables.
sysfs_scan = 1
# By default, LVM2 will ignore devices used as components of
# software RAID (md) devices by looking for md superblocks.
# 1 enables; 0 disables.
md_component_detection = 1
# By default, if a PV is placed directly upon an md device, LVM2
# will align its data blocks with the md device's stripe-width.
# 1 enables; 0 disables.
md_chunk_alignment = 1
# Default alignment of the start of a data area in MB. If set to 0,
# a value of 64KB will be used. Set to 1 for 1MiB, 2 for 2MiB, etc.
# default_data_alignment = 1
# By default, the start of a PV's data area will be a multiple of
# the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
# - minimum_io_size - the smallest request the device can perform
# w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
# - optimal_io_size - the device's preferred unit of receiving I/O
# (e.g. MD's stripe width)
# minimum_io_size is used if optimal_io_size is undefined (0).
# If md_chunk_alignment is enabled, that detects the optimal_io_size.
# This setting takes precedence over md_chunk_alignment.
# 1 enables; 0 disables.
data_alignment_detection = 1
# Alignment (in KB) of start of data area when creating a new PV.
# md_chunk_alignment and data_alignment_detection are disabled if set.
# Set to 0 for the default alignment (see: data_alignment_default)
# or page size, if larger.
data_alignment = 0
# By default, the start of the PV's aligned data area will be shifted by
# the 'alignment_offset' exposed in sysfs. This offset is often 0 but
# may be non-zero; e.g.: certain 4KB sector drives that compensate for
# windows partitioning will have an alignment_offset of 3584 bytes
# (sector 7 is the lowest aligned logical block, the 4KB sectors start
# at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).
# But note that pvcreate --dataalignmentoffset will skip this detection.
# 1 enables; 0 disables.
data_alignment_offset_detection = 1
# If, while scanning the system for PVs, LVM2 encounters a device-mapper
# device that has its I/O suspended, it waits for it to become accessible.
# Set this to 1 to skip such devices. This should only be needed
# in recovery situations.
ignore_suspended_devices = 0
# During each LVM operation errors received from each device are counted.
# If the counter of a particular device exceeds the limit set here, no
# further I/O is sent to that device for the remainder of the respective
# operation. Setting the parameter to 0 disables the counters altogether.
disable_after_error_count = 0
# Allow use of pvcreate --uuid without requiring --restorefile.
require_restorefile_with_uuid = 1
}
# This section allows you to configure the way in which LVM selects
# free space for its Logical Volumes.
#allocation {
# When searching for free space to extend an LV, the "cling"
# allocation policy will choose space on the same PVs as the last
# segment of the existing LV. If there is insufficient space and a
# list of tags is defined here, it will check whether any of them are
# attached to the PVs concerned and then seek to match those PV tags
# between existing extents and new extents.
# Use the special tag "@*" as a wildcard to match any PV tag.
#
# Example: LVs are mirrored between two sites within a single VG.
# PVs are tagged with either @site1 or @site2 to indicate where
# they are situated.
#
# cling_tag_list = [ "@site1", "@site2" ]
# cling_tag_list = [ "@*" ]
#}
# This section that allows you to configure the nature of the
# information that LVM2 reports.
log {
# Controls the messages sent to stdout or stderr.
# There are three levels of verbosity, 3 being the most verbose.
verbose = 0
# Should we send log messages through syslog?
# 1 is yes; 0 is no.
syslog = 1
# Should we log error and debug messages to a file?
# By default there is no log file.
#file = "/var/log/lvm2.log"
# Should we overwrite the log file each time the program is run?
# By default we append.
overwrite = 0
# What level of log messages should we send to the log file and/or syslog?
# There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
# 7 is the most verbose (LOG_DEBUG).
level = 0
# Format of output messages
# Whether or not (1 or 0) to indent messages according to their severity
indent = 1
# Whether or not (1 or 0) to display the command name on each line output
command_names = 0
# A prefix to use before the message text (but after the command name,
# if selected). Default is two spaces, so you can see/grep the severity
# of each message.
prefix = " "
# To make the messages look similar to the original LVM tools use:
# indent = 0
# command_names = 1
# prefix = " -- "
# Set this if you want log messages during activation.
# Don't use this in low memory situations (can deadlock).
# activation = 0
}
# Configuration of metadata backups and archiving. In LVM2 when we
# talk about a 'backup' we mean making a copy of the metadata for the
# *current* system. The 'archive' contains old metadata configurations.
# Backups are stored in a human readeable text format.
backup {
# Should we maintain a backup of the current metadata configuration ?
# Use 1 for Yes; 0 for No.
# Think very hard before turning this off!
backup = 1
# Where shall we keep it ?
# Remember to back up this directory regularly!
backup_dir = "/etc/lvm/backup"
# Should we maintain an archive of old metadata configurations.
# Use 1 for Yes; 0 for No.
# On by default. Think very hard before turning this off.
archive = 1
# Where should archived files go ?
# Remember to back up this directory regularly!
archive_dir = "/etc/lvm/archive"
# What is the minimum number of archive files you wish to keep ?
retain_min = 10
# What is the minimum time you wish to keep an archive file for ?
retain_days = 30
}
# Settings for the running LVM2 in shell (readline) mode.
shell {
# Number of lines of history to store in ~/.lvm_history
history_size = 100
}
# Miscellaneous global LVM2 settings
global {
# The file creation mask for any files and directories created.
# Interpreted as octal if the first digit is zero.
umask = 077
# Allow other users to read the files
#umask = 022
# Enabling test mode means that no changes to the on disk metadata
# will be made. Equivalent to having the -t option on every
# command. Defaults to off.
test = 0
# Default value for --units argument
units = "h"
# Since version 2.02.54, the tools distinguish between powers of
# 1024 bytes (e.g. KiB, MiB, GiB) and powers of 1000 bytes (e.g.
# KB, MB, GB).
# If you have scripts that depend on the old behaviour, set this to 0
# temporarily until you update them.
si_unit_consistency = 1
# Whether or not to communicate with the kernel device-mapper.
# Set to 0 if you want to use the tools to manipulate LVM metadata
# without activating any logical volumes.
# If the device-mapper kernel driver is not present in your kernel
# setting this to 0 should suppress the error messages.
activation = 1
# If we can't communicate with device-mapper, should we try running
# the LVM1 tools?
# This option only applies to 2.4 kernels and is provided to help you
# switch between device-mapper kernels and LVM1 kernels.
# The LVM1 tools need to be installed with .lvm1 suffices
# e.g. vgscan.lvm1 and they will stop working after you start using
# the new lvm2 on-disk metadata format.
# The default value is set when the tools are built.
# fallback_to_lvm1 = 0
# The default metadata format that commands should use - "lvm1" or "lvm2".
# The command line override is -M1 or -M2.
# Defaults to "lvm2".
# format = "lvm2"
# Location of proc filesystem
proc = "/proc"
# Type of locking to use. Defaults to local file-based locking (1).
# Turn locking off by setting to 0 (dangerous: risks metadata corruption
# if LVM2 commands get run concurrently).
# Type 2 uses the external shared library locking_library.
# Type 3 uses built-in clustered locking.
# Type 4 uses read-only locking which forbids any operations that might
# change metadata.
locking_type = 1
# Set to 0 to fail when a lock request cannot be satisfied immediately.
wait_for_locks = 1
# If using external locking (type 2) and initialisation fails,
# with this set to 1 an attempt will be made to use the built-in
# clustered locking.
# If you are using a customised locking_library you should set this to 0.
fallback_to_clustered_locking = 1
# If an attempt to initialise type 2 or type 3 locking failed, perhaps
# because cluster components such as clvmd are not running, with this set
# to 1 an attempt will be made to use local file-based locking (type 1).
# If this succeeds, only commands against local volume groups will proceed.
# Volume Groups marked as clustered will be ignored.
fallback_to_local_locking = 1
# Local non-LV directory that holds file-based locks while commands are
# in progress. A directory like /tmp that may get wiped on reboot is OK.
locking_dir = "/var/lock/lvm"
# Whenever there are competing read-only and read-write access requests for
# a volume group's metadata, instead of always granting the read-only
# requests immediately, delay them to allow the read-write requests to be
# serviced. Without this setting, write access may be stalled by a high
# volume of read-only requests.
# NB. This option only affects locking_type = 1 viz. local file-based
# locking.
prioritise_write_locks = 1
# Other entries can go here to allow you to load shared libraries
# e.g. if support for LVM1 metadata was compiled as a shared library use
# format_libraries = "liblvm2format1.so"
# Full pathnames can be given.
# Search this directory first for shared libraries.
# library_dir = "/lib"
# The external locking library to load if locking_type is set to 2.
# locking_library = "liblvm2clusterlock.so"
# Treat any internal errors as fatal errors, aborting the process that
# encountered the internal error. Please only enable for debugging.
abort_on_internal_errors = 0
# If set to 1, no operations that change on-disk metadata will be permitted.
# Additionally, read-only commands that encounter metadata in need of repair
# will still be allowed to proceed exactly as if the repair had been
# performed (except for the unchanged vg_seqno).
# Inappropriate use could mess up your system, so seek advice first!
metadata_read_only = 0
}
activation {
# Set to 0 to disable udev synchronisation (if compiled into the binaries).
# Processes will not wait for notification from udev.
# They will continue irrespective of any possible udev processing
# in the background. You should only use this if udev is not running
# or has rules that ignore the devices LVM2 creates.
# The command line argument --nodevsync takes precedence over this setting.
# If set to 1 when udev is not running, and there are LVM2 processes
# waiting for udev, run 'dmsetup udevcomplete_all' manually to wake them up.
udev_sync = 1
# Set to 0 to disable the udev rules installed by LVM2 (if built with
# --enable-udev_rules). LVM2 will then manage the /dev nodes and symlinks
# for active logical volumes directly itself.
# N.B. Manual intervention may be required if this setting is changed
# while any logical volumes are active.
udev_rules = 1
# How to fill in missing stripes if activating an incomplete volume.
# Using "error" will make inaccessible parts of the device return
# I/O errors on access. You can instead use a device path, in which
# case, that device will be used to in place of missing stripes.
# But note that using anything other than "error" with mirrored
# or snapshotted volumes is likely to result in data corruption.
missing_stripe_filler = "error"
# How much stack (in KB) to reserve for use while devices suspended
reserved_stack = 256
# How much memory (in KB) to reserve for use while devices suspended
reserved_memory = 8192
# Nice value used while devices suspended
process_priority = -18
# If volume_list is defined, each LV is only activated if there is a
# match against the list.
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
# Size (in KB) of each copy operation when mirroring
mirror_region_size = 512
# Setting to use when there is no readahead value stored in the metadata.
#
# "none" - Disable readahead.
# "auto" - Use default value chosen by kernel.
readahead = "auto"
# 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define
# how a device failure affecting a mirror is handled.
# A mirror is composed of mirror images (copies) and a log.
# A disk log ensures that a mirror does not need to be re-synced
# (all copies made the same) every time a machine reboots or crashes.
#
# In the event of a failure, the specified policy will be used to determine
# what happens. This applies to automatic repairs (when the mirror is being
# monitored by dmeventd) and to manual lvconvert --repair when
# --use-policies is given.
#
# "remove" - Simply remove the faulty device and run without it. If
# the log device fails, the mirror would convert to using
# an in-memory log. This means the mirror will not
# remember its sync status across crashes/reboots and
# the entire mirror will be re-synced. If a
# mirror image fails, the mirror will convert to a
# non-mirrored device if there is only one remaining good
# copy.
#
# "allocate" - Remove the faulty device and try to allocate space on
# a new device to be a replacement for the failed device.
# Using this policy for the log is fast and maintains the
# ability to remember sync state through crashes/reboots.
# Using this policy for a mirror device is slow, as it
# requires the mirror to resynchronize the devices, but it
# will preserve the mirror characteristic of the device.
# This policy acts like "remove" if no suitable device and
# space can be allocated for the replacement.
#
# "allocate_anywhere" - Not yet implemented. Useful to place the log device
# temporarily on same physical volume as one of the mirror
# images. This policy is not recommended for mirror devices
# since it would break the redundant nature of the mirror. This
# policy acts like "remove" if no suitable device and space can
# be allocated for the replacement.
mirror_log_fault_policy = "allocate"
mirror_image_fault_policy = "remove"
# 'snapshot_autoextend_threshold' and 'snapshot_autoextend_percent' define
# how to handle automatic snapshot extension. The former defines when the
# snapshot should be extended: when its space usage exceeds this many
# percent. The latter defines how much extra space should be allocated for
# the snapshot, in percent of its current size.
#
# For example, if you set snapshot_autoextend_threshold to 70 and
# snapshot_autoextend_percent to 20, whenever a snapshot exceeds 70% usage,
# it will be extended by another 20%. For a 1G snapshot, using up 700M will
# trigger a resize to 1.2G. When the usage exceeds 840M, the snapshot will
# be extended to 1.44G, and so on.
#
# Setting snapshot_autoextend_threshold to 100 disables automatic
# extensions. The minimum value is 50 (A setting below 50 will be treated
# as 50).
snapshot_autoextend_threshold = 100
snapshot_autoextend_percent = 20
# While activating devices, I/O to devices being (re)configured is
# suspended, and as a precaution against deadlocks, LVM2 needs to pin
# any memory it is using so it is not paged out. Groups of pages that
# are known not to be accessed during activation need not be pinned
# into memory. Each string listed in this setting is compared against
# each line in /proc/self/maps, and the pages corresponding to any
# lines that match are not pinned. On some systems locale-archive was
# found to make up over 80% of the memory used by the process.
# mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
# Set to 1 to revert to the default behaviour prior to version 2.02.62
# which used mlockall() to pin the whole process's memory while activating
# devices.
use_mlockall = 0
# Monitoring is enabled by default when activating logical volumes.
# Set to 0 to disable monitoring or use the --ignoremonitoring option.
monitoring = 1
# When pvmove or lvconvert must wait for the kernel to finish
# synchronising or merging data, they check and report progress
# at intervals of this number of seconds. The default is 15 seconds.
# If this is set to 0 and there is only one thing to wait for, there
# are no progress reports, but the process is awoken immediately the
# operation is complete.
polling_interval = 15
}
####################
# Advanced section #
####################
# Metadata settings
#
# metadata {
# Default number of copies of metadata to hold on each PV. 0, 1 or 2.
# You might want to override it from the command line with 0
# when running pvcreate on new PVs which are to be added to large VGs.
# pvmetadatacopies = 1
# Default number of copies of metadata to maintain for each VG.
# If set to a non-zero value, LVM automatically chooses which of
# the available metadata areas to use to achieve the requested
# number of copies of the VG metadata. If you set a value larger
# than the the total number of metadata areas available then
# metadata is stored in them all.
# The default value of 0 ("unmanaged") disables this automatic
# management and allows you to control which metadata areas
# are used at the individual PV level using 'pvchange
# --metadataignore y/n'.
# vgmetadatacopies = 0
# Approximate default size of on-disk metadata areas in sectors.
# You should increase this if you have large volume groups or
# you want to retain a large on-disk history of your metadata changes.
# pvmetadatasize = 255
# List of directories holding live copies of text format metadata.
# These directories must not be on logical volumes!
# It's possible to use LVM2 with a couple of directories here,
# preferably on different (non-LV) filesystems, and with no other
# on-disk metadata (pvmetadatacopies = 0). Or this can be in
# addition to on-disk metadata areas.
# The feature was originally added to simplify testing and is not
# supported under low memory situations - the machine could lock up.
#
# Never edit any files in these directories by hand unless you
# you are absolutely sure you know what you are doing! Use
# the supplied toolset to make changes (e.g. vgcfgrestore).
# dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
#}
# Event daemon
#
dmeventd {
# mirror_library is the library used when monitoring a mirror device.
#
# "libdevmapper-event-lvm2mirror.so" attempts to recover from
# failures. It removes failed devices from a volume group and
# reconfigures a mirror as necessary. If no mirror library is
# provided, mirrors are not monitored through dmeventd.
mirror_library = "libdevmapper-event-lvm2mirror.so"
# snapshot_library is the library used when monitoring a snapshot device.
#
# "libdevmapper-event-lvm2snapshot.so" monitors the filling of
# snapshots and emits a warning through syslog when the use of
# the snapshot exceeds 80%. The warning is repeated when 85%, 90% and
# 95% of the snapshot is filled.
snapshot_library = "libdevmapper-event-lvm2snapshot.so"
# Full path of the dmeventd binary.
#
# executable = "/sbin/dmeventd"
}
부록 C. LVM 객체 태그
database 태그로된 모든 논리 볼륨을 나열합니다.
lvs @database
C.1. 객체 태그 추가 및 삭제
pvchange 명령의 --addtag 또는 --deltag 옵션을 사용합니다.
vgchange 또는 vgcreate 명령의 --addtag 또는 --deltag 옵션을 사용합니다.
lvchange 또는 lvcreate 명령의 --addtag 또는 --deltag 옵션을 사용합니다.
pvchange, vgchange, lvchange의 단일 명령으로 --addtag 및 --deltag 인수를 지정할 수 있습니다. 예를 들어, 다음 명령에서는 태그 T9와 T10을 삭제하고 태그 T13과 T14를 볼륨 그룹 grant에 추가합니다.
vgchange --deltag T9 --deltag T10 --addtag T13 --addtag T14 grant
C.2. 호스트 태그
tags 섹션에서 hosttags = 1을 설정했을 경우, 호스트 태그는 컴퓨터의 호스트명을 사용하여 자동으로 지정됩니다. 이는 컴퓨터에서 복사될 수 있는 일반적인 설정 파일을 사용하게 하지만, 호스트명에 따라 컴퓨터에서 다르게 작동합니다.
tag1로 지정되고, 호스트명이 host1으로 지정되어 있을 경우 tag2로 지정됩니다.
tags { tag1 { } tag2 { host_list = ["host1"] } }
C.3. 태그로 활성화 관리
vgchange -ay)에 대해 필터로 작동하면 해당 호스트 상의 메타 데이터에 있는 database 태그로 된 vg1/lvol0, 모든 논리 볼륨, 볼륨 그룹만이 활성화됩니다.
activation { volume_list = ["vg1/lvol0", "@database" ] }
tags { hosttags = 1 }
vg1/lvol2 만을 활성화하려면 다음을 실행합니다:
- 클러스터에 있는 아무 호스트에서
lvchange --addtag @db2 vg1/lvol2명령을 실행합니다. lvchange -ay vg1/lvol2명령을 실행합니다.
부록 D. LVM 볼륨 그룹 메타데이터
pvcreate 명령의 --metadatacopies 0 옵션을 사용하여 메타 데이터 복사본 없이 물리 볼륨을 생성할 수 있습니다. 메타 데이터 복사본 수를 선택하면 물리 볼륨이 포함되며, 나중에 이를 변경할 수 없게 됩니다. 0 개의 복사본을 선택하면 설정 변경에서 보다 빠른 업데이트를 할 수 있습니다. (파일 시스템에 볼륨 그룹 메타 데이터를 저장하게 하는 고급 설정을 사용하지 않는 한) 항상 모든 볼륨 그룹에는 메타 데이터 영역과 함께 최소 하나의 물리 볼륨이 들어 있어야 함에 유의합니다. 차후에 볼륨 그룹을 나누고자 할 경우, 모든 볼륨 그룹에는 최소 하나의 메타 데이터 복사본이 있어야 합니다.
pvcreate 명령의 --metadatasize. 옵션을 사용하여 메타 데이터 영역 크기를 지정할 수 있습니다. 여러 논리 볼륨 또는 물리 볼륨이 있는 볼륨 그룹의 경우 기본값 크기는 너무 작게 됩니다.
D.1. 물리 볼륨 레이블
pvcreate 명령은 두 번째 512 바이트 섹터에서 물리 볼륨 레이블을 둡니다. 다른 방법으로 물리 볼륨 레이블을 찾는 LVM 도구가 처음 4개의 섹터를 확인하므로 이러한 레이블을 처음 네 개의 섹터 중 아무곳에 둘 수 있습니다. 물리 볼륨 레이블은 LABELONE 문자열로 시작합니다.
- 물리 볼륨 UUID
- 바이트 단위로 된 블록 장치 크기
- NULL로 종료되는 데이터 영역 위치 목록
- NULL로 종료되는 메타 데이터 영역 위치 목록
D.2. 메타데이터 컨텐츠
- 생성 시기 및 방법에 관한 정보
- 볼륨 그룹에 관한 정보:
- 이름 및 고유 id
- 메타데이터가 업데이트될 때마다 증가하는 버전 번호
- 기타 속성: 읽기/쓰기? 크기 조정 가능?
- 물리 볼륨 및 논리 볼륨의 수에 대한 관리 제한
- 익스텐트 크기 (512 바이트로 지정된 섹터 단위)
- 볼륨 그룹을 만드는 물리 볼륨의 비순서 목록 각각은 다음과 같이 구성되어 있습니다 :
- 블록 장치를 지정하는데 사용되는 UUID
- 물리 볼륨의 할당 여부와 같은 속성
- (섹터에서) 물리 볼륨 안에 있는 첫 번째 익스텐트 시작에서 오프셋
- 익스텐트 수
- 논리 볼륨의 비순서 목록 각각은 다음과 같이 구성되어 있습니다
- 논리 볼륨 세그먼트의 순서 목록. 각각의 세그먼트에 대해 메타데이터에는 물리 볼륨 세그먼트나 논리 볼륨 세그먼트의 순서 목록에 적용되는 맵핑이 들어 있습니다.
D.3. 메타데이터의 예
myvg라는 볼륨 그룹의 LVM 볼륨 그룹 메타데이터 예를 보여주고 있습니다.
# Generated by LVM2: Tue Jan 30 16:28:15 2007
contents = "Text Format Volume Group"
version = 1
description = "Created *before* executing 'lvextend -L+5G /dev/myvg/mylv /dev/sdc'"
creation_host = "tng3-1" # Linux tng3-1 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686
creation_time = 1170196095 # Tue Jan 30 16:28:15 2007
myvg {
id = "0zd3UT-wbYT-lDHq-lMPs-EjoE-0o18-wL28X4"
seqno = 3
status = ["RESIZEABLE", "READ", "WRITE"]
extent_size = 8192 # 4 Megabytes
max_lv = 0
max_pv = 0
physical_volumes {
pv0 {
id = "ZBW5qW-dXF2-0bGw-ZCad-2RlV-phwu-1c1RFt"
device = "/dev/sda" # Hint only
status = ["ALLOCATABLE"]
dev_size = 35964301 # 17.1491 Gigabytes
pe_start = 384
pe_count = 4390 # 17.1484 Gigabytes
}
pv1 {
id = "ZHEZJW-MR64-D3QM-Rv7V-Hxsa-zU24-wztY19"
device = "/dev/sdb" # Hint only
status = ["ALLOCATABLE"]
dev_size = 35964301 # 17.1491 Gigabytes
pe_start = 384
pe_count = 4390 # 17.1484 Gigabytes
}
pv2 {
id = "wCoG4p-55Ui-9tbp-VTEA-jO6s-RAVx-UREW0G"
device = "/dev/sdc" # Hint only
status = ["ALLOCATABLE"]
dev_size = 35964301 # 17.1491 Gigabytes
pe_start = 384
pe_count = 4390 # 17.1484 Gigabytes
}
pv3 {
id = "hGlUwi-zsBg-39FF-do88-pHxY-8XA2-9WKIiA"
device = "/dev/sdd" # Hint only
status = ["ALLOCATABLE"]
dev_size = 35964301 # 17.1491 Gigabytes
pe_start = 384
pe_count = 4390 # 17.1484 Gigabytes
}
}
logical_volumes {
mylv {
id = "GhUYSF-qVM3-rzQo-a6D2-o0aV-LQet-Ur9OF9"
status = ["READ", "WRITE", "VISIBLE"]
segment_count = 2
segment1 {
start_extent = 0
extent_count = 1280 # 5 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
segment2 {
start_extent = 1280
extent_count = 1280 # 5 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv1", 0
]
}
}
}
}
부록 E. 개정 내역
| 고친 과정 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 고침 1-12.400 | 2013-10-31 | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
| 고침 1-12 | 2012-07-18 | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
| 고침 2.0-1 | Thu May 19 2011 | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
| 고침 1.0-1 | Wed Nov 10 2010 | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
색인
Symbols
- /lib/udev/rules.d directory, 장치 맵퍼 (Device Mapper)로 udev 통합
- 개요
- 새로운 기능 및 변경된 기능, 새로운 기능 및 변경된 기능
- 경로 이름, CLI 명령 사용
- 관리 절차, LVM 관리 개요
- 논리 볼륨
- lvs 디스플레이 인수, lvs 명령
- 관리, 일반, 논리 볼륨 관리
- 늘리기, 논리 볼륨 늘리기
- 로컬 액세스, 클러스터에 있는 개별적 노드에서 논리 볼륨 활성화
- 매개 변수 변경, 논리 볼륨 그룹의 매개 변수 변경
- 미러, 미러 볼륨 생성
- 배타적 액세스, 클러스터에 있는 개별적 노드에서 논리 볼륨 활성화
- 보기, 논리 볼륨 보기 , LVM 용 사용자 설정 리포트 , lvs 명령
- 삭제, 논리 볼륨 삭제
- 생성, 선형 논리 볼륨 생성
- 선형, 선형 논리 볼륨 생성
- 설정 예, 세 개의 디스크에 LVM 논리 볼륨 생성
- 스냅샷, 스냅샷 볼륨 생성
- 스트라이프, 스트라이프 (striped) 볼륨 생성
- 이름 변경, 논리 볼륨 이름 변경
- 정의, 논리 볼륨 , LVM 논리적 볼륨
- 축소, 논리 볼륨 축소하기
- 크기 조정, 논리 볼륨 크기 조정
- 확장, 논리 볼륨 늘리기
- 논리 볼륨 활성화
- 개별적 노드, 클러스터에 있는 개별적 노드에서 논리 볼륨 활성화
- 단위, 명령행, CLI 명령 사용
- 데이터 재배치, 온라인, 온라인 데이터 재배치
- 도움말 보기, CLI 명령 사용
- 로깅, 로깅
- 리포트 포맷, LVM 장치, LVM 용 사용자 설정 리포트
- 메타데이터
- 백업, 논리 볼륨 백업 , 볼륨 그룹 메타 데이터 백업
- 복구, 물리 볼륨 메타 데이터 복구
- 명령행 단위, CLI 명령 사용
- 문제 해결, LVM 문제 해결
- 물리 볼륨
- pvs 디스플레이 인수, pvs 명령
- 관리, 일반, 물리 볼륨 관리
- 그림, LVM 물리 볼륨 레이아웃
- 레이아웃, LVM 물리 볼륨 레이아웃
- 보기, 물리 볼륨 보기 , LVM 용 사용자 설정 리포트 , pvs 명령
- 복구, 손실된 물리 볼륨 대체
- 볼륨 그룹에 추가, 볼륨 그룹에 물리 볼륨 추가
- 볼륨 그룹에서 삭제, 볼륨 그룹에서 물리 볼륨 삭제
- 삭제, 물리 볼륨 삭제
- 생성, 물리 볼륨 생성
- 손실된 볼륨 제거, 볼륨 그룹에서 손실된 물리 볼륨 제거
- 정의, 물리 볼륨
- 초기화, 물리 볼륨 초기화
- 크기 조정, 물리 볼륨 크기 조정
- 물리 익스텐트
- 할당을 허용하지 않음, 물리 볼륨에서 할당을 허용하지 않음
- 미러 논리 볼륨
- 생성, 미러 볼륨 생성
- 선형 논리 볼륨으로 변환, 미러 볼륨 설정 변경
- 실패 정책, 미러 논리 볼륨 실패 정책
- 장애 복구, LVM 미러 장애 복구
- 재설정, 미러 볼륨 설정 변경
- 정의, 미러 (Mirrored) 논리 볼륨
- 클러스터, 클러스터에 미러 LVM 논리 볼륨 생성
- 백업
- 메타 데이터, 논리 볼륨 백업 , 볼륨 그룹 메타 데이터 백업
- 파일, 논리 볼륨 백업
- 보기
- 볼륨 그룹
- vgs 디스플레이 인수, vgs 명령
- 관리, 일반, 볼륨 그룹 관리
- 나누기, 볼륨 그룹 나누기
- 예시 절차, 볼륨 그룹 나누기
- 늘리기, 볼륨 그룹에 물리 볼륨 추가
- 매개 변수 변경, 볼륨 그룹의 매개 변수 변경
- 보기, 볼륨 그룹 보기 , LVM 용 사용자 설정 리포트 , vgs 명령
- 비활성화, 볼륨 그룹 활성화 및 비활성화
- 삭제, 볼륨 그룹 삭제
- 생성, 볼륨 그룹 생성
- 시스템 간 이동, 다른 시스템으로 볼륨 그룹 이동
- 이름 변경, 볼륨 그룹 이름 변경
- 정의, 볼륨 그룹
- 축소, 볼륨 그룹에서 물리 볼륨 삭제
- 클러스터에 생성, 클러스터에서 볼륨 그룹 생성
- 합치기, 볼륨 그룹 합치기
- 확장, 볼륨 그룹에 물리 볼륨 추가
- 활성화, 볼륨 그룹 활성화 및 비활성화
- 볼륨 그룹 비활성화, 볼륨 그룹 활성화 및 비활성화
- 로컬 노드에서만, 볼륨 그룹 활성화 및 비활성화
- 하나의 노드에서 배타적으로, 볼륨 그룹 활성화 및 비활성화
- 볼륨 그룹 활성화, 볼륨 그룹 활성화 및 비활성화
- 개별적 노드, 볼륨 그룹 활성화 및 비활성화
- 로컬 노드 전용, 볼륨 그룹 활성화 및 비활성화
- 불충분한 여유 익스텐트 메세지, 논리 볼륨에 대해 불충분한 여유 익스텐트
- 블록 장치
- 스캐닝, 블록 장치 스캐닝
- 삭제
- 논리 볼륨, 논리 볼륨 삭제
- 논리 볼륨에서 디스크, 논리 볼륨에서 디스크 삭제하기
- 물리 볼륨, 물리 볼륨 삭제
- 상세 출력, CLI 명령 사용
- 새로운 기능 및 변경된 기능, 새로운 기능 및 변경된 기능
- 생성
- 논리 볼륨, 선형 논리 볼륨 생성
- 논리 볼륨, 예, 세 개의 디스크에 LVM 논리 볼륨 생성
- 물리 볼륨, 물리 볼륨 생성
- 볼륨 그룹, 볼륨 그룹 생성
- 볼륨 그룹, 클러스터, 클러스터에서 볼륨 그룹 생성
- 스트라이프 논리 볼륨, 예, 스트라이프 (Striped) 논리 볼륨 생성
- 클러스터에 있는 LVM 볼륨, 클러스터에 LVM 볼륨 생성
- 선형 논리 볼륨
- 미러 볼륨으로 변환, 미러 볼륨 설정 변경
- 생성, 선형 논리 볼륨 생성
- 정의, 선형 (Linear) 볼륨
- 설정 예, LVM 설정 예
- 스냅샷 논리 볼륨
- 생성, 스냅샷 볼륨 생성
- 스냅샷 볼륨
- 정의, 스냅샷 볼륨
- 스캐닝
- 블록 장치, 블록 장치 스캐닝
- 스트라이프 논리 볼륨
- 늘리기, 스트라이프 볼륨 확장
- 생성, 스트라이프 (striped) 볼륨 생성
- 생성 예, 스트라이프 (Striped) 논리 볼륨 생성
- 정의, 스트라이프 (Striped) 논리 볼륨
- 확장, 스트라이프 볼륨 확장
- 실패한 장치
- 보기, 실패한 장치에 있는 정보 보기
- 아카이브 파일, 논리 볼륨 백업
- 영구 장치 번호, 영구 장치 번호
- 온라인 데이터 재배치, 온라인 데이터 재배치
- 이름 변경
- 논리 볼륨, 논리 볼륨 이름 변경
- 볼륨 그룹, 볼륨 그룹 이름 변경
- 익스텐트
- 장치 경로 이름, CLI 명령 사용
- 장치 번호
- 장치 스캐닝, 필터, 필터로 LVM 장치 스캔 제어
- 장치 스캔 필터, 필터로 LVM 장치 스캔 제어
- 장치 크기, 최대, 볼륨 그룹 생성
- 장치 특수 파일 디렉토리, 볼륨 그룹 생성
- 초기화
- 캐시 파일
- 크기 조정
- 논리 볼륨, 논리 볼륨 크기 조정
- 물리 볼륨, 물리 볼륨 크기 조정
- 클러스터 환경, CLVM (Clustered Logical Volume Manager) , 클러스터에 LVM 볼륨 생성
- 파일 시스템
- 논리 볼륨에 늘리기, 논리 볼륨에 파일 시스템 늘리기
- 파일 시스템 늘리기
- 논리 볼륨, 논리 볼륨에 파일 시스템 늘리기
- 파티션
- 다중, 디스크에서 다중 파티션
- 파티션 유형, 설정, 파티션 유형 설정
- 피드백
- 이 문서에 대한 연락처 정보, 피드백을 보내 주십시오!
- 필터, 필터로 LVM 장치 스캔 제어
- 할당
- 정책, 볼륨 그룹 생성
- 허용하지 않음, 물리 볼륨에서 할당을 허용하지 않음
A
- archive 파일, 볼륨 그룹 메타 데이터 백업
B
- backup 파일, 볼륨 그룹 메타 데이터 백업
C
L
- lvchange 명령, 논리 볼륨 그룹의 매개 변수 변경
- lvconvert 명령, 미러 볼륨 설정 변경
- lvcreate 명령, 선형 논리 볼륨 생성
- lvdisplay 명령, 논리 볼륨 보기
- lvextend 명령, 논리 볼륨 늘리기
- LVM
- 구성 요소, LVM 아키텍쳐 개요 , LVM 구성 요소
- 내역, LVM 아키텍쳐 개요
- 논리 볼륨 관리, 논리 볼륨 관리
- 도움말, CLI 명령 사용
- 디렉토리 구조, 볼륨 그룹 생성
- 레이블, 물리 볼륨
- 로깅, 로깅
- 물리 볼륨 관리, 물리 볼륨 관리
- 물리 볼륨, 정의, 물리 볼륨
- 볼륨 그룹, 정의, 볼륨 그룹
- 사용자 정의 리포트 포맷, LVM 용 사용자 설정 리포트
- 아키텍쳐 개요, LVM 아키텍쳐 개요
- 클러스터, CLVM (Clustered Logical Volume Manager)
- LVM 볼륨 생성
- 개요, 논리 볼륨 생성에 관한 개요
- LVM1, LVM 아키텍쳐 개요
- LVM2, LVM 아키텍쳐 개요
- lvmdiskscan 명령, 블록 장치 스캐닝
- lvreduce 명령, 논리 볼륨 크기 조정 , 논리 볼륨 축소하기
- lvremove 명령, 논리 볼륨 삭제
- lvrename 명령, 논리 볼륨 이름 변경
- lvs 명령, LVM 용 사용자 설정 리포트 , lvs 명령
- 디스플레이 인수, lvs 명령
- lvscan 명령, 논리 볼륨 보기
M
- man 페이지 보기, CLI 명령 사용
- mirror_image_fault_policy 설정 매개 변수, 미러 논리 볼륨 실패 정책
- mirror_log_fault_policy 설정 매개 변수, 미러 논리 볼륨 실패 정책
P
- pvdisplay 명령, 물리 볼륨 보기
- pvmove 명령, 온라인 데이터 재배치
- pvremove 명령, 물리 볼륨 삭제
- pvresize 명령, 물리 볼륨 크기 조정
- pvs 명령, LVM 용 사용자 설정 리포트
- 디스플레이 인수, pvs 명령
- pvscan 명령, 물리 볼륨 보기
R
- rules.d directory, 장치 맵퍼 (Device Mapper)로 udev 통합
U
- udev 규칙, 장치 맵퍼 (Device Mapper)로 udev 통합
- udev 장치 관리자, udev 장치 관리자에 대해 장치 매퍼(Device Mapper) 지원
V
- vgcfbackup 명령, 볼륨 그룹 메타 데이터 백업
- vgcfrestore 명령, 볼륨 그룹 메타 데이터 백업
- vgchange 명령, 볼륨 그룹의 매개 변수 변경
- vgcreate 명령, 볼륨 그룹 생성 , 클러스터에서 볼륨 그룹 생성
- vgdisplay 명령, 볼륨 그룹 보기
- vgexport 명령, 다른 시스템으로 볼륨 그룹 이동
- vgextend 명령, 볼륨 그룹에 물리 볼륨 추가
- vgimport 명령, 다른 시스템으로 볼륨 그룹 이동
- vgmerge 명령, 볼륨 그룹 합치기
- vgmknodes 명령, 볼륨 그룹 디렉토리 재생성
- vgreduce 명령, 볼륨 그룹에서 물리 볼륨 삭제
- vgrename 명령, 볼륨 그룹 이름 변경
- vgs 명령, LVM 용 사용자 설정 리포트
- 디스플레이 인수, vgs 명령
- vgscan 명령, 캐시 파일 작성을 위해 볼륨 그룹에 해당하는 디스크 보기
- vgsplit 명령, 볼륨 그룹 나누기
