논리 볼륨 구성 및 관리
LVM 구성 및 관리
초록
Red Hat 문서에 관한 피드백 제공
문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (등록 필요)
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 모음에서 생성 을 클릭합니다.
- Summary (요약) 필드에 설명 제목을 입력합니다.
- Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
1장. 논리 볼륨 관리 개요
LVM(Logical Volume Manager)은 물리 스토리지에 대한 추상화 계층을 생성하므로 논리 스토리지 볼륨을 생성할 수 있습니다. 이를 통해 직접 물리적 스토리지 사용량에 비해 유연성이 향상됩니다.
또한 하드웨어 스토리지 구성이 소프트웨어에 숨겨져 있으므로 애플리케이션을 중지하거나 파일 시스템을 마운트 해제하지 않고도 크기를 조정하고 이동할 수 있습니다. 이는 운영 비용을 절감할 수 있습니다.
1.1. LVM 아키텍처
다음은 LVM의 구성 요소입니다.
- 물리 볼륨
- PV(물리 볼륨)는 LVM 사용을 위해 지정된 파티션 또는 전체 디스크입니다. 자세한 내용은 LVM 물리 볼륨 관리를 참조하십시오.
- 볼륨 그룹
- 볼륨 그룹(VG)은 논리 볼륨을 할당할 수 있는 디스크 공간 풀을 생성하는 PV(물리 볼륨) 컬렉션입니다. 자세한 내용은 LVM 볼륨 그룹 관리를 참조하십시오.
- 논리 볼륨
- 논리 볼륨은 사용 가능한 스토리지 장치를 나타냅니다. 자세한 내용은 기본 논리 볼륨 관리 및 고급 논리 볼륨 관리를 참조하십시오.
다음 다이어그램은 LVM 구성 요소를 보여줍니다.
그림 1.1. LVM 논리 볼륨 구성 요소
1.2. LVM의 장점
논리 볼륨은 물리 스토리지를 직접 사용하는 것보다 다음과 같은 이점을 제공합니다.
- 유연한 용량
- 논리 볼륨을 사용하는 경우 장치 및 파티션을 단일 논리 볼륨에 집계할 수 있습니다. 이 기능을 사용하면 파일 시스템을 단일 대규모 장치처럼 여러 장치에 걸쳐 확장할 수 있습니다.
- 편리한 장치 이름 지정
- 논리 스토리지 볼륨은 사용자 정의 및 사용자 정의 이름으로 관리할 수 있습니다.
- 크기 조정할 수 있는 스토리지 볼륨
- 기본 장치를 다시 포맷하고 다시 분할하지 않고도 간단한 소프트웨어 명령으로 논리 볼륨을 확장하거나 논리 볼륨을 줄일 수 있습니다. 자세한 내용은 논리 볼륨 재조정 을 참조하십시오.
- 온라인 데이터 재배치
최신 스토리지 하위 시스템을 배포하려면
pvmove
명령을 사용하여 시스템을 활성화하는 동안 데이터를 이동할 수 있습니다. 디스크를 사용하는 동안 디스크에 데이터를 다시 정렬할 수 있습니다. 예를 들어, 제거하기 전에 핫 스왑 가능 디스크를 비울 수 있습니다.데이터를 마이그레이션하는 방법에 대한 자세한 내용은
pvmove
도움말 페이지 및 볼륨 그룹에서 물리 볼륨 제거를 참조하십시오.- 스트라이핑된 볼륨
- 두 개 이상의 장치에서 데이터를 스트라이핑하는 논리 볼륨을 만들 수 있습니다. 이로 인해 처리량이 크게 증가할 수 있습니다. 자세한 내용은 스트라이핑된 논리 볼륨 생성 을 참조하십시오.
- RAID 볼륨
- 논리 볼륨은 편리하게 데이터에 대한 RAID를 구성할 수 있는 방법을 제공합니다. 이로 인해 장치 장애에 대한 보호가 가능하며 성능이 향상됩니다. 자세한 내용은 RAID 논리 볼륨 구성 을 참조하십시오.
- 볼륨 스냅샷
- 일관된 백업을 위해 논리 볼륨의 시점 복사본인 스냅샷을 찍거나 실제 데이터에 영향을 주지 않고 변경의 영향을 테스트할 수 있습니다. 자세한 내용은 논리 볼륨 스냅샷 관리를 참조하십시오.
- 씬 볼륨
- 논리 볼륨은 씬 프로비저닝할 수 있습니다. 이를 통해 사용 가능한 물리 공간보다 큰 논리 볼륨을 만들 수 있습니다. 자세한 내용은 thin 논리 볼륨 생성 을 참조하십시오.
- 캐싱
- 캐싱은 SSD와 같은 빠른 장치를 사용하여 논리 볼륨의 데이터를 캐시하여 성능을 향상시킵니다. 자세한 내용은 논리 볼륨 캐싱 을 참조하십시오.
추가 리소스
2장. LVM 물리 볼륨 관리
PV(물리 볼륨)는 LVM에서 사용하는 스토리지 장치의 물리 스토리지 장치 또는 파티션입니다.
초기화 프로세스 중에 LVM 디스크 레이블 및 메타데이터가 장치에 기록되므로 LVM에서 논리 볼륨 관리 스키마의 일부로 이를 추적하고 관리할 수 있습니다.
초기화 후에는 메타데이터 크기를 늘릴 수 없습니다. 더 큰 메타데이터가 필요한 경우 초기화 프로세스 중에 적절한 크기를 설정해야 합니다.
초기화 프로세스가 완료되면 PV를 볼륨 그룹(VG)에 할당할 수 있습니다. 이 VG를 운영 체제와 애플리케이션에 사용할 수 있는 가상 블록 장치인 LV(논리 볼륨)로 나눌 수 있습니다.
최적의 성능을 보장하기 위해 LVM을 사용할 수 있도록 전체 디스크를 단일 PV로 분할합니다.
2.1. LVM 물리 볼륨 생성
pvcreate
명령을 사용하여 물리 볼륨 LVM 사용을 초기화할 수 있습니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다.
절차
물리 볼륨으로 사용할 스토리지 장치를 식별합니다. 사용 가능한 모든 스토리지 장치를 나열하려면 다음을 사용합니다.
$ lsblk
LVM 물리 볼륨을 생성합니다.
# pvcreate /dev/sdb
/dev/sdb 를 물리 볼륨으로 초기화하려는 장치 이름으로 바꿉니다.
검증 단계
생성된 물리 볼륨을 표시합니다.
# pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 a-- 28.87g 13.87g
추가 리소스
-
pvcreate(8)
,pvdisplay(8)
,pvs(8)
,pvscan(8)
및lvm(8)
도움말 페이지
2.2. 스토리지
RHEL 시스템 역할을 사용하여 물리 볼륨 크기 조정
스토리지
시스템 역할을 사용하면 호스트 외부에서 기본 스토리지 또는 디스크의 크기를 조정한 후 LVM 물리 볼륨의 크기를 조정할 수 있습니다. 예를 들어 가상 디스크의 크기가 증가하여 기존 LVM에서 추가 공간을 사용하려고 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 기본 블록 스토리지의 크기가 변경되었습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM PV size ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_pools: - name: myvg disks: ["sdf"] type: lvm grow_to_fill: true
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
새 물리 볼륨 크기를 표시합니다.
$ ansible managed-node-01.example.com -m command -a 'pvs' PV VG Fmt Attr PSize PFree /dev/sdf1 myvg lvm2 a-- 1,99g 1,99g
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일 -
/usr/share/doc/rhel-system-roles/storage/
디렉터리
2.3. LVM 물리 볼륨 제거
pvremove
명령을 사용하여 LVM 사용의 물리 볼륨을 제거할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
물리 볼륨을 나열하여 제거할 장치를 식별합니다.
# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 28.87g 28.87g
물리 볼륨 제거:
# pvremove /dev/sdb1
/dev/sdb1 을 물리 볼륨과 연결된 장치의 이름으로 바꿉니다.
물리 볼륨이 볼륨 그룹의 일부인 경우 먼저 볼륨 그룹에서 제거해야 합니다.
볼륨 그룹에 하나 이상의 물리 볼륨이 포함된 경우 Cryostatreduce
명령을
사용합니다.# vgreduce VolumeGroupName /dev/sdb1
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. /dev/sdb1 을 장치 이름으로 바꿉니다.
볼륨 그룹에 하나의 물리 볼륨이 포함된 경우 Cryostat
remove
명령을 사용합니다.# vgremove VolumeGroupName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
검증
물리 볼륨이 제거되었는지 확인합니다.
# pvs
추가 리소스
-
시스템의
pvremove(8)
도움말 페이지
2.4. 웹 콘솔에서 논리 볼륨 생성
논리 볼륨은 물리 드라이브 역할을 합니다. RHEL 9 웹 콘솔을 사용하여 볼륨 그룹에 LVM 논리 볼륨을 생성할 수 있습니다.
사전 요구 사항
RHEL 9 웹 콘솔을 설치했습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
cockpit-storaged
패키지가 시스템에 설치됩니다. - 볼륨 그룹이 생성됩니다.
절차
RHEL 9 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 스토리지를 클릭합니다.
- 스토리지 테이블에서 논리 볼륨을 생성할 볼륨 그룹을 클릭합니다.
- 논리 볼륨 그룹 페이지에서 LVM2 논리 볼륨 섹션으로 스크롤하고 를 클릭합니다. 만들기
- 이름 필드에 새 논리 볼륨의 이름을 입력합니다. 이름에 공백을 포함하지 마십시오.
파일 시스템에 대한 블록 장치를 선택합니다.
(용도) 드롭다운 메뉴에서이 구성을 사용하면 볼륨 그룹에 포함된 모든 드라이브의 용량 합계와 동일한 최대 볼륨 크기를 사용하여 논리 볼륨을 생성할 수 있습니다.
논리 볼륨의 크기를 정의합니다. 다음을 고려하십시오.
- 이 논리 볼륨을 사용하는 시스템에 얼마나 많은 공간이 필요합니까.
- 생성할 논리 볼륨 수입니다.
전체 공간을 사용할 필요는 없습니다. 필요한 경우 나중에 논리 볼륨을 확장할 수 있습니다.
논리 볼륨이 생성됩니다. 논리 볼륨을 사용하려면 볼륨을 포맷하고 마운트해야 합니다.
검증
논리 볼륨 페이지에서 LVM2 논리 볼륨 섹션으로 스크롤하고 새 논리 볼륨이 나열되는지 확인합니다.
2.5. 웹 콘솔에서 논리 볼륨 포맷
논리 볼륨은 물리 드라이브 역할을 합니다. 이를 사용하려면 파일 시스템으로 포맷해야 합니다.
논리 볼륨을 포맷하면 볼륨의 모든 데이터가 지워집니다.
선택한 파일 시스템에 논리 볼륨에 사용할 수 있는 구성 매개변수가 결정됩니다. 예를 들어 XFS 파일 시스템은 볼륨 축소를 지원하지 않습니다.
사전 요구 사항
RHEL 9 웹 콘솔을 설치했습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
cockpit-storaged
패키지가 시스템에 설치됩니다. - 생성된 논리 볼륨입니다.
- 시스템에 대한 root 액세스 권한이 있습니다.
절차
RHEL 9 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 스토리지를 .
- 스토리지 표에서 논리 볼륨의 볼륨 그룹이 생성됩니다.
- 논리 볼륨 그룹 페이지에서 LVM2 논리 볼륨 섹션으로 스크롤합니다.
- 포맷할 볼륨 그룹 옆에 있는 메뉴 버튼 Cryostat를 클릭합니다.
드롭다운 메뉴에서
선택합니다.- 이름 필드에 파일 시스템의 이름을 입력합니다.
마운트 지점 필드에서 마운트 경로를 추가합니다.
XFS 파일 시스템은 대규모 논리 볼륨을 지원하며 중단 없이 물리적 드라이브를 온라인 상태로 전환하며 기존 파일 시스템을 확장합니다. 다른 강력한 기본 설정이 없는 경우 이 파일 시스템을 선택한 상태로 두십시오.
XFS는 XFS 파일 시스템으로 포맷된 볼륨의 크기 감소를 지원하지 않습니다.
ext4 파일 시스템은 다음을 지원합니다.
- 논리 볼륨
- 중단 없이 온라인으로 물리적 드라이브 전환
- 파일 시스템 확장
- 파일 시스템 축소
RHEL 웹 콘솔에서 0으로 전체 디스크를 다시 작성하려면 0이 포함된 기존 데이터 덮어쓰기 확인란을 선택합니다. 이 옵션은 프로그램이 전체 디스크를 통과해야 하지만 더 안전합니다. 디스크에 데이터가 포함되어 있고 덮어써야 하는 경우 이 옵션을 사용합니다.
제로가 0인 기존 데이터를 덮어쓰 지 않은 경우 RHEL 웹 콘솔은 디스크 헤더만 다시 작성합니다. 이렇게 하면 포맷 속도가 증가합니다.
LUKS1(Linux Unified Key Setup) 또는 LUKS2 암호화가 있는 버전을 선택하여 암호를 사용하여 볼륨을 암호화할 수 있습니다.
- 드롭다운 메뉴에서 시스템이 부팅된 후 논리 볼륨을 마운트할 시기를 선택합니다.
- 필요한 마운트 옵션을 선택합니다.
논리 볼륨을 포맷합니다.
- 볼륨을 포맷하고 즉시 마운트하려면 합니다.
마운트하지 않고 볼륨을 포맷하려면
클릭합니다.볼륨 크기 및 선택한 포맷 옵션에 따라 포맷 지정에 몇 분이 걸릴 수 있습니다.
검증
논리 볼륨 그룹 페이지에서 LVM2 논리 볼륨 섹션으로 스크롤하고 논리 볼륨을 클릭하여 세부 정보 및 추가 옵션을 확인합니다.
- 옵션을 선택한 경우 논리 볼륨 행 끝에 있는 메뉴 버튼을 클릭하고 를 선택하여 논리 볼륨을 사용합니다.
2.6. 웹 콘솔에서 논리 볼륨 크기 조정
RHEL 9 웹 콘솔에서 논리 볼륨을 확장하거나 줄일 수 있습니다. 예제 절차에서는 볼륨을 오프라인 상태로 전환하지 않고 논리 볼륨의 크기를 늘리고 줄이는 방법을 보여줍니다.
polkit2 또는 XFS 파일 시스템이 포함된 볼륨을 줄일 수 없습니다.
사전 요구 사항
RHEL 9 웹 콘솔을 설치했습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
cockpit-storaged
패키지가 시스템에 설치됩니다. - 논리 볼륨 크기 조정을 지원하는 파일 시스템이 포함된 기존 논리 볼륨.
절차
- RHEL 웹 콘솔에 로그인합니다.
- 스토리지를 .
- 스토리지 표에서 논리 볼륨의 볼륨 그룹이 생성됩니다.
논리 볼륨 그룹 페이지에서 LVM2 논리 볼륨 섹션으로 스크롤하고 크기를 조정할 볼륨 그룹 옆에 있는 Cryostat 메뉴 버튼을 클릭합니다.
메뉴에서 Grow 또는 Shrink 를 선택하여 볼륨의 크기를 조정합니다.
볼륨 확장:
- 를 선택하여 볼륨의 크기를 늘립니다.
Grow 논리 볼륨 대화 상자에서 논리 볼륨의 크기를 조정합니다.
확장 을
.LVM은 시스템을 중단하지 않고 논리 볼륨을 늘립니다.
볼륨 축소:
- 를 선택하여 볼륨의 크기를 줄입니다.
Shrink 논리 볼륨 대화 상자에서 논리 볼륨의 크기를 조정합니다.
LVM은 시스템을 중단하지 않고 논리 볼륨을 축소합니다.
2.7. 추가 리소스
-
pvcreate(8)
도움말 페이지. - parted가 있는 디스크에 파티션 테이블 만들기
-
시스템의
parted(8)
도움말 페이지
3장. LVM 볼륨 그룹 관리
볼륨 그룹(VG)을 생성하고 사용하여 단일 스토리지 엔티티로 결합된 여러 PV(물리 볼륨)를 관리하고 크기를 조정할 수 있습니다.
Extent는 LVM에서 할당할 수 있는 가장 작은 공간 단위입니다. 물리 확장 영역(PE) 및 논리 확장 영역(LE)의 기본 크기는 구성할 수 있는 4MiB입니다. 모든 Extent의 크기가 동일합니다.
VG 내에 논리 볼륨(LV)을 생성하면 LVM에서 PV에 물리 확장 영역을 할당합니다. LV 내의 논리 확장 영역은 VG의 물리 확장 영역과 함께 1대1에 해당합니다. LV를 만들기 위해 PE를 지정할 필요가 없습니다. LVM은 사용 가능한 PE를 찾아서 함께 구성하여 요청된 크기의 LV를 만듭니다.
VG 내에서 각각 기존 파티션처럼 작동하지만 물리 볼륨에 걸쳐 확장되고 동적으로 크기를 조정할 수 있는 LV를 여러 개 만들 수 있습니다. VG는 디스크 공간 할당을 자동으로 관리할 수 있습니다.
3.1. LVM 볼륨 그룹 생성
Cryostat create
명령을 사용하여 볼륨 그룹(VG)을 생성할 수 있습니다. 매우 크거나 매우 작은 볼륨의 범위 크기를 조정하여 성능 및 스토리지 효율성을 최적화할 수 있습니다. VG를 만들 때 범위 크기를 지정할 수 있습니다. 확장 범위를 변경하려면 볼륨 그룹을 다시 생성해야 합니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다. - 하나 이상의 물리 볼륨이 생성됩니다. 물리 볼륨 생성에 대한 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
절차
VG에 포함할 PV를 나열하고 식별합니다.
# pvs
VG를 만듭니다.
# vgcreate VolumeGroupName PhysicalVolumeName1 PhysicalVolumeName2
VolumeGroupName 을 생성하려는 볼륨 그룹의 이름으로 교체합니다. physicalVolumeName 을 PV 이름으로 교체합니다.
VG를 만들 때 확장 범위 크기를 지정하려면
-s ExtentSize
옵션을 사용합니다. ExtentSize 를 extent의 크기로 바꿉니다. 크기 접미사를 제공하지 않으면 기본값은 MB입니다.
검증
VG가 생성되었는지 확인합니다.
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
추가 리소스
-
시스템의 Cryostatcreate(8)
,Cryo
stats(8) 및pvs(8)
도움말 페이지
3.2. 웹 콘솔에서 볼륨 그룹 생성
하나 이상의 물리 드라이브 또는 기타 스토리지 장치에서 볼륨 그룹을 생성합니다.
논리 볼륨은 볼륨 그룹에서 생성됩니다. 각 볼륨 그룹에는 여러 논리 볼륨이 포함될 수 있습니다.
사전 요구 사항
RHEL 9 웹 콘솔을 설치했습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
cockpit-storaged
패키지가 시스템에 설치됩니다. - 볼륨 그룹을 생성할 물리 드라이브 또는 기타 유형의 스토리지 장치입니다.
절차
RHEL 9 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 스토리지를 .
- 스토리지 테이블에서 메뉴 버튼을 클릭합니다.
드롭다운 메뉴에서 LVM2 볼륨 그룹 만들기 를 선택합니다.
- 이름 필드에 볼륨 그룹의 이름을 입력합니다. 이름에는 공백을 포함할 수 없습니다.
결합할 드라이브를 선택하여 볼륨 그룹을 만듭니다.
RHEL 웹 콘솔은 사용되지 않는 블록 장치만 표시합니다. 장치가 목록에 표시되지 않는 경우 시스템에서 사용하지 않는지 확인하거나 비어 있고 사용되지 않도록 포맷합니다. 사용되는 장치는 예를 들면 다음과 같습니다.
- 파일 시스템으로 포맷된 장치
- 다른 볼륨 그룹의 물리 볼륨
- 물리 볼륨은 다른 소프트웨어 RAID 장치의 멤버입니다.
볼륨 그룹이 생성됩니다.
검증
- 스토리지 페이지에서 스토리지 테이블에 새 볼륨 그룹이 나열되어 있는지 확인합니다.
3.3. LVM 볼륨 그룹 이름 변경
Cryostat rename
명령을 사용하여 볼륨 그룹(VG)의 이름을 변경할 수 있습니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다. - 하나 이상의 물리 볼륨이 생성됩니다. 물리 볼륨 생성에 대한 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹이 생성됩니다. 볼륨 그룹 생성에 대한 자세한 내용은 3.1절. “LVM 볼륨 그룹 생성” 을 참조하십시오.
절차
이름을 바꿀 VG를 나열하고 식별합니다.
# vgs
VG의 이름을 변경합니다.
# vgrename OldVolumeGroupName NewVolumeGroupName
OldVolumeGroupName 을 VG의 이름으로 교체합니다. NewVolumeGroupName 을 VG의 새 이름으로 바꿉니다.
검증
VG에 새 이름이 있는지 확인합니다.
# vgs VG #PV #LV #SN Attr VSize VFree NewVolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
추가 리소스
-
Cryostatrename(8)
, Cryostats(8)
도움말 페이지
3.4. LVM 볼륨 그룹 확장
Cryostatextend 명령을 사용하여
PV(물리 볼륨)를 볼륨 그룹(VG)에 추가할 수 있습니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다. - 하나 이상의 물리 볼륨이 생성됩니다. 물리 볼륨 생성에 대한 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹이 생성됩니다. 볼륨 그룹 생성에 대한 자세한 내용은 3.1절. “LVM 볼륨 그룹 생성” 을 참조하십시오.
절차
확장하려는 VG를 나열하고 식별합니다.
# vgs
VG에 추가할 PV를 나열하고 식별합니다.
# pvs
VG를 확장합니다.
# vgextend VolumeGroupName PhysicalVolumeName
VolumeGroupName 을 VG의 이름으로 바꿉니다. physicalVolumeName 을 PV 이름으로 교체합니다.
검증
VG에 새 PV가 포함되어 있는지 확인합니다.
# pvs PV VG Fmt Attr PSize PFree /dev/sda VolumeGroupName lvm2 a-- 28.87g 28.87g /dev/sdd VolumeGroupName lvm2 a-- 1.88g 1.88g
추가 리소스
-
Cryostatextend(8)
, Cryostats(8)
,pvs(8)
도움말 페이지
3.5. LVM 볼륨 그룹 결합
두 개의 기존 볼륨 그룹(VG)을 Cryostat merge
명령과 결합할 수 있습니다. 소스 볼륨이 대상 볼륨에 병합됩니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다. - 하나 이상의 물리 볼륨이 생성됩니다. 물리 볼륨 생성에 대한 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 두 개 이상의 볼륨 그룹이 생성됩니다. 볼륨 그룹 생성에 대한 자세한 내용은 3.1절. “LVM 볼륨 그룹 생성” 을 참조하십시오.
절차
병합할 VG를 나열하고 식별합니다.
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 1 0 0 wz--n- 28.87g 28.87g VolumeGroupName2 1 0 0 wz--n- 1.88g 1.88g
소스 VG를 대상 VG에 병합합니다.
# vgmerge VolumeGroupName2 VolumeGroupName1
VolumeGroupName2 를 소스 VG의 이름으로 교체합니다. VolumeGroupName1 을 대상 VG의 이름으로 바꿉니다.
검증
VG에 새 PV가 포함되어 있는지 확인합니다.
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 0 0 wz--n- 30.75g 30.75g
추가 리소스
-
시스템의 Cryostatmerge(8)
도움말 페이지
3.6. 볼륨 그룹에서 물리 볼륨 제거
볼륨 그룹(VG)에서 사용되지 않는 PV(물리 볼륨)를 제거하려면 Cryostatreduce 명령을
사용합니다. vgreduce
명령은 하나 이상의 빈 물리 볼륨을 제거하여 볼륨 그룹의 용량을 줄입니다. 이렇게 하면 물리 볼륨을 다른 볼륨 그룹에서 사용하거나 시스템에서 제거할 수 있습니다.
절차
물리 볼륨이 여전히 사용 중인 경우 동일한 볼륨 그룹에서 다른 물리 볼륨으로 데이터를 마이그레이션합니다.
# pvmove /dev/vdb3 /dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%
기존 볼륨 그룹의 다른 물리 볼륨에 사용 가능한 확장 영역이 충분하지 않은 경우:
/dev/vdb4 에서 새 물리 볼륨을 생성합니다.
# pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created
새로 생성된 물리 볼륨을 볼륨 그룹에 추가합니다.
# vgextend VolumeGroupName /dev/vdb4 Volume group "VolumeGroupName" successfully extended
/dev/vdb3에서 /dev/vdb 4 로 데이터를 이동합니다.
# pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/vdb3: Moved: 100.00%
볼륨 그룹에서 물리 볼륨 /dev/vdb3 을 제거합니다.
# vgreduce VolumeGroupName /dev/vdb3 Removed "/dev/vdb3" from volume group "VolumeGroupName"
검증
/dev/vdb3 물리 볼륨이 VolumeGroupName 볼륨 그룹에서 제거되었는지 확인합니다.
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 lvm2 a-- 1020.00m 1008.00m 12.00m
추가 리소스
-
Cryostatreduce
(8),pvmove(8)
,pvs(8)
매뉴얼 페이지
3.7. LVM 볼륨 그룹 분할
물리 볼륨에 사용되지 않은 공간이 충분한 경우 새 디스크를 추가하지 않고 새 볼륨 그룹을 만들 수 있습니다.
초기 설정에서 볼륨 그룹 VolumeGroupName1 은 /dev/vdb1,/dev/vdb2, /dev/vdb3 로 구성됩니다. 이 절차를 완료하면 볼륨 그룹 VolumeGroupName1 은 /dev/vdb1 및 /dev/vdb2 로 구성되며 두 번째 볼륨 그룹인 VolumeGroupName2 에서는 /dev/vdb3 로 구성됩니다.
사전 요구 사항
-
볼륨 그룹에 충분한 공간이 있습니다.
vgscan
명령을 사용하여 현재 볼륨 그룹에서 사용할 수 있는 여유 공간을 결정합니다. -
기존 물리 볼륨의 사용 가능한 용량에 따라
pvmove
명령을 사용하여 사용된 모든 물리 확장 영역을 다른 물리 볼륨으로 이동합니다. 자세한 내용은 볼륨 그룹에서 물리 볼륨 제거를 참조하십시오.
절차
기존 볼륨 그룹 VolumeGroupName1 을 새 볼륨 그룹 VolumeGroupName2 로 나눕니다.
# vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3 Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1"
참고기존 볼륨 그룹을 사용하여 논리 볼륨을 생성한 경우 다음 명령을 사용하여 논리 볼륨을 비활성화합니다.
# lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
두 볼륨 그룹의 속성을 확인합니다.
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 1 0 wz--n- 34.30G 10.80G VolumeGroupName2 1 0 0 wz--n- 17.15G 17.15G
검증
새로 생성된 볼륨 그룹 VolumeGroupName2 가 /dev/vdb3 물리 볼륨으로 구성되어 있는지 확인합니다.
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 VolumeGroupName2 lvm2 a-- 1020.00m 1008.00m 12.00m
추가 리소스
-
시스템의 Cryostatsplit(8)
,Cryo
stats(8) 및pvs(8)
도움말 페이지
3.8. 볼륨 그룹을 다른 시스템으로 이동
다음 명령을 사용하여 전체 LVM 볼륨 그룹(VG)을 다른 시스템으로 이동할 수 있습니다.
vgexport
- 기존 시스템에서 이 명령을 사용하여 비활성 VG가 시스템에서 액세스할 수 없도록 합니다. VG에 액세스할 수 없게 되면 PV(물리 볼륨)를 분리할 수 있습니다.
vgimport
- 다른 시스템에서 이 명령을 사용하여 이전 시스템에서 비활성화된 VG를 새 시스템에서 액세스할 수 있도록 합니다.
사전 요구 사항
- 이동 중인 볼륨 그룹의 활성 볼륨의 파일에 액세스 중인 사용자가 없습니다.
절차
LogicalVolumeName 논리 볼륨을 마운트 해제합니다.
# umount /dev/mnt/LogicalVolumeName
볼륨 그룹의 모든 논리 볼륨을 비활성화하여 볼륨 그룹의 추가 활동을 방지합니다.
# vgchange -an VolumeGroupName vgchange -- volume group "VolumeGroupName" successfully deactivated
볼륨 그룹을 내보내 제거 중인 시스템에서 액세스할 수 없도록 합니다.
# vgexport VolumeGroupName vgexport -- volume group "VolumeGroupName" successfully exported
내보낸 볼륨 그룹을 확인합니다.
# pvscan PV /dev/sda1 is in exported VG VolumeGroupName [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] ...
- 시스템을 종료하고 볼륨 그룹을 구성하는 디스크를 분리하여 새 시스템에 연결합니다.
디스크를 새 시스템에 연결하고 볼륨 그룹을 가져와 새 시스템에서 액세스할 수 있도록 합니다.
# vgimport VolumeGroupName
참고Cryostat
import
명령의--force
인수를 사용하여 물리 볼륨이 누락된 볼륨 그룹을 가져와서 나중에--removemissing
명령을 실행할 수 있습니다.볼륨 그룹을 활성화합니다.
# vgchange -ay VolumeGroupName
파일 시스템을 마운트하여 사용할 수 있도록 합니다.
# mkdir -p /mnt/VolumeGroupName/users # mount /dev/VolumeGroupName/users /mnt/VolumeGroupName/users
추가 리소스
-
시스템의 Cryostatimport(8)
, Cryostatexport(8)
, and Cryostatchange(8)
매뉴얼 페이지
3.9. LVM 볼륨 그룹 제거
Cryostatremove 명령을 사용하여 기존 볼륨 그룹을 제거할
수 있습니다. 논리 볼륨이 포함되지 않은 볼륨 그룹만 제거할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹에 논리 볼륨이 포함되어 있지 않은지 확인합니다.
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
볼륨 그룹 제거:
# vgremove VolumeGroupName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
추가 리소스
-
시스템의 VGs(8)
, Cryostatremove(8)
도움말 페이지
3.10. 클러스터 환경에서 LVM 볼륨 그룹 제거
클러스터 환경에서 LVM은 lockspace
<qualifier>를 사용하여 여러 시스템에서 공유되는 볼륨 그룹에 대한 액세스를 조정합니다. 제거 프로세스 중에 다른 노드에 액세스하거나 수정하지 않으려면 볼륨 그룹을 제거하기 전에 잠금 공간을
중지해야 합니다.
사전 요구 사항
- 관리 액세스.
- 볼륨 그룹에 논리 볼륨이 없습니다.
절차
볼륨 그룹에 논리 볼륨이 포함되어 있지 않은지 확인합니다.
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
볼륨 그룹을 제거하는 노드를 제외한 모든 노드에서
잠금 공간을
중지합니다.# vgchange --lockstop VolumeGroupName
VolumeGroupName 을 볼륨 그룹의 이름으로 바꾸고 잠금이 중지될 때까지 기다립니다.
볼륨 그룹 제거:
# vgremove VolumeGroupName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
추가 리소스
-
Cryostatremove(8)
,Cryostatchange(8)
도움말 페이지
4장. 기본 논리 볼륨 관리
LVM을 사용하면 다음 작업을 수행할 수 있습니다.
- 시스템의 스토리지 기능을 확장하기 위해 새 논리 볼륨 생성
- 기존 볼륨 및 씬 풀을 확장하여 증가하는 데이터를 수용합니다.
- 더 나은 조직을 위해 볼륨 이름 변경
- 사용되지 않는 공간을 확보하기 위해 볼륨 감소
- 더 이상 필요하지 않을 때 볼륨을 안전하게 제거
- 볼륨 활성화 또는 비활성화하여 시스템의 데이터 액세스를 제어
4.1. 논리 볼륨 기능 개요
LVM(Logical Volume Manager)을 사용하면 기존 파티션 체계에서 제공할 수 없는 유연하고 효율적인 방식으로 디스크 스토리지를 관리할 수 있습니다. 다음은 스토리지 관리 및 최적화에 사용되는 주요 LVM 기능에 대한 요약입니다.
- 연결
- 연결에는 하나 이상의 물리 볼륨의 공간을 단일 논리 볼륨으로 결합하여 물리적 스토리지를 효과적으로 병합해야 합니다.
- 스트라이핑
- 스트라이핑은 여러 물리 볼륨에 데이터를 분산하여 데이터 I/O 효율성을 최적화합니다. 이 방법은 병렬 I/O 작업을 허용하여 순차적 읽기 및 쓰기에 대한 성능을 향상시킵니다.
- RAID
- LVM은 RAID 레벨 0, 1, 4, 5, 6, 10을 지원합니다. RAID 논리 볼륨을 생성하면 LVM에서 배열의 모든 데이터 또는 패리티 하위 볼륨에 대해 크기가 1개인 메타데이터 하위 볼륨을 생성합니다.
- 씬 프로비저닝
- 씬 프로비저닝을 사용하면 사용 가능한 물리 스토리지보다 큰 논리 볼륨을 생성할 수 있습니다. 씬 프로비저닝을 사용하면 시스템에서 사전 결정된 양을 미리 할당하는 대신 실제 사용량에 따라 스토리지를 동적으로 할당합니다.
- 스냅샷
- LVM 스냅샷을 사용하면 논리 볼륨의 지정 시간 사본을 생성할 수 있습니다. 스냅샷은 비어 있습니다. 원래 논리 볼륨에서 변경 사항이 발생하면 스냅샷은 COW(Copy-On-Write)를 통해 사전 변경 상태를 캡처하여 원래 논리 볼륨의 상태를 유지하기 위한 변경 사항만 늘립니다.
- 캐싱
- LVM에서는 느린 큰 블록 장치에 대해 SSD 드라이브와 같은 빠른 블록 장치의 사용을 지원합니다. 사용자는 캐시 논리 볼륨을 생성하여 기존 논리 볼륨의 성능을 향상하거나 크고 느린 장치에 연결된 소형 및 빠른 장치로 구성된 새 캐시 논리 볼륨을 생성할 수 있습니다.
4.2. 논리 볼륨 생성
LVM은 물리적 계층을 필요에 따라 생성하고 조정할 수 있는 논리 볼륨으로 추상화하여 디스크 스토리지를 처리할 수 있는 유연한 접근 방식을 제공합니다.
4.2.1. 선형(thick) 논리 볼륨 생성
선형 논리 볼륨(LV)을 사용하면 여러 물리적 스토리지 단위를 하나의 가상 스토리지 공간에 병합할 수 있습니다. 선형 LV를 쉽게 확장하거나 줄여 데이터 요구 사항을 충족할 수 있습니다.
사전 요구 사항
- 관리 액세스.
-
lvm2
패키지가 설치되어 있습니다. - 볼륨 그룹이 생성됩니다. 자세한 내용은 LVM 볼륨 그룹 생성을 참조하십시오.
절차
볼륨 그룹의 이름과 크기를 나열합니다.
# vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
선형 LV를 만듭니다.
# lvcreate --name LogicalVolumeName --size VolumeSize VolumeGroupName
LogicalVolumeName 을 LV의 이름으로 바꿉니다. VolumeSize 를 LV의 크기로 바꿉니다. 크기 접미사가 제공되지 않은 경우 명령은 기본적으로 MB로 설정됩니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
검증
선형 LV가 생성되었는지 확인합니다.
# lvs -o lv_name,seg_type LV Type LogicalVolumeName linear
추가 리소스
-
Cryo
stats(8)
,lvs(8)
,lvcreate(8)
도움말 페이지
4.2.2. 스토리지
RHEL 시스템 역할을 사용하여 논리 볼륨 생성 또는 크기 조정
스토리지
역할을 사용하여 다음 작업을 수행합니다.
- 여러 디스크로 구성된 볼륨 그룹에 LVM 논리 볼륨을 만들려면 다음을 수행합니다.
- LVM에서 기존 파일 시스템의 크기를 조정하려면 다음을 수행합니다.
- 풀의 총 크기의 백분율로 LVM 볼륨 크기를 표현하려면
볼륨 그룹이 없으면 역할이 생성됩니다. 논리 볼륨이 볼륨 그룹에 있는 경우 크기가 플레이북에 지정된 것과 일치하지 않으면 크기가 조정됩니다.
논리 볼륨을 줄이는 경우 데이터 손실을 방지하기 위해 논리 볼륨의 파일 시스템이 축소되는 논리 볼륨의 공간을 사용하지 않도록 해야 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create logical volume ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt/data
예제 플레이북에 지정된 설정은 다음과 같습니다.
크기: < ;size>
- 단위(예: GiB) 또는 백분율(예: 60 %)을 사용하여 크기를 지정해야 합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
지정된 볼륨이 요청된 크기로 생성되거나 크기가 조정되었는지 확인합니다.
# ansible managed-node-01.example.com -m command -a 'lvs myvg'
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일 -
/usr/share/doc/rhel-system-roles/storage/
디렉터리
4.2.3. 제거된 논리 볼륨 생성
제거된 논리 볼륨(LV)을 사용하면 여러 PV(물리 볼륨)에 데이터를 배포할 수 있으므로 여러 디스크의 대역폭을 동시에 사용하여 읽기 및 쓰기 속도를 높일 수 있습니다.
스트라이핑된 LV를 만들 때는 스트라이프 번호와 크기를 고려해야 합니다. 스트라이프 번호는 데이터가 배포되는 PV 수입니다. 스트라이프 번호를 늘리면 동시에 여러 디스크를 사용하여 성능을 향상시킬 수 있습니다. 스트라이프 크기는 다음 디스크로 이동하기 전에 설정된 스트라이프 세트의 각 디스크에 기록된 데이터 청크의 크기이며 킬로바이트(KB)로 지정됩니다. 최적의 스트라이프 크기는 워크로드 및 파일 시스템 블록 크기에 따라 다릅니다. 기본값은 64KB이며 조정할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹의 이름과 크기를 나열합니다.
# vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
제거된 LV를 생성합니다.
# lvcreate --stripes NumberOfStripes --stripesize StripeSize --size LogicalVolumeSize --name LogicalVolumeName VolumeGroupName
NumberOfStripes 를 스트라이프 수로 바꿉니다. StripeSize 를 킬라이프 크기(KB)로 바꿉니다.
--stripesize
는 필수 옵션이 아닙니다. 스트라이프 크기를 지정하지 않으면 기본값은 64KB입니다. LogicalVolumeName 을 LV의 이름으로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
검증
제거된 LV가 생성되었는지 확인합니다.
# lvs -o lv_name,seg_type LV Type LogicalVolumeName striped
추가 리소스
-
Cryo
stats(8)
lvs(8)
,lvcreate(8)
도움말 페이지
4.2.4. RAID 논리 볼륨 생성
RAID 논리 볼륨을 사용하면 중복 및 성능을 위해 여러 디스크를 사용할 수 있습니다. LVM은 RAID0, RAID1, RAID4, RAID5, RAID6, RAID10을 비롯한 다양한 RAID 수준을 지원합니다.
LVM을 사용하면 스트라이핑된 RAID(RAID0, RAID4, RAID5, RAID6), 미러링된 RAID(RAID1) 또는 둘 다의 조합을 생성할 수 있습니다.
RAID 4, RAID 5 및 RAID 6은 디스크 장애 발생 시 손실된 정보를 재구성하는 데 사용할 수 있는 패리티 데이터를 저장하여 내결함성을 제공합니다.
RAID LV를 생성할 때 각 스트라이프를 별도의 PV에 배치합니다. 볼륨 그룹(VG)에 있어야 하는 PV 수와 동일한 스트라이프 수입니다.
RAID 수준 | 유형 | 패리티 | 최소 장치 수 | 최소 스트라이프 번호 |
---|---|---|---|---|
RAID0 | 스트라이핑 | 없음 | 2 | 2 |
RAID1 | 미러링 | 없음 | 2 | - |
RAID4 | 스트라이핑 | 첫 번째 장치를 사용하여 패리티 저장 | 3 | 2 |
RAID5 | 스트라이핑 | 추가 장치를 사용하여 패리티 저장 | 3 | 2 |
RAID6 | 스트라이핑 | 두 개의 추가 장치를 사용하여 패리티 저장 | 5 | 3 |
RAID10 | 제거 및 미러링 | 없음 | 4 | 2 |
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹의 이름과 크기를 나열합니다.
# vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
RAID LV를 생성합니다.
제거된 raid를 생성하려면 다음을 사용합니다.
# lvcreate --type raidlevel --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName
수준을 RAID 수준 0, 4, 5 또는 6으로 바꿉니다. NumberOfStripes 를 스트라이프 수로 바꿉니다. StripeSize 를 킬라이프 크기(KB)로 바꿉니다. Size 를 LV의 크기로 바꿉니다. LogicalVolumeName 을 LV의 이름으로 바꿉니다.
미러링된 RAID를 생성하려면 다음을 사용합니다.
# lvcreate --type raid1 --mirrors MirrorsNumber --size Size --name LogicalVolumeName VolumeGroupName
MirrorsNumber 를 미러 수로 바꿉니다. Size 를 LV의 크기로 바꿉니다. LogicalVolumeName 을 LV의 이름으로 바꿉니다.
미러링 및 스트라이핑된 RAID를 생성하려면 다음을 사용합니다.
# lvcreate --type raid10 --mirrors MirrorsNumber --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName
MirrorsNumber 를 미러 수로 바꿉니다. NumberOfStripes 를 스트라이프 수로 바꿉니다. StripeSize 를 킬라이프 크기(KB)로 바꿉니다. Size 를 LV의 크기로 바꿉니다. LogicalVolumeName 을 LV의 이름으로 바꿉니다.
검증
RAID LV가 생성되었는지 확인합니다.
# lvs -o lv_name,seg_type LV Type LogicalVolumeName raid0
추가 리소스
-
lvmraid(7)
,Cryostats(8)
,lvs(8)
,lvcreate(8)
도움말 페이지
4.2.5. thin 논리 볼륨 생성
씬 프로비저닝에서는 볼륨 그룹(VG)의 물리 확장 영역(PE)이 할당되어 특정 물리 크기가 있는 씬 풀을 생성합니다. 그런 다음 LV(논리 볼륨)는 풀의 물리 용량에 국한되지 않고 가상 크기를 기반으로 이 씬 풀에서 할당됩니다. 이를 통해 씬 풀의 실제 크기를 초과하여 모든 씬 LV의 집합적인 가상 크기가 씬 풀의 물리적 용량을 초과하면 씬 풀의 실제 크기를 초과할 수 있습니다. 따라서 공간과 중단이 발생하지 않도록 논리 및 물리적 사용을 모두 모니터링하는 것이 중요합니다.
씬 프로비저닝은 공간을 할당하고 초기 비용을 낮추고 리소스 사용률을 개선하여 스토리지 효율성을 최적화합니다. 그러나 thin LV를 사용하는 경우 다음과 같은 단점이 있습니다.
- 부적절한 삭제 처리는 사용되지 않는 스토리지 공간의 릴리스를 차단하여 시간이 지남에 따라 공간을 완전히 할당할 수 있습니다.
- 쓰기(CoW) 작업의 복사는 스냅샷을 사용하여 파일 시스템에서 느려질 수 있습니다.
- 데이터 블록은 여러 파일 시스템 간에 혼합되어 임의 액세스 제한이 있을 수 있습니다.
사전 요구 사항
- 관리 액세스.
- 물리 볼륨이 생성되어 있습니다. 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹을 생성했습니다. 자세한 내용은 LVM 볼륨 그룹 생성을 참조하십시오.
- 논리 볼륨을 생성했습니다. 자세한 내용은 논리 볼륨 생성 을 참조하십시오.
절차
볼륨 그룹의 이름과 크기를 나열합니다.
# vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
씬 풀을 생성합니다.
# lvcreate --type thin-pool --size PoolSize --name ThinPoolName VolumeGroupName
PoolSize 를 thin pool에서 사용할 수 있는 최대 디스크 공간으로 바꿉니다. ThinPoolName 을 thin 풀의 이름으로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
thin LV를 만듭니다.
# lvcreate --type thin --virtualsize MaxVolumeSize --name ThinVolumeName --thinpool ThinPoolName VolumeGroupName
MaxVolumeSize 를 씬 풀 내에서 볼륨의 최대 크기로 바꿉니다. ThinPoolName 을 thin 풀의 이름으로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
참고동일한 씬 풀 내에 다른 thin LV를 생성할 수 있습니다.
검증
thin LV가 생성되었는지 확인합니다.
# lvs -o lv_name,seg_type LV Type ThinPoolName thin-pool ThinVolumeName thin
추가 리소스
-
lvs(8)
,lvcreate(8)
도움말 페이지
4.2.6. VDO 논리 볼륨 생성
VDO 논리 볼륨(LV)은 VDO(Virtual Data Optimizer) 기술을 사용하여 스토리지 효율성을 향상시킵니다. VDO LVs에는 가상 크기와 물리적 크기가 모두 있습니다. 가상 크기는 사용자 및 애플리케이션에 제공되는 총 스토리지 양을 나타냅니다. 물리적 크기는 VG에서 할당되고 VDO 풀에서 사용하는 실제 스토리지의 실제 양입니다.
VDO LV의 가상 크기는 일반적으로 VDO 풀의 물리적 크기보다 크므로 과도하게 프로비저닝됩니다. VDO 풀의 물리적 공간을 과도하게 프로비저닝하므로 필요한 경우 적극적으로 모니터링 및 확장해야 합니다.
VDO LV 및 VDO 풀은 쌍으로 생성되며 항상 쌍으로 존재합니다.
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹의 이름과 크기를 나열합니다.
# vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
VDO LV를 생성합니다.
# lvcreate --type vdo --virtualsize VolumeSize --size PhysicalPoolSize --name VDOVolumeName --vdopool VDOPoolName VolumeGroupName
VolumeSize 를 볼륨의 크기로 바꿉니다. PhysicalPoolSize 를 풀의 크기로 바꿉니다. VDOVolumeName 을 VDO 볼륨의 이름으로 바꿉니다. VDOPoolName 을 VDO 풀의 이름으로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
검증
VDO LV가 생성되었는지 확인합니다.
# lvs -o name,seg_type,size LV Type LSize VDOPoolName vdo-pool 5.00g VDOVolumeName vdo 5.00g
추가 리소스
-
Cryo
stats(8)
,lvs(8)
,lvcreate(8)
도움말 페이지
4.3. 논리 볼륨 크기 조정
LVM(Logical Volume Manager)을 사용하면 저장된 데이터에 영향을 주지 않고 필요에 따라 논리 볼륨(LV)의 크기를 조정할 수 있습니다.
4.3.1. 선형 논리 볼륨 확장
lvextend
명령을 사용하여 선형(thick) LV 및 해당 스냅샷을 확장할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹에 LV를 확장할 수 있는 충분한 공간이 있는지 확인합니다.
# lvs -o lv_name,lv_size,vg_name,vg_size,vg_free LV LSize VG VSize VFree LogicalVolumeName 1.49g VolumeGroupName 30.75g 29.11g
선형 LV를 확장하고 파일 시스템의 크기를 조정합니다.
# lvextend --size +AdditionalSize --resizefs VolumeGroupName/LogicalVolumeName
additional Size 를 LV에 추가할 공백으로 바꿉니다. 기본 측정 단위는 메가바이트이지만 다른 단위를 지정할 수 있습니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 thin 볼륨의 이름으로 바꿉니다.
검증
선형 LV가 확장되었는지 확인합니다.
# lvs -o lv_name,lv_size LV LSize NewLogicalVolumeName 6.49g
4.3.2. thin 논리 볼륨 확장
lvextend
명령을 사용하여 thin 논리 볼륨(LV)을 확장할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
씬 풀에 추가할 데이터에 충분한 공간이 있는지 확인합니다.
# lvs -o lv_name,lv_size,data_percent LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 1.10g 4.88
thin LV를 확장하고 파일 시스템의 크기를 조정합니다.
# lvextend --size +AdditionalSize --resizefs VolumeGroupName/ThinVolumeName
additional Size 를 LV에 추가할 공백으로 바꿉니다. 기본 측정 단위는 메가바이트이지만 다른 단위를 지정할 수 있습니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinVolumeName 을 thin 볼륨의 이름으로 바꿉니다.
검증
thin LV가 확장되었는지 확인합니다.
# lvs -o lv_name,lv_size,data_percent LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 6.10g 0.43
4.3.3. 씬 풀 확장
thin 논리 볼륨의 가상 크기는 씬 풀의 물리적 용량을 초과하여 과도하게 프로비저닝할 수 있습니다. 공간이 부족하지 않도록 하려면 씬 풀의 용량을 모니터링하고 주기적으로 확장해야 합니다.
data_percent
메트릭은 현재 씬 풀이 사용하는 할당된 데이터 공간의 백분율을 나타냅니다. metadata_percent
지표는 메타데이터를 저장하는 데 사용되는 공간의 백분율을 반영합니다. 이는 씬 풀 내의 매핑을 관리하는 데 중요합니다.
이러한 메트릭을 모니터링하는 것은 효율적인 스토리지 관리를 보장하고 용량 문제를 방지하는 데 중요합니다.
LVM은 필요에 따라 데이터 또는 메타데이터 용량을 수동으로 확장하는 옵션을 제공합니다. 또는 씬 풀의 확장을 모니터링하고 자동화할 수 있습니다.
4.3.3.1. 수동으로 씬 풀 확장
LVM(Logical Volume Manager)은 데이터 세그먼트, 메타데이터 세그먼트 또는 씬 풀을 수동으로 확장하는 옵션을 제공합니다.
4.3.3.1.1. 씬 풀 확장
lvextend
명령을 사용하여 thin 풀을 확장할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
사용된 데이터 및 메타데이터 공간을 표시합니다.
# lvs -o lv_name,seg_type,data_percent,metadata_percent LV Type Data% Meta% ThinPoolName thin-pool 97.66 26.86 ThinVolumeName thin 48.80
thin 풀을 확장합니다.
# lvextend -L Size VolumeGroupName/ThinPoolName
thin pool의 새 크기로 Size 를 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinPoolName 을 thin 풀 이름으로 교체합니다.
데이터 크기가 확장됩니다. 필요한 경우 메타데이터 크기가 확장됩니다.
검증
thin 풀이 확장되었는지 확인합니다.
# lvs -o lv_name,seg_type,data_percent,metadata_percent LV Type Data% Meta% ThinPoolName thin-pool 24.41 16.93 ThinVolumeName thin 24.41
추가 리소스
-
lvs(8)
,lvextend(8)
매뉴얼 페이지 -
LVs -o help
4.3.3.1.2. 씬 풀 데이터 세그먼트 확장
lvextend
명령을 사용하여 data_percent
세그먼트를 확장할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
data_percent
세그먼트를 표시합니다.# lvs -o lv_name,seg_type,data_percent LV Type Data% ThinPoolName thin-pool 93.87
data_percent
세그먼트를 확장합니다.# lvextend -L Size VolumeGroupName/ThinPoolName_tdata
Size 를 데이터 세그먼트의 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinPoolName 을 thin 풀 이름으로 교체합니다.
검증
data_percent
세그먼트가 확장되었는지 확인합니다.# lvs -o lv_name,seg_type,data_percent LV Type Data% ThinPoolName thin-pool 40.23
추가 리소스
-
lvs(8)
,lvextend(8)
매뉴얼 페이지 -
LVs -o help
4.3.3.1.3. 씬 풀 메타데이터 세그먼트 확장
lvextend
명령을 사용하여 metadata_percent
세그먼트를 확장할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
metadata_percent
세그먼트를 표시합니다.# lvs -o lv_name,seg_type,metadata_percent LV Type Meta% ThinPoolName thin-pool 75.00
metadata_percent
세그먼트를 확장합니다.# lvextend -L Size VolumeGroupName/ThinPoolName_tmeta
Size 를 메타데이터 세그먼트의 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinPoolName 을 thin 풀 이름으로 교체합니다.
검증
metadata_percent
세그먼트가 확장되었는지 확인합니다.# lvs -o lv_name,seg_type,metadata_percent LV Type Meta% ThinPoolName thin-pool 0.19
추가 리소스
-
lvs(8)
,lvextend(8)
매뉴얼 페이지 -
LVs -o help
4.3.3.2. 씬 풀 자동 확장
thin_pool_autoextend_threshold
및 thin_pool_autoextend_percent
구성 매개변수를 모니터링하고 설정하여 씬 풀 확장을 자동화할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
thin 풀이 모니터링되는지 확인합니다.
# lvs -o lv_name,vg_name,seg_monitor LV VG Monitor ThinPoolName VolumeGroupName not monitored
dmeventd
데몬을 사용하여 thin pool 모니터링을 활성화합니다.# lvchange --monitor y VolumeGroupName/ThinPoolName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinPoolName 을 thin 풀 이름으로 교체합니다.
-
root
사용자로 선택한 편집기에서/etc/lvm/lvm.conf
파일을 엽니다. thin_pool_autoextend_threshold
및thin_pool_autoextend_percent
행의 주석을 제거하고 각 매개변수를 필수 값으로 설정합니다.thin_pool_autoextend_threshold = 70 thin_pool_autoextend_percent = 20
thin_pool_autoextend_threshold
는 LVM이 씬 풀을 자동 확장하기 시작하는 백분율을 결정합니다. 예를 들어, 이를 70개로 설정하면 LVM이 70% 용량에 도달하면 LVM에서 씬 풀을 확장하려고 합니다.thin_pool_autoextend_percent
는 임계값에 도달할 때 씬 풀을 확장해야 하는 백분율을 지정합니다. 예를 들어 20으로 설정하면 씬 풀이 현재 크기의 20% 증가합니다.- 변경 사항을 저장하고 편집기를 종료합니다.
lvm2-monitor
를 다시 시작하십시오.# systemctl restart lvm2-monitor
추가 리소스
-
lvs(8)
,lvchange(8)
,dmeventd(8)
도움말 페이지
4.3.4. VDO 풀 확장
공간 부족을 방지하기 위해 VDO 풀의 용량을 모니터링하고 주기적으로 확장하는 것이 중요합니다.
LVM(Logical Volume Manager)은 필요에 따라 VDO 풀 용량을 수동으로 확장하는 옵션을 제공합니다. 또는 모니터링을 활성화하고 VDO 풀의 확장을 자동화할 수 있습니다.
4.3.4.1. 수동으로 VDO 풀 확장
lvextend
명령을 사용하여 VDO 풀을 확장합니다.
사전 요구 사항
- 관리 액세스.
절차
현재 VDO 사용을 표시합니다.
# lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName LV VG LSize Data% VDOPoolName VolumeGroupName 5.00g 60.03
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. VDOPoolName 을 VDO 풀의 이름으로 바꿉니다.
VDO 풀을 확장합니다.
# lvextend --size PhysicalSize VolumeGroupName/VDOPoolName
physicalSize 를 새 물리 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. VDOPoolName 을 VDO 풀의 이름으로 바꿉니다.
검증
VDO 풀이 확장되었는지 확인합니다.
# lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName LV VG LSize Data% VDOPoolName VolumeGroupName 10.00g 30.02
추가 리소스
-
lvs(8)
,lvextend(8)
매뉴얼 페이지
4.3.4.2. VDO 풀 자동 확장
모니터링을 활성화하고 vdo_pool_autoextend_threshold
및 vdo_pool_autoextend_percent
매개변수를 설정하여 VDO(Virtual Data Optimizer) 풀 확장을 자동화할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
VDO 풀이 모니터링되는지 확인합니다.
# lvs -o name,seg_monitor VolumeGroupName/VDOPoolName LV VG Monitor VDOPoolName VolumeGroupName not monitored
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. VDOPoolName 을 VDO 풀의 이름으로 바꿉니다.
dmeventd
데몬을 사용하여 VDO 풀 모니터링을 활성화합니다.# lvchange --monitor y VolumeGroupName/VDOPoolName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. VDOPoolName 을 VDO 풀의 이름으로 바꿉니다.
-
root
사용자로 선택한 편집기에서/etc/lvm/lvm.conf
파일을 엽니다. vdo_pool_autoextend_percent
및vdo_pool_autoextend_threshold
행의 주석을 제거하고 각 매개변수를 필수 값으로 설정합니다.vdo_pool_autoextend_threshold = 70 vdo_pool_autoextend_percent = 20
vdo_pool_autoextend_threshold
는 LVM이 VDO 풀을 자동 연장하기 시작하는 백분율을 결정합니다. 예를 들어, 이를 70개로 설정하면 LVM에서 VDO 풀을 70% 용량에 도달할 때 확장하려고 합니다.vdo_pool_autoextend_percent
는 threshold에 도달할 때 VDO 풀을 확장해야 하는 백분율로 지정합니다. 예를 들어 20으로 설정하면 VDO 풀이 현재 크기의 20% 증가합니다.- 변경 사항을 저장하고 편집기를 종료합니다.
lvm2-monitor
를 다시 시작하십시오.# systemctl restart lvm2-monitor
추가 리소스
-
lvs(8)
,lvchange(8)
,dmeventd(8)
도움말 페이지
4.3.5. 논리 볼륨 축소
LV의 크기가 감소되면 사용 가능한 논리 확장 영역이 볼륨 그룹으로 반환되고 다른 LV에서 사용할 수 있습니다.
축소된 영역에 저장된 데이터가 손실됩니다. 계속하기 전에 항상 데이터를 백업하고 파일 시스템의 크기를 조정합니다.
사전 요구 사항
- 관리 액세스.
절차
논리 볼륨 및 해당 볼륨 그룹을 나열합니다.
# lvs -o lv_name,vg_name,lv_size LV VG LSize LogicalVolumeName VolumeGroupName 6.49g
논리 볼륨이 마운트된 위치를 확인합니다.
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-NewLogicalVolumeName /MountPoint
/dev/VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다.
논리 볼륨을 마운트 해제합니다.
# umount /MountPoint
/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
파일 시스템 오류를 확인하고 복구합니다.
# e2fsck -f /dev/VolumeGroupName/LogicalVolumeName
LV 및 파일 시스템의 크기를 조정합니다.
# lvreduce --size TargetSize --resizefs VolumeGroupName/LogicalVolumeName
TargetSize 를 LV의 새 크기로 바꿉니다. VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다.
파일 시스템을 다시 마운트합니다.
# mount -o remount /MountPoint
/MountPoint 를 파일 시스템의 마운트 지점으로 바꿉니다.
검증
파일 시스템의 공간 사용량을 확인합니다.
# df -hT /MountPoint/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolumeGroupName-NewLogicalVolumeName ext4 2.9G 139K 2.7G 1% /MountPoint
/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
LV의 크기를 확인합니다.
# lvs -o lv_name,lv_size LV LSize NewLogicalVolumeName 4.00g
4.4. 논리 볼륨 이름 변경
lvrename
명령을 사용하여 스냅샷을 포함한 기존 논리 볼륨의 이름을 변경할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
논리 볼륨 및 해당 볼륨 그룹을 나열합니다.
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
논리 볼륨의 이름을 변경합니다.
# lvrename VolumeGroupName/LogicalVolumeName VolumeGroupName/NewLogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다. NewLogicalVolumeName 을 새 논리 볼륨 이름으로 교체합니다.
검증
논리 볼륨의 이름이 변경되었는지 확인합니다.
# lvs -o lv_name LV NewLogicalVolumeName
추가 리소스
-
시스템의
lvrename(8)
도움말 페이지
4.5. 논리 볼륨 제거
lvremove
명령을 사용하여 스냅샷을 포함한 기존 논리 볼륨을 제거할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
논리 볼륨 및 해당 경로를 나열합니다.
# lvs -o lv_name,lv_path LV Path LogicalVolumeName /dev/VolumeGroupName/LogicalVolumeName
논리 볼륨이 마운트된 위치를 확인합니다.
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint
/dev/VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다.
논리 볼륨을 마운트 해제합니다.
# umount /MountPoint
/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
논리 볼륨을 제거합니다.
# lvremove VolumeGroupName/LogicalVolumeName
VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다.
추가 리소스
-
시스템의
LVs(8)
,lvremove(8)
도움말 페이지
4.6. 논리 볼륨 활성화
lvchange
명령을 사용하여 논리 볼륨을 활성화할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
논리 볼륨, 해당 볼륨 그룹 및 해당 경로를 나열합니다.
# lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName VolumeGroupName/LogicalVolumeName
논리 볼륨을 활성화합니다.
# lvchange --activate y VolumeGroupName/LogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
참고다른 LV의 스냅샷으로 생성된 thin LV를 활성화하는 경우
--ignoreactivationskip
옵션을 사용하여 활성화해야 할 수 있습니다.
검증
LV가 활성 상태인지 확인합니다.
# lvdisplay VolumeGroupName/LogicalVolumeName ... LV Status available
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
추가 리소스
-
lvs(8)
lvchange(8)
,lvdisplay(8)
도움말 페이지
4.7. 논리 볼륨 비활성화
기본적으로 논리 볼륨을 생성할 때 활성 상태입니다. lvchange
명령을 사용하여 논리 볼륨을 비활성화할 수 있습니다.
활성 마운트 또는 사용으로 논리 볼륨을 비활성화하면 데이터 불일치 및 시스템 오류가 발생할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
논리 볼륨, 해당 볼륨 그룹 및 해당 경로를 나열합니다.
# lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName
논리 볼륨이 마운트된 위치를 확인합니다.
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint
/dev/VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다.
논리 볼륨을 마운트 해제합니다.
# umount /MountPoint
/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
논리 볼륨을 비활성화합니다.
# lvchange --activate n VolumeGroupName/LogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
검증
LV가 활성 상태가 아닌지 확인합니다.
# lvdisplay VolumeGroupName/LogicalVolumeName ... LV Status NOT available
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
추가 리소스
-
lvs(8)
lvchange(8)
,lvdisplay(8)
도움말 페이지
5장. 고급 논리 볼륨 관리
LVM에는 다음과 같은 고급 기능이 포함되어 있습니다.
- 스냅샷: point-in-time copies of logical volumes (LV)
- 캐싱 - 느린 스토리지의 캐시로 더 빠른 스토리지를 사용할 수 있습니다.
- 사용자 정의 씬 풀 생성
- 사용자 지정 VDO LV 생성
5.1. 논리 볼륨 스냅샷 관리
스냅샷은 특정 시점에서 다른 LV의 콘텐츠를 미러링하는 논리 볼륨(LV)입니다.
5.1.1. 논리 볼륨 스냅샷 이해
스냅샷을 생성할 때 다른 LV의 지정 시간 사본 역할을 하는 새 LV를 생성합니다. 처음에는 스냅샷 LV에 실제 데이터가 포함되어 있지 않습니다. 대신 스냅샷 생성 시 원래 LV의 데이터 블록을 참조합니다.
스냅샷의 스토리지 사용량을 정기적으로 모니터링하는 것이 중요합니다. 스냅샷이 할당된 공간의 100%에 도달하면 유효하지 않습니다.
스냅샷을 완전히 채워지기 전에 스냅샷을 확장해야 합니다. 이 작업은 lvextend
명령을 사용하거나 /etc/lvm/lvm.conf
파일을 통해 자동으로 수행할 수 있습니다.
- 두꺼운 LV 스냅샷
- 원래 LV의 데이터가 변경되면 COW(Copy-On-Write) 시스템은 변경되지 않은 원본 데이터를 변경하기 전에 스냅샷에 복사합니다. 이렇게 하면 변경 사항이 발생할 때만 스냅샷이 크기가 증가하여 스냅샷 생성 시 원본 볼륨의 상태를 저장합니다. 두꺼운 스냅샷은 어느 정도의 스토리지 공간을 미리 할당해야 하는 LV의 유형입니다. 이 양은 나중에 확장 또는 축소할 수 있지만 원래 LV에 어떤 유형의 변경 사항을 고려해야 합니다. 이렇게 하면 공간을 너무 많이 할당하거나 너무 적게 할당하면 스냅샷 크기를 자주 늘려야 합니다.
- thin LV 스냅샷
씬 스냅샷은 씬 프로비저닝된 기존 LV에서 생성된 LV의 유형입니다. 씬 스냅샷은 추가 공간을 미리 할당할 필요가 없습니다. 처음에 원래 LV와 해당 스냅샷은 모두 동일한 데이터 블록을 공유합니다. 원래 LV를 변경하면 새 데이터를 다른 블록에 쓰는 반면 스냅샷은 원본 블록을 계속 참조하여 스냅샷 생성 시 LV의 데이터에 대한 지정 시간 보기를 유지합니다.
씬 프로비저닝은 필요에 따라 디스크 공간을 할당하여 스토리지를 효율적으로 최적화하고 관리하는 방법입니다. 즉, 각 LV에 대량의 스토리지를 미리 할당할 필요 없이 여러 LV를 생성할 수 있습니다. 스토리지는 씬 풀의 모든 LV에서 공유되므로 리소스를 보다 효율적으로 사용할 수 있습니다. 씬 풀은 필요에 따라 해당 LV에 공간을 할당합니다.
- 씩과 씬 LV 스냅샷 중에서 선택
- 씩 또는 씬 LV 스냅샷 중 하나를 선택하는 것은 스냅샷을 생성하는 LV 유형에 따라 직접 결정됩니다. 원래 LV가 두꺼운 LV인 경우 스냅샷이 두꺼운 것입니다. 원래 LV가 씬된 경우 스냅샷이 씬됩니다.
5.1.2. 씩의 논리 볼륨 스냅샷 관리
두꺼운 LV 스냅샷을 생성하는 경우 스냅샷의 스토리지 요구 사항과 수명을 고려해야 합니다. 원래 볼륨에 대한 예상 변경 사항에 따라 충분한 스토리지를 할당해야 합니다. 스냅샷에는 의도한 수명 동안 변경 사항을 캡처하기에 충분한 크기가 있어야 하지만 원래 LV의 크기를 초과할 수 없습니다. 낮은 변경 속도를 예상하는 경우 스냅샷 크기가 10%-15%로 충분할 수 있습니다. 변경 속도가 높은 LV의 경우 30% 이상을 할당해야 할 수 있습니다.
스냅샷을 완전히 채워지기 전에 스냅샷을 확장해야 합니다. 스냅샷이 할당된 공간의 100%에 도달하면 유효하지 않습니다. lvs -o lv_name,data_percent,origin
명령을 사용하여 스냅샷 용량을 모니터링할 수 있습니다.
5.1.2.1. 씩의 논리 볼륨 스냅샷 생성
lvcreate
명령을 사용하여 두꺼운 LV 스냅샷을 생성할 수 있습니다.
사전 요구 사항
- 관리 액세스.
- 물리 볼륨이 생성되어 있습니다. 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹을 생성했습니다. 자세한 내용은 LVM 볼륨 그룹 생성을 참조하십시오.
- 논리 볼륨을 생성했습니다. 자세한 내용은 논리 볼륨 생성 을 참조하십시오.
절차
스냅샷을 생성할 LV를 확인합니다.
# lvs -o vg_name,lv_name,lv_size VG LV LSize VolumeGroupName LogicalVolumeName 10.00g
스냅샷 크기는 LV의 크기를 초과할 수 없습니다.
두꺼운 LV 스냅샷을 생성합니다.
# lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName
SnapshotSize 를 스냅샷에 할당할 크기(예: 10G)로 바꿉니다. SnapshotName 을 스냅샷 논리 볼륨에 부여하려는 이름으로 교체합니다. VolumeGroupName 을 원래 논리 볼륨이 포함된 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 스냅샷을 생성할 논리 볼륨의 이름으로 교체합니다.
검증
스냅샷이 생성되었는지 확인합니다.
# lvs -o lv_name,origin LV Origin LogicalVolumeName SnapshotName LogicalVolumeName
추가 리소스
-
lvcreate(8)
및lvs(8)
도움말 페이지
5.1.2.2. 논리 볼륨 스냅샷 수동 확장
스냅샷이 할당된 공간의 100%에 도달하면 유효하지 않습니다. 스냅샷을 완전히 채워지기 전에 스냅샷을 확장해야 합니다. 이 작업은 lvextend
명령을 사용하여 수동으로 수행할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
볼륨 그룹, 논리 볼륨, 스냅샷의 소스 볼륨, 사용 백분율 및 크기를 나열합니다.
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 82.00 5.00g
씩 프로비저닝된 스냅샷을 확장합니다.
# lvextend --size +AdditionalSize VolumeGroupName/SnapshotName
additional Size 를 스냅샷에 추가할 공간(예: +1G)으로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. SnapshotName 을 스냅샷 이름으로 교체합니다.
검증
LV가 확장되었는지 확인합니다.
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 68.33 6.00g
5.1.2.3. 씩의 논리 볼륨 스냅샷 자동 확장
스냅샷이 할당된 공간의 100%에 도달하면 유효하지 않습니다. 스냅샷을 완전히 채워지기 전에 스냅샷을 확장해야 합니다. 이 작업은 자동으로 수행할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
-
root
사용자로 선택한 편집기에서/etc/lvm/lvm.conf
파일을 엽니다. snapshot_autoextend_threshold
및snapshot_autoextend_percent
행의 주석을 제거하고 각 매개변수를 필수 값으로 설정합니다.snapshot_autoextend_threshold = 70 snapshot_autoextend_percent = 20
snapshot_autoextend_threshold
는 LVM이 스냅샷을 자동 연장하기 시작하는 백분율을 결정합니다. 예를 들어 매개 변수를 70으로 설정하면 LVM에서 스냅샷이 70% 용량에 도달할 때 스냅샷을 확장하려고 합니다.snapshot_autoextend_percent
는 임계값에 도달하면 스냅샷을 확장해야 하는 백분율로 지정합니다. 예를 들어 매개 변수를 20으로 설정하면 스냅샷이 현재 크기의 20%가 증가합니다.- 변경 사항을 저장하고 편집기를 종료합니다.
lvm2-monitor
를 다시 시작하십시오.# systemctl restart lvm2-monitor
5.1.2.4. 씩의 논리 볼륨 스냅샷 병합
두꺼운 LV 스냅샷을 스냅샷이 생성된 원래 논리 볼륨에 병합할 수 있습니다. 병합 프로세스는 원래 LV가 스냅샷이 생성될 때의 상태로 되돌리는 것을 의미합니다. 병합이 완료되면 스냅샷이 제거됩니다.
원본과 스냅샷 LV 간의 병합이 활성 상태이면 지연됩니다. LV가 다시 활성화되고 사용되지 않는 경우에만 실행됩니다.
사전 요구 사항
- 관리 액세스.
절차
LV, 해당 볼륨 그룹 및 해당 경로를 나열합니다.
# lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName SnapshotName VolumeGroupName /dev/VolumeGroupName/SnapshotName
LV가 마운트된 위치를 확인합니다.
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/SnapshotName
/dev/VolumeGroupName/LogicalVolumeName 을 논리 볼륨의 경로로 바꿉니다. /dev/VolumeGroupName/SnapshotName 을 스냅샷 경로로 바꿉니다.
LV를 마운트 해제합니다.
# umount /LogicalVolume/MountPoint # umount /Snapshot/MountPoint
/LogicalVolume/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다. /Snapshot/MountPoint 를 스냅샷의 마운트 지점으로 바꿉니다.
LV를 비활성화합니다.
# lvchange --activate n VolumeGroupName/LogicalVolumeName # lvchange --activate n VolumeGroupName/SnapshotName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다. SnapshotName 을 스냅샷 이름으로 교체합니다.
두꺼운 LV 스냅샷을 원본으로 병합합니다.
# lvconvert --merge SnapshotName
SnapshotName 을 스냅샷 이름으로 교체합니다.
LV를 활성화합니다.
# lvchange --activate y VolumeGroupName/LogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
LV를 마운트합니다.
# umount /LogicalVolume/MountPoint
/LogicalVolume/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
검증
스냅샷이 제거되었는지 확인합니다.
# lvs -o lv_name
추가 리소스
-
lvconvert(8)
,lvs(8)
도움말 페이지
5.1.3. thin 논리 볼륨 스냅샷 관리
씬 프로비저닝은 스토리지 효율성이 우선 순위인 경우에 적합합니다. 스토리지 공간 동적 할당은 초기 스토리지 비용을 줄이고 사용 가능한 스토리지 리소스 사용을 극대화합니다. 동적 워크로드가 있거나 스토리지가 시간이 지남에 따라 증가하는 환경에서 씬 프로비저닝을 통해 유연성을 높일 수 있습니다. 스토리지 공간을 크게 사전 할당할 필요 없이 스토리지 시스템을 변화하는 요구에 맞게 조정할 수 있습니다. 동적 할당을 사용하면 모든 LV의 총 크기가 씬 풀의 물리적 크기를 초과할 수 있으므로 모든 공간이 동시에 활용되는 것은 아닙니다.
5.1.3.1. 씬 논리 볼륨 스냅샷 생성
lvcreate
명령을 사용하여 thin LV 스냅샷을 생성할 수 있습니다. thin LV 스냅샷을 생성할 때 스냅샷 크기를 지정하지 마십시오. size 매개변수를 포함하면 대신 두꺼운 스냅샷이 생성됩니다.
사전 요구 사항
- 관리 액세스.
- 물리 볼륨이 생성되어 있습니다. 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹을 생성했습니다. 자세한 내용은 LVM 볼륨 그룹 생성을 참조하십시오.
- 논리 볼륨을 생성했습니다. 자세한 내용은 논리 볼륨 생성 을 참조하십시오.
절차
스냅샷을 생성할 LV를 확인합니다.
# lvs -o lv_name,vg_name,pool_lv,lv_size LV VG Pool LSize PoolName VolumeGroupName 152.00m ThinVolumeName VolumeGroupName PoolName 100.00m
thin LV 스냅샷을 생성합니다.
# lvcreate --snapshot --name SnapshotName VolumeGroupName/ThinVolumeName
SnapshotName 을 스냅샷 논리 볼륨에 부여하려는 이름으로 교체합니다. VolumeGroupName 을 원래 논리 볼륨이 포함된 볼륨 그룹의 이름으로 교체합니다. ThinVolumeName 을 스냅샷을 생성할 thin 논리 볼륨의 이름으로 바꿉니다.
검증
스냅샷이 생성되었는지 확인합니다.
# lvs -o lv_name,origin LV Origin PoolName SnapshotName ThinVolumeName ThinVolumeName
추가 리소스
-
lvcreate(8)
및lvs(8)
도움말 페이지
5.1.3.2. 씬 논리 볼륨 스냅샷 병합
thin LV 스냅샷을 생성된 원래 논리 볼륨에 병합할 수 있습니다. 병합 프로세스는 원래 LV가 스냅샷이 생성될 때의 상태로 되돌리는 것을 의미합니다. 병합이 완료되면 스냅샷이 제거됩니다.
사전 요구 사항
- 관리 액세스.
절차
LV, 해당 볼륨 그룹 및 해당 경로를 나열합니다.
# lvs -o lv_name,vg_name,lv_path LV VG Path ThinPoolName VolumeGroupName ThinSnapshotName VolumeGroupName /dev/VolumeGroupName/ThinSnapshotName ThinVolumeName VolumeGroupName /dev/VolumeGroupName/ThinVolumeName
원래 LV가 마운트된 위치를 확인합니다.
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/ThinVolumeName
VolumeGroupName/ThinVolumeName 을 논리 볼륨의 경로로 바꿉니다.
LV를 마운트 해제합니다.
# umount /ThinLogicalVolume/MountPoint
/ThinLogicalVolume/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다. /ThinSnapshot/MountPoint 를 스냅샷의 마운트 지점으로 바꿉니다.
LV를 비활성화합니다.
# lvchange --activate n VolumeGroupName/ThinLogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinLogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
thin LV 스냅샷을 원본과 병합합니다.
# lvconvert --mergethin VolumeGroupName/ThinSnapshotName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. ThinSnapshotName 을 스냅샷 이름으로 교체합니다.
LV를 마운트합니다.
# umount /ThinLogicalVolume/MountPoint
/ThinLogicalVolume/MountPoint 를 논리 볼륨의 마운트 지점으로 바꿉니다.
검증
원래 LV가 병합되었는지 확인합니다.
# lvs -o lv_name
추가 리소스
-
lvremove(8)
,lvs(8)
도움말 페이지
5.2. 논리 볼륨 캐싱
dm-cache
또는 dm-writecache
대상을 사용하여 논리 볼륨을 캐시할 수 있습니다.
DM-cache
는 속도가 느린 스토리지 장치(HDD)의 캐시로 더 빠른 SSD(스토리지 장치)를 사용합니다. 읽기 및 쓰기 데이터를 캐시하여 자주 사용하는 데이터에 대한 액세스 시간을 최적화합니다. 읽기 및 쓰기 작업을 강화하면 성능이 크게 향상될 수 있는 혼합 워크로드 환경에서 유용합니다.
DM-writecache
는 기본 스토리지 장치(HDD)에 커밋되기 전에 더 빠른 SSD(스토리지 미디어)를 사용하여 쓰기 데이터를 임시로 보관하여 쓰기 작업을 최적화합니다. 쓰기 성능이 데이터 전송 프로세스의 속도가 느려질 수 있는 쓰기 집약적인 애플리케이션에 유용합니다.
5.2.1. dm-cache를 사용하여 논리 볼륨 캐싱
dm-cache
를 사용하여 LV를 캐시하면 캐시 풀이 생성됩니다. 캐시 풀은 실제 캐시된 콘텐츠를 저장하는 캐시 데이터와 캐시에 저장된 콘텐츠를 추적하는 캐시 메타데이터를 결합하는 LV입니다. 그런 다음 이 풀은 특정 LV와 연결하여 해당 데이터를 캐시합니다.
DM -cache
는 두 가지 유형의 블록을 대상으로 합니다. 자주 액세스하는(hot) 블록은 캐시로 이동하고 덜 자주 액세스(cold) 블록은 느린 장치에 남아 있습니다.
사전 요구 사항
- 관리 액세스.
절차
캐시할 LV 및 해당 볼륨 그룹을 표시합니다.
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
캐시 풀을 생성합니다.
# lvcreate --type cache-pool --name CachePoolName --size Size VolumeGroupName /FastDevicePath
CachePoolName 을 캐시 풀 이름으로 교체합니다. Size 를 캐시 풀의 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. /FastDevicePath 를 빠른 장치의 경로(예: SSD 또는 NVME)로 바꿉니다.
캐시 풀을 LV에 연결합니다.
# lvconvert --type cache --cachepool VolumeGroupName/CachePoolName VolumeGroupName/LogicalVolumeName
검증
LV가 캐시되었는지 확인합니다.
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CachePoolName_cpool]
추가 리소스
-
lvcreate(8)
,lvconvert(8)
,lvs(8)
도움말 페이지
5.2.2. dm-writecache를 사용하여 논리 볼륨 캐싱
dm-writecache
를 사용하여 LV를 캐시할 때 논리 볼륨과 물리 스토리지 장치 간의 캐싱 계층이 생성됩니다. dm-writecache
는 결국 SSD와 같은 빠른 스토리지 매체에 쓰기 작업을 임시로 저장하여 기본 스토리지 장치에 다시 쓰기 작업을 작성하여 쓰기 집약적인 워크로드를 최적화함으로써 작동합니다.
사전 요구 사항
- 관리 액세스.
절차
캐시할 논리 볼륨 및 해당 볼륨 그룹을 표시합니다.
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
캐시 볼륨을 생성합니다.
# lvcreate --name CacheVolumeName --size Size VolumeGroupName /FastDevicePath
CacheVolumeName 을 캐시 볼륨의 이름으로 교체합니다. Size 를 캐시 풀의 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. /FastDevicePath 를 빠른 장치의 경로(예: SSD 또는 NVME)로 바꿉니다.
캐시 볼륨을 LV에 연결합니다.
# lvconvert --type writecache --cachevol CacheVolumeName VolumeGroupName/LogicalVolumeName
CacheVolumeName 을 캐시 볼륨의 이름으로 교체합니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
검증
LV가 캐시되었는지 확인합니다.
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CacheVolumeName_cvol]
추가 리소스
-
lvcreate(8)
,lvconvert(8)
,lvs(8)
도움말 페이지
5.2.3. 논리 볼륨 분리
두 가지 주요 방법을 사용하여 LV에서 캐싱을 제거합니다.
- 분할
- LV에서 캐시를 분리할 수 있지만 캐시 볼륨 자체를 유지할 수 있습니다. 이 경우 LV는 더 이상 캐싱 메커니즘의 이점을 받지 않지만 캐시 볼륨과 데이터는 그대로 유지됩니다. 캐시 볼륨은 보존되지만 캐시 내의 데이터를 재사용할 수 없으며 다음에 캐싱 설정에 사용될 때 삭제됩니다.
- Uncaching
- LV에서 캐시를 분리하고 캐시 볼륨을 완전히 제거할 수 있습니다. 이 작업은 캐시를 효과적으로 제거하여 공간을 확보합니다.
사전 요구 사항
- 관리 액세스.
절차
캐시된 LV를 표시합니다.
# lvs -o lv_name,pool_lv,vg_name LV Pool VG LogicalVolumeName [CacheVolumeName_cvol] VolumeGroupName
캐시된 볼륨을 분리하거나 제거합니다.
캐시된 볼륨을 분리하려면 다음을 사용합니다.
# lvconvert --splitcache VolumeGroupName/LogicalVolumeName
캐시된 볼륨을 분리 및 제거하려면 다음을 사용합니다.
# lvconvert --uncache VolumeGroupName/LogicalVolumeName
VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다. LogicalVolumeName 을 논리 볼륨의 이름으로 바꿉니다.
검증
LV가 캐시되지 않았는지 확인합니다.
# lvs -o lv_name,pool_lv
추가 리소스
-
lvconvert(8)
,lvs(8)
도움말 페이지
5.3. 사용자 지정 씬 풀 생성
사용자 지정 씬 풀을 생성하여 스토리지를 보다 효과적으로 제어할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
사용 가능한 볼륨 그룹을 표시합니다.
# vgs -o vg_name VG VolumeGroupName
사용 가능한 장치를 나열합니다.
# lsblk
thin 풀 데이터를 저장할 LV를 만듭니다.
# lvcreate --name ThinPoolDataName --size Size VolumeGroupName /DevicePath
ThinPoolDataName 을 씬 풀 data LV의 이름으로 바꿉니다. Size 를 LV의 크기로 바꿉니다. VolumeGroupName 을 볼륨 그룹의 이름으로 교체합니다.
thin pool 메타데이터를 보유하도록 LV를 생성합니다.
# lvcreate --name ThinPoolMetadataName --size Size VolumeGroupName /DevicePath
LV를 씬 풀로 결합합니다.
# lvconvert --type thin-pool --poolmetadata ThinPoolMetadataName VolumeGroupName/ThinPoolDataName
검증
사용자 지정 thin 풀이 생성되었는지 확인합니다.
# lvs -o lv_name,seg_type LV Type ThinPoolDataName thin-pool
추가 리소스
-
Cryo
stats(8)
lvs(8)
,lvcreate(8)
도움말 페이지
5.4. 사용자 지정 VDO 논리 볼륨 생성
LVM(Logical Volume Manager)을 사용하면 데이터 저장을 위해 VDO(Virtual Data Optimizer) 풀을 사용하는 사용자 지정 LV를 생성할 수 있습니다.
사전 요구 사항
- 관리 액세스.
절차
VG를 표시합니다.
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
VDO 풀로 변환할 LV를 만듭니다.
# lvcreate --name VDOPoolName --size Size VolumeGroupName
VDOPoolName 을 VDO 풀의 이름으로 바꿉니다. Size 를 VDO 풀의 크기로 바꿉니다. VolumeGroupName 을 VG의 이름으로 바꿉니다.
이 LV를 VDO 풀로 변환합니다. 이 변환에서는 VDO 풀을 사용하는 새 VDO LV를 생성합니다.
lvcreate
은 새 VDO LV를 생성하므로 새 VDO LV에 대한 매개변수를 지정해야 합니다.--name|-n
을 사용하여 새 VDO LV의 이름을 지정하고--virtualsize|-V
를 사용하여 새 VDO LV의 크기를 지정합니다.# lvconvert --type vdo-pool --name VDOVolumeName --virtualsize VDOVolumeSize VolumeGroupName/VDOPoolName
VDOVolumeName 을 VDO 볼륨의 이름으로 바꿉니다. VDOVolumeSize 를 VDO 볼륨의 크기로 바꿉니다. VolumeGroupName/VDOPoolName 을 VG 및 VDO 풀의 이름으로 교체합니다.
검증
LV가 VDO 풀로 변환되었는지 확인합니다.
*# lvs -o lv_name,vg_name,seg_type* LV VG Type VDOPoolName VolumeGroupName vdo-pool VDOVolumeName VolumeGroupName vdo
추가 리소스
-
Cryo
stats(8)
,lvs(8)
,lvconvert(8)
도움말 페이지
6장. 스냅샷을 사용하여 시스템 업그레이드 관리
Red Hat Enterprise Linux 시스템의 롤백 기능을 수행하여 이전 버전의 운영 체제로 돌아갑니다. Boom Boot Manager 및 Leapp 운영 체제 현대화 프레임워크를 사용할 수 있습니다.
운영 체제 업그레이드를 수행하기 전에 다음 측면을 고려하십시오.
-
스냅샷이 있는 시스템 업그레이드는 시스템 트리의 여러 파일 시스템(예: 별도의
/var
또는/usr
파티션)에서 작동하지 않습니다. - 스냅샷이 있는 시스템 업그레이드는 RHUI(Red Hat Update Infrastructure) 시스템에서 작동하지 않습니다. Boom 유틸리티를 사용하는 대신 VM(가상 머신)의 스냅샷을 생성하는 것이 좋습니다.
6.1. Boom 프로세스 개요
Boom Boot Manager를 사용하여 부팅 항목을 생성하여 GRUB 부트 로더 메뉴에서 이러한 항목을 선택하고 액세스할 수 있습니다. 부팅 항목을 생성하면 업그레이드 가능한 롤백 준비 프로세스가 간소화됩니다.
다음 부팅 항목은 업그레이드 및 롤백 프로세스의 일부입니다.
부팅 항목 업그레이드
Leapp 업그레이드 환경을 부팅합니다.
leapp
유틸리티를 사용하여 이 부팅 항목을 만들고 관리합니다.leapp
업그레이드 프로세스에서 이 항목을 자동으로 제거합니다.Red Hat Enterprise Linux 9 부팅 항목
업그레이드 시스템 환경을 부팅합니다. 업그레이드 프로세스가 성공한 후
leapp
유틸리티를 사용하여 이 부팅 항목을 생성합니다.스냅샷 부팅 항목
원래 시스템의 스냅샷을 부팅합니다. 업그레이드 시도에 성공하거나 실패한 후 이전 운영 체제 상태를 검토하고 테스트합니다. 운영 체제를 업그레이드하기 전에
boom
명령을 사용하여 이 부팅 항목을 생성합니다.부팅 항목 롤백
원래 시스템 환경을 부팅하고 이전 시스템 상태로의 업그레이드를 롤백합니다. 업그레이드 절차의 롤백을 시작할 때
boom
명령을 사용하여 이 부팅 항목을 생성합니다.
추가 리소스
-
시스템의
Boom(1)
도움말 페이지
6.2. Boom Boot Manager를 사용하여 다른 버전으로 업그레이드
Boom Boot Manager를 사용하여 Red Hat Enterprise Linux 운영 체제 업그레이드를 수행합니다.
사전 요구 사항
- Red Hat Enterprise Linux 8.8 또는 8.10을 실행하고 있습니다.
-
현재
boom-boot
패키지 (버전 boom-boot-1.3-2.el8 이상)를 설치했습니다. - 스냅샷에 사용할 수 있는 충분한 공간이 있습니다. 원래 설치 크기에 따라 크기를 추정합니다. 마운트된 논리 볼륨을 모두 나열합니다.
-
leapp
패키지를 설치했습니다. - 소프트웨어 리포지토리를 활성화했습니다.
추가 파일 시스템에는 /usr 또는 /var 이 포함될 수 있습니다.
절차
루트 논리 볼륨의 스냅샷을 생성합니다.
루트 파일 시스템에서 thin provisioning을 사용하는 경우 thin 스냅샷을 생성합니다.
# lvcreate -s rhel/root -kn -n root_snapshot_before_changes Logical volume "root_snapshot_before_changes" created.
여기:
-
-s
는 스냅샷을 생성합니다. -
RHEL/root
는 파일 시스템을 논리 볼륨에 복사합니다. -
-KN
은 부팅 시 LV를 자동으로 활성화합니다. -n root_snapshot_before_changes
에는 스냅샷 이름이 표시됩니다.씬 스냅샷을 생성하는 동안 스냅샷 크기를 정의하지 마십시오. 스냅샷은 thin 풀에서 할당됩니다.
-
루트 파일 시스템에서 두꺼운 프로비저닝을 사용하는 경우 두 가지 스냅샷을 생성합니다.
# lvcreate -s rhel/root -n root_snapshot_before_changes -L 25g Rounding up size to full physical extent 25 GiB Logical volume "root_snapshot_before_changes" created.
이 명령에서는 다음을 수행합니다.
-
-s
는 스냅샷을 생성합니다. -
RHEL/root
는 파일 시스템을 논리 볼륨에 복사합니다. -
-n root_snapshot_before_changes
에는 스냅샷 이름이 표시됩니다. -L 25g
는 스냅샷 크기입니다. 원래 설치 크기에 따라 크기를 추정합니다.두꺼운 스냅샷을 생성하는 동안 업그레이드 중에 모든 변경 사항을 저장할 수 있는 스냅샷 크기를 정의합니다.
중요생성된 스냅샷에는 추가 시스템 변경 사항이 포함되지 않습니다.
-
프로필을 생성합니다.
프로필을 생성하려면
kexec-tools
또는kdumpctl
과boom
간의 상호 작용을 방지하기 위한 아키텍처별 해결 방법이 필요합니다. 업그레이드 중에 업데이트된kexec-tools
패키지는 업데이트된crashkernel
설정으로 모든 부팅 항목을 수정하려고 합니다. 이렇게 하면 항목에서 사용하는 부팅 이미지가 삭제됩니다. RHEL 9crashkernel
설정을 RHEL 8 프로필 옵션에 추가하여 이 문제를 방지할 수 있습니다.Intel 64 또는 AMD64(x86_64) 또는 IBM Z(s390x) 아키텍처에서 다음을 수행합니다.
# boom profile create --from-host --os-options "root=%{root_device} ro %{root_opts} rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M" Created profile with os_id 43747d3: OS ID: "43747d3888b663d2bc88efd35d0813159a84d291", Name: "Red Hat Enterprise Linux", Short name: "rhel", Version: "8.9 (Ootpa)", Version ID: "8.9", Kernel pattern: "/vmlinuz-%{version}", Initramfs pattern: "/initramfs-%{version}.img", Root options (LVM2): "rd.lvm.lv=%{lvm_root_lv}", Root options (BTRFS): "rootflags=%{btrfs_subvolume}", Options: "root=%{root_device} ro %{root_opts} rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M", Title: "%{os_name} %{os_version_id} (%{version})", Optional keys: "", UTS release pattern: "el8"
64비트 ARM(AArch64) 아키텍처에서 다음을 수행합니다.
# boom profile create --from-host --os-options "root=%{root_device} ro %{root_opts} rhgb quiet crashkernel=1G-4G:256M,4G-64G:320M,64G-:576M"
IBM POWER little-endian(ppc64le) 아키텍처에서 다음을 수행합니다.
# boom profile create --from-host --os-options "root=%{root_device} ro %{root_opts} rhgb quiet crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G" --optional-keys "grub_users grub_arg grub_class id"
grub2-mkconfig
명령이 10.2.3 단계에서 올바른 부팅 항목을 생성하도록 ppc64le에--optional-keys
인수가 필요합니다. 자세한 내용은 RHEL-36180 을 참조하십시오.
원래 부팅 이미지의 백업 사본을 사용하여 원래 시스템의 스냅샷 부팅 항목을 생성합니다.
# boom create --backup --title "Root LV snapshot before changes" --rootlv rhel/root_snapshot_before_changes WARNING - Boom grub2 integration is disabled in '/boot/../etc/default/boom' Created entry with boot_id c919f89: title Root LV snapshot before changes machine-id b1dcec73886b45218892b1a7bbfa0dee version 4.18.0-513.24.1.el8_9.x86_64 linux /vmlinuz-4.18.0-513.24.1.el8_9.x86_64.boom0 initrd /initramfs-4.18.0-513.24.1.el8_9.x86_64.img.boom0 options root=/dev/rhel/root_snapshot_before_changes ro rd.lvm.lv=rhel/root_snapshot_before_changes rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M
여기:
-
--title "Root LV snapshot before changes"
는 시스템을 시작하는 동안 부팅 항목 목록에 표시되는 부팅 항목의 이름입니다. --rootlv
는 새 부팅 항목에 해당하는 루트 논리 볼륨입니다.이전 단계를 완료한 후 업그레이드하기 전에 원래 시스템에 액세스할 수 있는 부팅 항목이 있습니다.
"WARNING - Boom grub2 통합은 '/boot/../etc/default/boom'에서 비활성화되어 있습니다. 자세한 내용은 RHEL-35983 을 참조하십시오.
ppc64le 아키텍처가 있는 시스템에서 부팅 항목을 업데이트합니다.
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Generating boot entries from BLS files... done
-
Leapp 유틸리티를 사용하여 Red Hat Enterprise Linux 9로 업그레이드:
# leapp upgrade ==> Processing phase `configuration_phase` ====> * ipu_workflow_config IPU workflow config actor ==> Processing phase `FactsCollection` ... ============================================================ REPORT OVERVIEW ============================================================ Upgrade has been inhibited due to the following problems: 1. Firewalld Configuration AllowZoneDrifting Is Unsupported 2. Possible problems with remote login using root account HIGH and MEDIUM severity reports: 1. Remote root logins globally allowed using password 2. GRUB core will be automatically updated during the upgrade Reports summary: Errors: 0 Inhibitors: 2 HIGH severity reports: 2 MEDIUM severity reports: 0 LOW severity reports: 1 INFO severity reports: 3 Before continuing consult the full report: A report has been generated at /var/log/leapp/leapp-report.json A report has been generated at /var/log/leapp/leapp-report.txt ============================================================ END OF REPORT OVERVIEW ============================================================
leapp upgrade
명령 보고서에 표시된 모든 차단자를 검토하고 해결합니다. 보고서에 대한 자세한 내용은 업그레이드 전 보고서 검토를 참조하십시오.업그레이드 부팅 항목으로 재부팅합니다.
# leapp upgrade --reboot ==> Processing phase `configuration_phase` ====> * ipu_workflow_config IPU workflow config actor ==> Processing phase `FactsCollection` ...
GRUB 부팅 화면에서 Red Hat Enterprise Linux Upgrade Initramfs 항목을 선택합니다.
참고Red Hat Enterprise Linux 9에서는 GRUB 부팅 화면의 Snapshots 하위 메뉴를 사용할 수 없습니다.
검증
- 업그레이드가 완료되면 시스템이 자동으로 재부팅됩니다. GRUB 화면에 업그레이드된 (Red Hat Enterprise Linux 9) 및 사용 가능한 운영 체제의 이전 버전이 표시되어 있습니다. 업그레이드된 시스템 버전은 기본 선택 사항입니다.
추가 리소스
-
시스템의
Boom(1)
도움말 페이지 - BOOM이란 무엇이며 어떻게 설치할 수 있습니까? (Red Hat Knowledgebase)
- BOOM 부팅 항목(Red Hat Knowledgebase)을 생성하는 방법
6.3. Red Hat Enterprise Linux 버전 간 전환
시스템에서 현재 및 이전 Red Hat Enterprise Linux 버전에 동시에 액세스할 수 있습니다. Boom Boot Manager 를 사용하여 다양한 운영 체제 버전에 액세스하면 운영 체제 업그레이드와 관련된 위험이 줄어들고 하드웨어 다운 타임도 줄일 수 있습니다. 환경 간 전환 기능을 사용하면 다음을 수행할 수 있습니다.
- 두 환경을 동시에 신속하게 비교합니다.
- 업그레이드 결과를 평가하는 동안 환경 간에 전환합니다.
- 파일 시스템의 이전 콘텐츠를 복구합니다.
- 업그레이드된 호스트가 실행되는 동안 이전 시스템에 계속 액세스합니다.
- 업데이트 자체가 실행되는 경우에도 언제든지 업데이트 프로세스를 중지하고 되돌립니다.
절차
시스템을 재부팅합니다.
# reboot
- GRUB 부트 로더 화면에서 필요한 부팅 항목을 선택합니다.
검증
선택한 부팅 볼륨이 표시되는지 확인합니다.
# cat /proc/cmdline BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-513.24.1.el8_9.x86_64.boom0 root=/dev/rhel/root_snapshot_before_changes ro rd.lvm.lv=rhel/root_snapshot_before_changes rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M
추가 리소스
-
시스템의
Boom(1)
도움말 페이지
6.4. 업그레이드에 성공한 후 논리 볼륨 스냅샷 삭제
Boom Boot Manager를 사용하여 시스템을 성공적으로 업그레이드한 경우 스냅샷 부팅 항목과 LV(Logical volume) 스냅샷을 제거하여 업그레이드된 시스템을 사용할 수 있습니다.
LV 스냅샷을 삭제한 후에는 추가 작업을 수행할 수 없습니다.
사전 요구 사항
- 최근에 Boom Boot Manager를 사용하여 Red Hat Enterprise Linux를 최신 버전으로 업그레이드했습니다.
절차
- GRUB 부트 로더 화면에서 Red Hat Enterprise Linux 9로 부팅합니다.
시스템이 로드된 후 사용 가능한 부팅 항목을 확인합니다. 다음 출력에서는 boom 부팅 항목 목록에 있는 스냅샷 부팅 항목을 보여줍니다.
# boom list BootID Version Name RootDevice 1e1a9b4 4.18.0-513.5.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root 4ea37b9 4.18.0-513.24.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root c919f89 4.18.0-513.24.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/rhel/root_snapshot_before_changes
BootID
값을 사용하여 스냅샷 항목을 삭제합니다.# boom delete --boot-id c919f89 Deleted 1 entry
그러면 GRUB 메뉴에서 부팅 항목이 삭제됩니다.
LV 스냅샷을 제거합니다.
# lvremove rhel/root_snapshot_before_changes Do you really want to remove active logical volume rhel/root_snapshot_before_changes? [y/n]: y Logical volume "root_snapshot_before_changes" successfully removed
- 나머지 업그레이드 후 작업을 완료합니다. 자세한 내용은 RHEL 8에서 RHEL 9로 업그레이드 를 참조하십시오.
추가 리소스
-
시스템의
Boom(1)
도움말 페이지
6.5. 업그레이드 실패 후 롤백 부팅 항목 생성
업그레이드에 실패한 후 운영 체제를 이전 상태로 되돌리려면 롤백 부팅 항목을 사용합니다. 이는 업그레이드된 환경에 문제가 있는 경우(예: 사내 소프트웨어와 호환되지 않음)에도 유용할 수 있습니다.
롤백 부팅 항목을 준비하려면 스냅샷 환경을 사용합니다.
사전 요구 사항
- 스냅샷이 있습니다. 스냅샷을 생성하는 방법은 Boom 부팅 관리자를 사용하여 다른 버전으로 업그레이드 를 참조하십시오.
절차
스냅샷을 원래 볼륨과 병합합니다.
# lvconvert --merge rhel/root_snapshot_before_changes Logical volume rhel/root_snapshot_before_changes contains a filesystem in use. Delaying merge since snapshot is open. Merging of thin snapshot rhel/root_snapshot_before_changes will occur on next activation of rhel/root.
주의스냅샷을 병합한 후 데이터 손실을 방지하려면 이 절차의 나머지 모든 단계를 계속 진행해야 합니다.
병합된 스냅샷에 대한 롤백 부팅 항목을 생성합니다.
# boom create --backup --title "RHEL Rollback" --rootlv rhel/root WARNING - Boom grub2 integration is disabled in '/boot/../etc/default/boom' WARNING - Options for BootEntry(boot_id=1e1a9b4) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=1ccc554) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=4ea37b9) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=e22dd61) do not match OsProfile: marking read-only Created entry with boot_id 6c44638: title RHEL Rollback machine-id b1dcec73886b45218892b1a7bbfa0dee version 4.18.0-513.24.1.el8_9.x86_64 linux /vmlinuz-4.18.0-513.24.1.el8_9.x86_64.boom0 initrd /initramfs-4.18.0-513.24.1.el8_9.x86_64.img.boom0 options root=/dev/rhel/root ro rd.lvm.lv=rhel/root rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M
모든 WARNING 메시지를 무시합니다. RHEL-35983 을 참조하십시오.
시스템을 재부팅하여 운영 체제 상태를 복원합니다.
# reboot
- 시스템이 재부팅된 후 GRUB 화면에서 RHEL 롤백 부팅 항목을 선택합니다.
루트
논리 볼륨이 활성화되면 시스템은 스냅샷 병합 작업을 자동으로 시작합니다.중요병합 작업이 시작되면 스냅샷 볼륨을 더 이상 사용할 수 없습니다. RHEL 롤백 부팅 항목을 성공적으로 부팅하면 Root LV 스냅샷 부팅 항목이 더 이상 작동하지 않습니다. 스냅샷 논리 볼륨을 병합하면 Root LV 스냅샷이 제거되고 원래 볼륨의 이전 상태가 복원됩니다.
병합 작업을 완료한 후 사용되지 않는 항목을 제거하고 원래 부팅 항목을 복원합니다.
/boot
파일 시스템에서 사용되지 않는 Red Hat Enterprise Linux 9 부팅 항목을 제거하고 변경 사항을 적용하려면grub.cfg
파일을 다시 빌드합니다.# rm -f /boot/loader/entries/*.el9*
# rm -f /boot/*.el9*
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... done
시스템을 성공적으로 롤백한 후
boom
스냅샷 및 롤백 부팅 항목을 삭제합니다.# boom list -o+title WARNING - Options for BootEntry(boot_id=1e1a9b4) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=1ccc554) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=4ea37b9) do not match OsProfile: marking read-only BootID Version Name RootDevice Title 1e1a9b4 4.18.0-513.5.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root Red Hat Enterprise Linux (4.18.0-513.5.1.el8_9.x86_64) 8.9 (Ootpa) 4ea37b9 4.18.0-513.24.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root Red Hat Enterprise Linux (4.18.0-513.24.1.el8_9.x86_64) 8.9 (Ootpa) c919f89 4.18.0-513.24.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/rhel/root_snapshot_before_changes Root LV snapshot before changes 6c44638 4.18.0-513.24.1.el8_9.x86_64 Red Hat Enterprise Linux /dev/rhel/root RHEL Rollback
# boom delete c919f89 WARNING - Options for BootEntry(boot_id=1e1a9b4) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=1ccc554) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=4ea37b9) do not match OsProfile: marking read-only Deleted 1 entry
# boom delete 6c44638 WARNING - Options for BootEntry(boot_id=1e1a9b4) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=1ccc554) do not match OsProfile: marking read-only WARNING - Options for BootEntry(boot_id=4ea37b9) do not match OsProfile: marking read-only Deleted 1 entry
경고를 무시합니다. 자세한 내용은 RHEL-35983 을 참조하십시오.
추가 리소스
-
시스템의
Boom(1)
도움말 페이지
7장. LVM 보고서 사용자 정의
LVM은 사용자 지정 보고서를 생성하기 위한 다양한 구성 및 명령줄 옵션을 제공합니다. 출력을 정렬하고 단위를 지정하고 선택 기준을 사용하고 lvm.conf
파일을 업데이트하여 LVM 보고서를 사용자 지정할 수 있습니다.
7.1. LVM 디스플레이 형식 제어
추가 옵션 없이 pvs
,lv
또는 Cryostats 명령을 사용하는 경우 기본 정렬 순서에 표시된 기본 필드 세트가 표시됩니다. s
pvs
명령의 기본 필드에는 물리 볼륨 이름으로 정렬된 다음 정보가 포함됩니다.
# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 VolumeGroupName lvm2 a-- 17.14G 17.14G
/dev/vdb2 VolumeGroupName lvm2 a-- 17.14G 17.09G
/dev/vdb3 VolumeGroupName lvm2 a-- 17.14G 17.14G
PV
- 물리 볼륨 이름입니다.
VG
- 볼륨 그룹 이름.
FMT
-
물리 볼륨의 메타데이터 형식:
lvm2
또는lvm1
. Attr
- 물리 볼륨의 상태: (a) - 할당 가능 또는 (x) 내보내기.
PSize
- 물리 볼륨의 크기입니다.
PFree
- 물리 볼륨에 남아 있는 여유 공간입니다.
사용자 정의 필드 표시
기본값과 다른 필드 세트를 표시하려면 -o
옵션을 사용합니다. 다음 예제는 물리 볼륨의 이름, 크기 및 사용 공간만 표시합니다.
# pvs -o pv_name,pv_size,pv_free
PV PSize PFree
/dev/vdb1 17.14G 17.14G
/dev/vdb2 17.14G 17.09G
/dev/vdb3 17.14G 17.14G
LVM 디스플레이 정렬
특정 기준에 따라 결과를 정렬하려면 -O
옵션을 사용합니다. 다음 예제에서는 물리 볼륨의 사용 가능한 공간을 오름차순으로 정렬합니다.
# pvs -o pv_name,pv_size,pv_free -O pv_free
PV PSize PFree
/dev/vdb2 17.14G 17.09G
/dev/vdb1 17.14G 17.14G
/dev/vdb3 17.14G 17.14G
결과를 내림차순으로 정렬하려면 -
문자와 함께 -O
옵션을 사용합니다.
# pvs -o pv_name,pv_size,pv_free -O -pv_free
PV PSize PFree
/dev/vdb1 17.14G 17.14G
/dev/vdb3 17.14G 17.14G
/dev/vdb2 17.14G 17.09G
추가 리소스
-
시스템의
lvmreport(7)
,lvs(8)
, Cryostats(8) 및pvs(8)
도움말 페이지 - LVM 디스플레이의 단위 지정
- LVM 구성 파일 사용자 정의
7.2. LVM 디스플레이의 단위 지정
LVM 디스플레이 명령의 --units
인수를 지정하여 기본 2 또는 기본 10 단위로 LVM 장치의 크기를 볼 수 있습니다. 모든 인수에 대해서는 다음 표를 참조하십시오.
단위 유형 | 설명 | 사용 가능한 옵션 | 기본 |
---|---|---|---|
기본 2 단위 | 단위는 2의 전원으로 표시됩니다(24의 다중 수). |
|
|
기본 10 단위 | 단위는 1000의 배수로 표시됩니다. |
| 해당 없음 |
사용자 정의 단위 |
기본 2 또는 기본 10 단위와 수량의 조합. 예를 들어 결과를 4MB로 표시하려면 | 해당 없음 | 해당 없음 |
단위의 값을 지정하지 않으면 기본적으로 사람이 읽을 수 있는 형식(
r
)이 사용됩니다. 다음 Cryostat 명령은
사람이 읽을 수 있는 형식으로 VG의 크기를 표시합니다. 가장 적합한 단위가 사용되고 반올림 표시기&
lt;는 실제 크기가 근사치이며 931 기가바이트 미만인 것을 보여줍니다.# vgs myvg VG #PV #LV #SN Attr VSize VFree myvg 1 1 0 wz-n <931.00g <930.00g
다음
pvs
명령은/dev/vdb
물리 볼륨의 기본 2 기비바이트 단위로 출력을 표시합니다.# pvs --units g /dev/vdb PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 931.00g 930.00g
다음
pvs
명령은/dev/vdb
물리 볼륨의 기본 10 기가바이트 단위로 출력을 표시합니다.# pvs --units G /dev/vdb PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 999.65G 998.58G
다음
pvs
명령은 출력을 512바이트 섹터로 표시합니다.# pvs --units s PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 1952440320S 1950343168S
LVM 디스플레이 명령에 사용자 지정 단위를 지정할 수 있습니다. 다음 예제는
pvs
명령의 출력을 4 메비바이트 단위로 표시합니다.# pvs --units 4m PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 238335.00U 238079.00U
7.3. LVM 구성 파일 사용자 정의
lvm.conf
파일을 편집하여 특정 스토리지 및 시스템 요구 사항에 따라 LVM 구성을 사용자 지정할 수 있습니다. 예를 들어 lvm.conf
파일을 편집하여 필터 설정을 수정하거나, 볼륨 그룹 자동 활성화를 구성하거나, 씬 풀을 관리하거나, 스냅샷을 자동으로 확장할 수 있습니다.
절차:
-
선택한 편집기에서
lvm.conf
파일을 엽니다. 기본 표시 값을 수정하려는 설정을 주석 제거하고 수정하여
lvm.conf
파일을 사용자 지정합니다.lvs
출력에 표시되는 필드를 사용자 지정하려면lvs_cols
매개변수의 주석을 제거하고 수정합니다.lvs_cols="lv_name,vg_name,lv_attr"
pvs
, Cryostats 및lvs
명령의
빈 필드를 숨기려면compact_output=1
설정의 주석을 제거합니다.compact_output = 1
pvs
, Cryostats ,lvs
명령의
기본 단위로 기가를 설정하려면units = "r"
설정을units = "G"
로 바꿉니다.units = "G"
lvm.conf
파일의 해당 섹션의 주석을 제거합니다. 예를 들어lvs_cols
매개변수를 수정하려면report
섹션의 주석을 제거해야 합니다.report { ... }
검증
lvm.conf
파일을 수정한 후 변경된 값을 확인합니다.# lvmconfig --typeconfig diff
추가 리소스
-
시스템의 LVM.conf(5)
도움말 페이지
7.4. LVM 선택 기준 정의
선택 기준은 < field> <operator> <value
> 형식으로 된 문 세트이며 비교 연산자를 사용하여 특정 필드의 값을 정의합니다. 그런 다음 선택 기준과 일치하는 오브젝트가 처리되거나 표시됩니다. 오브젝트는 PV(물리 볼륨), 볼륨 그룹(VG) 또는 논리 볼륨(LV)일 수 있습니다. 설명은 논리 및 그룹화 연산자로 결합됩니다.
선택 기준을 정의하려면 -S
또는 --select
옵션 다음에 하나 이상의 문을 사용합니다.
S
옵션은 각 오브젝트의 이름을 지정하는 대신 처리할 오브젝트를 설명하는 방식으로 작동합니다. 이는 많은 오브젝트를 처리할 때 도움이 되며 각 개체를 별도로 찾아서 이름을 지정하거나 복잡한 특성을 가진 오브젝트를 검색할 때 유용합니다. S
옵션은 여러 이름을 입력하지 않도록 바로 가기로 사용할 수도 있습니다.
전체 필드 및 가능한 연산자 세트를 보려면 lvs -S help
명령을 사용합니다. lvs
를 보고 또는 처리 명령으로 교체하여 해당 명령의 세부 정보를 확인합니다.
-
보고 명령에는
pvs
, Cryostats ,lvs
,pvdisplay
, Cryostatdisplay ,lvdisplay
,dmsetup info -c
가 포함됩니다. -
처리 명령에는
pvchange
, Cryostatchange
,lvchange
, Cryostatimport
, Cryostatexport
, Cryostatremove
,lvremove
가 포함됩니다.
pvs
명령을 사용한 선택 기준의 예
다음
pvs
명령의 예제에서는nvme
문자열이 포함된 이름이 있는 물리 볼륨만 표시합니다.# pvs -S name=~nvme PV Fmt Attr PSize PFree /dev/nvme2n1 lvm2 --- 1.00g 1.00g
다음
pvs
명령의 예는myvg
볼륨 그룹에 있는 물리 장치만 표시합니다.# pvs -S vg_name=myvg PV VG Fmt Attr PSize PFree /dev/vdb1 myvg lvm2 a-- 1020.00m 396.00m /dev/vdb2 myvg lvm2 a-- 1020.00m 896.00m
lvs
명령을 사용한 선택 기준의 예
다음
lvs
명령은 크기가 100m 미만이지만 200m 미만인 논리 볼륨만 표시합니다.# lvs -S 'size > 100m && size < 200m' LV VG Attr LSize Cpy%Sync rr myvg rwi-a-r--- 120.00m 100.00
다음
lvs
명령은lvol
과 0에서 2 사이의 임의의 숫자가 포함된 이름이 있는 논리 볼륨만 표시합니다.# lvs -S name=~lvol[02] LV VG Attr LSize lvol0 myvg -wi-a----- 100.00m lvol2 myvg -wi------- 100.00m
다음
lvs
명령은raid1
세그먼트 유형이 있는 논리 볼륨만 표시합니다.# lvs -S segtype=raid1 LV VG Attr LSize Cpy%Sync rr myvg rwi-a-r--- 120.00m 100.00
고급 예
선택 기준을 다른 옵션과 결합할 수 있습니다.
lvchange
명령의 다음 예제에서는 활성 논리 볼륨에만 특정 태그mytag
를 추가합니다.# lvchange --addtag mytag -S active=1 Logical volume myvg/mylv changed. Logical volume myvg/lvol0 changed. Logical volume myvg/lvol1 changed. Logical volume myvg/rr changed.
lvs
명령의 다음 예제에서는 이름이_pmspare
와 일치하지 않는 모든 논리 볼륨을 표시하고 기본 헤더를 사용자 지정 헤더로 변경합니다.# lvs -a -o lv_name,vg_name,attr,size,pool_lv,origin,role -S 'name!~_pmspare' LV VG Attr LSize Pool Origin Role thin1 example Vwi-a-tz-- 2.00g tp public,origin,thinorigin thin1s example Vwi---tz-- 2.00g tp thin1 public,snapshot,thinsnapshot thin2 example Vwi-a-tz-- 3.00g tp public tp example twi-aotz-- 1.00g private [tp_tdata] example Twi-ao---- 1.00g private,thin,pool,data [tp_tmeta] example ewi-ao---- 4.00m private,thin,pool,metadata
lvchange
명령의 다음 예제에서는 일반 활성화 명령 중에role=thinsnapshot
및origin=thin1
이 있는 논리 볼륨에 플래그를 지정합니다.# lvchange --setactivationskip n -S 'role=thinsnapshot && origin=thin1' Logical volume myvg/thin1s changed.
lvs
명령의 다음 예제에서는 세 조건 모두 일치하는 논리 볼륨만 표시합니다.-
name에는
_tmeta
가 포함되어 있습니다. -
역할은
메타데이터
입니다. - 크기가 4m보다 작거나 같습니다.
# lvs -a -S 'name=~_tmeta && role=metadata && size <= 4m' LV VG Attr LSize [tp_tmeta] myvg ewi-ao---- 4.00m
-
name에는
추가 리소스
-
시스템의
lvmreport(7)
도움말 페이지
9장. RAID 논리 볼륨 구성
LVM(Logical Volume Manager)을 사용하여 RAID(Redundant Array of Independent Disks) 볼륨을 생성하고 관리할 수 있습니다. LVM은 RAID 레벨 0, 1, 4, 5, 6, 10을 지원합니다. LVM RAID 볼륨은 다음과 같은 특징이 있습니다.
- LVM에서는 MD(Multiple Devices) 커널 드라이버를 활용하는 RAID 논리 볼륨을 생성하고 관리합니다.
- 배열에서 RAID1 이미지를 일시적으로 분할하고 나중에 배열에 다시 병합할 수 있습니다.
- LVM RAID 볼륨은 스냅샷을 지원합니다.
- RAID 논리 볼륨은 클러스터를 인식하지 못합니다. 하나의 시스템에서만 RAID 논리 볼륨을 생성 및 활성화할 수 있지만 두 개 이상의 시스템에서 동시에 활성화할 수 없습니다.
-
RAID 논리 볼륨(LV)을 생성할 때 LVM은 배열의 모든 데이터 또는 패리티 하위 볼륨마다 크기가 한 범위인 메타데이터 하위 볼륨을 생성합니다. 예를 들어 2방향 RAID1 어레이를 생성하면 두 개의 메타데이터 하위 볼륨(
lv_rmeta_0
및lv_rmeta_1
)과 두 개의 데이터 하위 볼륨(lv_rimage_0
및lv_rimage_1
)이 생성됩니다. - RAID LV에 무결성을 추가하면 소프트 손상이 줄어들거나 방지됩니다.
9.1. RAID 수준 및 선형 지원
다음은 레벨 0, 1, 4, 5, 6, 10 및 선형을 포함하여 RAID에서 지원하는 구성입니다.
- 수준 0
RAID 레벨 0은 종종 스트라이핑이라고 하며 성능 지향 스트라이핑 데이터 매핑 기술입니다. 즉, 배열에 쓰는 데이터가 스트라이프로 분리되고 배열의 멤버 디스크에 기록되므로 고유 비용의 높은 I/O 성능이 허용되지만 중복은 제공되지 않습니다.
RAID 레벨 0 구현은 배열에서 가장 작은 장치의 크기까지 멤버 장치에서만 데이터를 스트라이핑합니다. 즉, 크기가 약간 다른 여러 장치가 있는 경우 각 장치는 최소 드라이브와 동일한 크기인 것처럼 취급됩니다. 따라서 수준 0 배열의 일반적인 스토리지 용량이 모든 디스크의 총 용량입니다. 멤버 디스크에 다른 크기가 있는 경우 RAID0은 사용 가능한 영역을 사용하여 해당 디스크의 모든 공간을 사용합니다.
- 수준 1
RAID 수준 1 또는 미러링은 배열의 각 멤버 디스크에 동일한 데이터를 작성하여 각 디스크에 미러링된 복사본을 남겨 두어 중복성을 제공합니다. 미러링은 단순성과 높은 수준의 데이터 가용성으로 인해 널리 사용됩니다. 수준 1은 두 개 이상의 디스크로 작동하며 매우 우수한 데이터 신뢰성을 제공하고 읽기 집약적인 애플리케이션의 성능을 개선하지만 상대적으로 높은 비용으로 작동합니다.
RAID 수준 1은 데이터 신뢰성을 제공하는 어레이의 모든 디스크에 동일한 정보를 쓰므로 비용이 많이 발생하지만 레벨 5와 같은 패리티 기반 RAID 수준보다 훨씬 공간 효율적입니다. 그러나 이 공간의 비효율성은 성능 이점을 제공하며, 이는 패리티를 생성하기 위해 더 많은 CPU 성능을 소비하는 패리티 기반 RAID 레벨인 반면 RAID 레벨 1은 CPU 오버헤드가 거의 없는 여러 RAID 멤버에 한 번 이상 동일한 데이터를 씁니다. 따라서 RAID 레벨 1은 소프트웨어 RAID가 사용되고 머신의 CPU 리소스가 RAID 활동 이외의 작업으로 일관되게 과세되는 머신에서 패리티 기반 RAID 수준을 초과할 수 있습니다.
수준 1 배열의 스토리지 용량은 하드웨어 RAID에서 가장 작은 미러링된 하드 디스크 용량 또는 소프트웨어 RAID에서 가장 작은 미러링된 파티션의 용량과 동일합니다. 수준 1 중복은 모든 RAID 유형 중에서 가능한 가장 높은 것으로, 배열은 단일 디스크로만 작동할 수 있습니다.
- 레벨 4
레벨 4는 데이터를 보호하기 위해 단일 디스크 드라이브에 집중된 패리티를 사용합니다. 패리티 정보는 배열의 나머지 멤버 디스크의 콘텐츠에 따라 계산됩니다. 그런 다음 이 정보를 사용하여 배열의 디스크 하나가 실패할 때 데이터를 재구성할 수 있습니다. 그런 다음 재구성된 데이터를 사용하여 교체하기 전에 실패한 디스크에 대한 I/O 요청을 충족하고 교체된 디스크를 다시 채울 수 있습니다.
전용 패리티 디스크는 RAID 배열에 대한 모든 쓰기 트랜잭션의 고유 성능 장애를 나타내기 때문에 레벨 4는 나중 쓰기 캐싱과 같은 기술을 함께 사용하지 않고 거의 사용되지 않습니다. 또는 시스템 관리자가 데이터가 채워지면 쓰기 트랜잭션이 거의 없는 배열과 같이 이러한 병목 현상이 있는 소프트웨어 RAID 장치를 의도적으로 설계하는 특정 상황에서 사용됩니다. RAID 수준 4는 너무 드물게 사용되므로 Anaconda에서 옵션으로 사용할 수 없습니다. 그러나 필요한 경우 사용자가 수동으로 생성할 수 있습니다.
하드웨어 RAID 수준 4의 스토리지 용량은 가장 작은 멤버 파티션의 용량과 같으며 파티션 수와 1을 곱한 값입니다. RAID 수준 4 배열의 성능은 항상 DestinationRule이며, 이는 outperform 쓰기를 의미합니다. 이는 쓰기 작업에서 패리티를 생성할 때 추가 CPU 리소스와 주요 메모리 대역폭을 소비하기 때문에 데이터를 작성할 뿐만 아니라 패리티를 작성할 때 실제 데이터를 디스크에 쓸 때 추가 버스 대역폭을 사용하기 때문입니다. 읽기 작업은 배열이 성능 저하된 상태에 있지 않는 한 패리티가 아닌 데이터를 읽기만 하면 됩니다.Read operations need only read the data and not the parity unless the array is in a degraded state. 결과적으로 읽기 작업은 정상적인 작동 상태에서 동일한 양의 데이터 전송을 위해 드라이브 및 컴퓨터 전체에 대한 트래픽을 줄일 수 있습니다.
- 수준 5
RAID의 가장 일반적인 유형입니다. 배열의 모든 멤버 디스크 드라이브에 패리티를 배포하면 RAID 레벨 5는 수준 4에 내재된 쓰기 병목 현상이 제거됩니다. 유일한 성능 병목은 패리티 계산 프로세스 자체입니다. 최신 CPU는 패리티를 매우 빠르게 계산할 수 있습니다. 그러나 RAID 5 어레이에 많은 디스크가 있으므로 모든 장치에서 집계 데이터 전송 속도가 충분히 높으면 패리티 계산이 병목 현상이 발생할 수 있습니다.
레벨 5는 성능이 뛰어나고 실제로 성능이 저하되는 쓰기를 읽습니다. RAID 레벨 5의 스토리지 용량은 수준 4와 동일한 방식으로 계산됩니다.
- 수준 6
이는 데이터 중복성 및 보존이 가장 중요한 문제이지만 수준 1의 비효율성을 허용하지 않는 일반적인 RAID 수준입니다. 레벨 6은 복잡한 패리티 체계를 사용하여 배열에서 두 드라이브의 손실에서 복구할 수 있습니다. 이러한 복잡한 패리티 체계는 소프트웨어 RAID 장치에 CPU 부담을 훨씬 높일 수 있으며 쓰기 트랜잭션 중에 부담을 더 많이 적용합니다. 따라서 레벨 6은 레벨 4 및 5보다 성능이 더 높음입니다.
RAID 레벨 6 배열의 총 용량은 추가 패리티 스토리지 공간에 대해 장치 수에서 1개 대신 두 개 대신 두 개의 장치를 뺀 경우를 제외하고 RAID 수준 5 및 4와 유사하게 계산됩니다.
- 수준 10
이 RAID 수준은 수준 0의 성능 이점과 수준 1의 중복성을 결합합니다. 또한 두 개 이상의 장치가 있는 수준 1 배열에서 부족한 공간 중 일부를 줄입니다. 예를 들어 레벨 10을 사용하면 각 데이터의 두 사본만 저장하도록 구성된 3-드 드라이브 어레이를 생성할 수 있으며, 이를 통해 전체 배열 크기가 3 장치 수준 1 어레이와 유사한 소형 장치보다 1.5배나 작은 장치의 크기를 1.5배로 설정할 수 있습니다. 이렇게 하면 RAID 수준 6과 유사한 패리티를 계산하기 위해 CPU 프로세스 사용량이 발생하지 않지만 공간 효율적입니다.
RAID 레벨 10의 생성은 설치 중에 지원되지 않습니다. 설치 후 수동으로 생성할 수 있습니다.
- Linear RAID
Linear RAID는 더 큰 가상 드라이브를 생성하기 위한 드라이브 그룹입니다.
선형 RAID에서 청크는 하나의 멤버 드라이브에서 순차적으로 할당되며 첫 번째가 완전히 채워진 경우에만 다음 드라이브로 이동합니다. 이 그룹화는 멤버 드라이브 간에 분할되는 I/O 작업이 거의 없기 때문에 성능상의 이점을 제공하지 않습니다. 선형 RAID는 중복을 제공하지 않으며 신뢰성을 줄입니다. 하나의 멤버 드라이브가 실패하면 전체 배열을 사용할 수 없으며 데이터가 손실될 수 있습니다. 용량은 모든 멤버 디스크의 합계입니다.
9.2. LVM RAID 세그먼트 유형
RAID 논리 볼륨을 생성하려면 lvcreate
명령의 --type
인수를 사용하여 RAID 유형을 지정할 수 있습니다. 대부분의 사용자에 대해 raid1
,raid4
,raid5
,raid6
및 raid10
인 5가지 기본 유형 중 하나를 지정하면 충분합니다.
다음 표에서는 가능한 RAID 세그먼트 유형을 설명합니다.
세그먼트 유형 | 설명 |
---|---|
|
RAID1 미러링. 스트라이핑을 지정하지 않고 |
| RAID4 전용 패리티 디스크. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 스트라이핑. RAID0은 스트라이프 크기 단위로 여러 데이터 하위 볼륨에 논리 볼륨 데이터를 분배합니다. 이는 성능을 높이는 데 사용됩니다. 하위 볼륨 중 하나라도 실패하면 논리 볼륨 데이터가 손실됩니다. |
9.3. RAID0을 생성하는 매개변수
lvcreate --type raid0[meta] --stripes_stripes --stripes --stripes --stripes VolumeGroup [PhysicalVolumePath] 명령을 사용하여 RAID0 스트리핑
논리 볼륨을 생성할 수 있습니다.
다음 표에서는 RAID0 스트라이프 논리 볼륨을 생성하는 동안 사용할 수 있는 다양한 매개변수를 설명합니다.
매개변수 | 설명 |
---|---|
|
|
| 논리 볼륨을 분산할 장치 수를 지정합니다. |
| 각 스트라이프의 크기(KB)를 지정합니다. 이는 다음 장치로 이동하기 전에 하나의 장치에 기록된 데이터 양입니다. |
| 사용할 볼륨 그룹을 지정합니다. |
| 사용할 장치를 지정합니다. 이 값을 지정하지 않으면 LVM에서 Stripes 옵션으로 지정된 장치 수를 각 스트라이프마다 하나씩 선택합니다. |
9.4. RAID 논리 볼륨 생성
-m
인수에 대해 지정한 값에 따라 여러 복사본을 사용하여 RAID1 배열을 생성할 수 있습니다. 마찬가지로 -i
인수를 사용하여 RAID 0, 4, 5, 6, 10개의 스트라이프 수를 지정할 수 있습니다. -I
인수를 사용하여 스트라이프 크기를 지정할 수도 있습니다. 다음 절차에서는 다양한 유형의 RAID 논리 볼륨을 생성하는 다양한 방법을 설명합니다.
절차
2방향 RAID를 생성합니다. 다음 명령은 볼륨 그룹 my_vg, 즉 크기가 1G 인 my_lv 라는 2방향 RAID1 어레이를 생성합니다.
# lvcreate --type raid1 -m 1 -L 1G -n my_lv my_vg Logical volume "my_lv" created.
스트라이프를 사용하여 RAID5 어레이를 생성합니다. 다음 명령은 볼륨 그룹 my_vg, 크기가 1G 인 세 개의 스트라이프와 my_lv 라는 하나의 암시적 패리티 드라이브와 함께 RAID5 배열을 생성합니다. LVM 스트라이프 볼륨과 유사한 스트라이프 수를 지정할 수 있습니다. 올바른 패리티 드라이브 수가 자동으로 추가됩니다.
# lvcreate --type raid5 -i 3 -L 1G -n my_lv my_vg
스트라이프를 사용하여 RAID6 어레이를 생성합니다. 다음 명령은 볼륨 그룹 my_ vg 에서 3개의 스트라이프와 두 개의 암시적 패리티 드라이브(예: 1G 1 gigabyte)인 RAID6 어레이를 생성합니다.
# lvcreate --type raid6 -i 3 -L 1G -n my_lv my_vg
검증
2방향 RAID1 어레이인 LVM 장치 my_vg/my_lv 를 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
추가 리소스
-
시스템의
lvcreate(8)
및lvmraid(7)
도움말 페이지
9.5. 스토리지
RHEL 시스템 역할을 사용하여 RAID로 LVM 풀 구성
스토리지
시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL에서 RAID로 LVM 풀을 구성할 수 있습니다. 사용 가능한 매개 변수로 Ansible 플레이북을 설정하여 RAID로 LVM 풀을 구성할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure LVM pool with RAID ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] raid_level: raid1 volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs state: present
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
풀이 RAID에 있는지 확인합니다.
# ansible managed-node-01.example.com -m command -a 'lsblk'
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일 -
/usr/share/doc/rhel-system-roles/storage/
디렉터리 - RAID 관리
9.6. RAID0 스트라이핑 논리 볼륨 생성
RAID0 논리 볼륨은 스트라이프 크기 단위로 여러 데이터 하위 볼륨에 논리 볼륨 데이터를 분배합니다. 다음 절차에서는 디스크에서 데이터를 스트라이핑하는 mylv 라는 LVM RAID0 논리 볼륨을 생성합니다.
사전 요구 사항
- 세 개 이상의 물리 볼륨을 생성했습니다. 물리 볼륨 생성에 대한 자세한 내용은 LVM 물리 볼륨 생성 을 참조하십시오.
- 볼륨 그룹을 생성했습니다. 자세한 내용은 LVM 볼륨 그룹 생성을 참조하십시오.
절차
기존 볼륨 그룹에서 RAID0 논리 볼륨을 생성합니다. 다음 명령은 세 개의 스트라이프 크기와 스트라이프 크기가 4kB 인 볼륨 그룹 myvg 에서 RAID0 볼륨 mylv 를 생성합니다.
# lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv my_vg Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.
RAID0 논리 볼륨에 파일 시스템을 생성합니다. 다음 명령은 논리 볼륨에 ext4 파일 시스템을 생성합니다.
# mkfs.ext4 /dev/my_vg/mylv
논리 볼륨을 마운트하고 파일 시스템 디스크 공간 사용을 보고합니다.
# mount /dev/my_vg/mylv /mnt # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/my_vg-mylv 2002684 6168 1875072 1% /mnt
검증
생성된 RAID0 제거 논리 볼륨을 확인합니다.
# lvs -a -o +devices,segtype my_vg LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type mylv my_vg rwi-a-r--- 2.00g mylv_rimage_0(0),mylv_rimage_1(0),mylv_rimage_2(0) raid0 [mylv_rimage_0] my_vg iwi-aor--- 684.00m /dev/sdf1(0) linear [mylv_rimage_1] my_vg iwi-aor--- 684.00m /dev/sdg1(0) linear [mylv_rimage_2] my_vg iwi-aor--- 684.00m /dev/sdh1(0) linear
9.7. 스토리지
RHEL 시스템 역할을 사용하여 RAID LVM 볼륨의 스트라이프 크기 구성
스토리지
시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL에서 RAID LVM 볼륨의 스트라이프 크기를 구성할 수 있습니다. 사용 가능한 매개 변수로 Ansible 플레이북을 설정하여 RAID로 LVM 풀을 구성할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure stripe size for RAID LVM volumes ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs raid_level: raid0 raid_stripe_size: "256 KiB" state: present
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
스트라이프 크기가 필요한 크기로 설정되어 있는지 확인합니다.
# ansible managed-node-01.example.com -m command -a 'lvs -o+stripesize /dev/my_pool/my_volume'
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
파일 -
/usr/share/doc/rhel-system-roles/storage/
디렉터리 - RAID 관리
9.8. 소프트 데이터 손상
데이터 스토리지의 소프트 손상은 스토리지 장치에서 검색된 데이터가 해당 장치에 기록된 데이터와 다르다는 것을 의미합니다. 손상된 데이터는 스토리지 장치에 무기한 존재할 수 있습니다. 이 데이터를 검색하고 사용할 때까지 이 손상된 데이터를 검색하지 못할 수 있습니다.
구성 유형에 따라 장치 장애가 발생할 때 RID(Red 배터리 디스크) 논리 볼륨(LV)이 손실되지 않습니다. RAID 어레이로 구성된 장치가 실패하면 해당 RAID LV의 일부인 다른 장치에서 데이터를 복구할 수 있습니다. 그러나 RAID 구성은 데이터 자체의 무결성을 보장하지 않습니다. 소프트 손상, 자동 손상, 소프트 오류 및 자동 오류는 시스템 설계 및 소프트웨어가 예상대로 계속 작동하는 경우에도 손상된 데이터를 설명하는 용어입니다.
DM 무결성을 사용하여 새 RAID LV를 생성하거나 기존 RAID LV에 무결성을 추가하는 경우 다음 사항을 고려하십시오.
- 무결성 메타데이터에는 추가 스토리지 공간이 필요합니다. 각 RAID 이미지에 대해 데이터에 추가되는 체크섬 때문에 500MB의 데이터마다 4MB의 추가 스토리지 공간이 필요합니다.
- 일부 RAID 구성은 다른 구성보다 많은 영향을 받지만 DM 무결성을 추가하면 데이터에 액세스할 때 대기 시간으로 인한 성능에 영향을 미칩니다. RAID1 구성은 일반적으로 RAID5 또는 해당 변형보다 더 나은 성능을 제공합니다.
- RAID 무결성 블록 크기도 성능에 영향을 미칩니다. 더 큰 RAID 무결성 블록 크기를 구성하면 성능이 향상됩니다. 그러나 크기가 작은 RAID 무결성 블록 크기는 이전 버전과의 호환성을 제공합니다.
-
사용 가능한 무결성 모드는 두 가지, 즉,
journal
또는journal
입니다. 일반적으로무결성
모드는저널
모드보다 더 나은 성능을 제공합니다.
성능 문제가 발생하면 RAID1을 무결성으로 사용하거나 특정 RAID 구성의 성능을 테스트하여 요구 사항을 충족하는지 확인합니다.
9.9. DM 무결성을 사용하여 RAID 논리 볼륨 생성
DM(Device mapper) 무결성을 사용하여 RAID LV를 생성하거나 기존 RAID 논리 볼륨(LV)에 무결성을 추가하면 소프트 손상으로 인해 데이터가 손실될 위험이 완화됩니다. LV를 사용하기 전에 무결성 동기화 및 RAID 메타데이터가 완료될 때까지 기다립니다. 그렇지 않으면 백그라운드 초기화가 LV의 성능에 영향을 줄 수 있습니다.
DM(Device mapper) 무결성은 RAID 수준 1, 4, 5, 6, 10과 함께 사용되어 소프트 손상으로 인한 데이터 손실을 완화하거나 방지합니다. RAID 계층을 사용하면 손상되지 않은 데이터 사본이 소프트 손상 오류를 수정할 수 있습니다.
절차
DM 무결성을 사용하여 RAID LV를 생성합니다. 다음 예제에서는 사용 가능한 크기가 256M 및 RAID 수준 1 인 test-lv 볼륨 그룹에 test-lv라는 이름의 새 RAID LV를 생성합니다.
# lvcreate --type raid1 --raidintegrity y -L 256M -n test-lv my_vg Creating integrity metadata LV test-lv_rimage_0_imeta with size 8.00 MiB. Logical volume "test-lv_rimage_0_imeta" created. Creating integrity metadata LV test-lv_rimage_1_imeta with size 8.00 MiB. Logical volume "test-lv_rimage_1_imeta" created. Logical volume "test-lv" created.
참고기존 RAID LV에 DM 무결성을 추가하려면 다음 명령을 사용합니다.
# lvconvert --raidintegrity y my_vg/test-lv
RAID LV에 무결성을 추가하면 해당 RAID LV에서 수행할 수 있는 작업 수가 제한됩니다.
선택 사항: 특정 작업을 수행하기 전에 무결성을 제거합니다.
# lvconvert --raidintegrity n my_vg/test-lv Logical volume my_vg/test-lv has removed integrity.
검증
추가된 DM 무결성에 대한 정보를 봅니다.
my_vg 볼륨 그룹에 생성된 test-lv RAID LV에 대한 정보를 확인합니다.
# lvs -a my_vg LV VG Attr LSize Origin Cpy%Sync test-lv my_vg rwi-a-r--- 256.00m 2.10 [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 93.75 [test-lv_rimage_0_imeta] my_vg ewi-ao---- 8.00m [test-lv_rimage_0_iorig] my_vg -wi-ao---- 256.00m [test-lv_rimage_1] my_vg gwi-aor--- 256.00m [test-lv_rimage_1_iorig] 85.94 [...]
다음은 이 출력과 다른 옵션을 설명합니다.
- G 특성
-
Attr 열의 속성 목록에는 RAID 이미지가 무결성을 사용하고 있음을 나타냅니다. 무결성은 체크섬을
_imeta
RAID LV에 저장합니다. CPY%Sync
열- 최상위 RAID LV와 각 RAID 이미지에 대한 동기화 진행 상황을 나타냅니다.
- RAID 이미지
-
LV 열에
raid_image_N
으로 표시됩니다. LV
열- 동기화 진행 상황으로 최상위 RAID LV와 각 RAID 이미지에 대해 100%가 표시됩니다.
- G 특성
각 RAID LV 유형을 표시합니다.
# lvs -a my-vg -o+segtype LV VG Attr LSize Origin Cpy%Sync Type test-lv my_vg rwi-a-r--- 256.00m 87.96 raid1 [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 integrity [test-lv_rimage_0_imeta] my_vg ewi-ao---- 8.00m linear [test-lv_rimage_0_iorig] my_vg -wi-ao---- 256.00m linear [test-lv_rimage_1] my_vg gwi-aor--- 256.00m [test-lv_rimage_1_iorig] 100.00 integrity [...]
각 RAID 이미지에서 감지된 불일치 수를 계산하는 증분 카운터가 있습니다. my_vg/test-lv 에서
rimage_0
에서 무결성에 의해 감지된 데이터 불일치를 확인합니다.# lvs -o+integritymismatches my_vg/test-lv_rimage_0 LV VG Attr LSize Origin Cpy%Sync IntegMismatches [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 0
이 예에서 무결성은 데이터 불일치를 감지하지 못하므로
IntegMismatches
카운터는 0 (0)을 표시합니다.다음 예와 같이
/var/log/ECDHE
로그 파일에서 데이터 무결성 정보를 확인합니다.예 9.1. 커널 메시지 로그에서 dm-integrity 불일치의 예
device-mapper: 무결성: dm-12: 체크섬 0x24e7 섹터에서 실패했습니다.
예 9.2. 커널 메시지 로그의 dm-integrity 데이터 수정 예
MD/raid1:mdX: 읽기 오류가 수정되었습니다 (dm-16)의 9448에서 수정
추가 리소스
-
시스템의
lvcreate(8)
및lvmraid(7)
도움말 페이지
9.10. RAID 논리 볼륨을 다른 RAID 수준으로 변환
LVM은 RAID 논리 볼륨을 하나의 RAID 수준에서 다른 RAID 수준으로 변환하는 것을 의미합니다(예: RAID 5에서 RAID 6로 변환). RAID 수준을 변경하여 장치 오류에 대한 복원력을 늘리거나 줄일 수 있습니다.
절차
RAID 논리 볼륨을 생성합니다.
# lvcreate --type raid5 -i 3 -L 500M -n my_lv my_vg Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.
RAID 논리 볼륨을 확인합니다.
# lvs -a -o +devices,segtype LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0),my_lv_rimage_3(0) raid5 [my_lv_rimage_0] my_vg iwi-aor--- 168.00m /dev/sda(1) linear
RAID 논리 볼륨을 다른 RAID 수준으로 변환합니다.
# lvconvert --type raid6 my_vg/my_lv Using default stripesize 64.00 KiB. Replaced LV type raid6 (same as raid6_zr) with possible type raid6_ls_6. Repeat this command to convert to raid6 after an interim conversion has finished. Are you sure you want to convert raid5 LV my_vg/my_lv to raid6_ls_6 type? [y/n]: y Logical volume my_vg/my_lv successfully converted.
선택 사항: 이 명령이 변환을 반복하도록 요청하는 메시지를 표시하는 경우 다음을 실행합니다.
# lvconvert --type raid6 my_vg/my_lv
검증
변환된 RAID 수준으로 RAID 논리 볼륨을 확인합니다.
# lvs -a -o +devices,segtype LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0),my_lv_rimage_3(0),my_lv_rimage_4(0) raid6 [my_lv_rimage_0] my_vg iwi-aor--- 172.00m /dev/sda(1) linear
추가 리소스
-
시스템의
lvconvert(8)
및lvmraid(8)
도움말 페이지
9.11. 선형 장치를 RAID 논리 볼륨으로 변환
기존 선형 논리 볼륨을 RAID 논리 볼륨으로 변환할 수 있습니다. 이 작업을 수행하려면 lvconvert
명령의 --type
인수를 사용합니다.
RAID 논리 볼륨은 메타데이터 및 데이터 하위 볼륨으로 구성됩니다. 선형 장치를 RAID1 어레이로 변환할 때 새 메타데이터 하위 볼륨을 생성하여 선형 볼륨이 있는 동일한 물리 볼륨 중 하나에 원본 논리 볼륨을 연결합니다. 추가 이미지는 metadata/data 하위 볼륨 쌍에 추가됩니다. 원래 논리 볼륨과 쌍을 이루는 메타데이터 이미지가 동일한 물리 볼륨에 배치할 수 없는 경우 lvconvert
가 실패합니다.
절차
변환해야 하는 논리 볼륨 장치를 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sde1(0)
선형 논리 볼륨을 RAID 장치로 변환합니다. 다음 명령은 볼륨 그룹 __my_vg에서 선형 논리 볼륨 my_lv 를 2 방향 RAID1 배열로 변환합니다.
# lvconvert --type raid1 -m 1 my_vg/my_lv Are you sure you want to convert linear LV my_vg/my_lv to raid1 with 2 images enhancing resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted.
검증
논리 볼륨이 RAID 장치로 변환되는지 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.12. LVM RAID1 논리 볼륨을 LVM 선형 논리 볼륨으로 변환
기존 RAID1 LVM 논리 볼륨을 LVM 선형 논리 볼륨으로 변환할 수 있습니다. 이 작업을 수행하려면 lvconvert
명령을 사용하고 -m0
인수를 지정합니다. 이렇게 하면 모든 RAID 데이터 하위 볼륨과 RAID 배열을 구성하는 모든 RAID 메타데이터 하위 볼륨이 제거되어 최상위 수준의 RAID1 이미지를 선형 논리 볼륨으로 유지합니다.
절차
기존 LVM RAID1 논리 볼륨을 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)
기존 RAID1 LVM 논리 볼륨을 LVM 선형 논리 볼륨으로 변환합니다. 다음 명령은 LVM RAID1 논리 볼륨 my_vg/my_lv 를 LVM 선형 장치로 변환합니다.
# lvconvert -m0 my_vg/my_lv Are you sure you want to convert raid1 LV my_vg/my_lv to type linear losing all resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted.
LVM RAID1 논리 볼륨을 LVM 선형 볼륨으로 변환하는 경우 제거할 물리 볼륨도 지정할 수 있습니다. 다음 예제에서
lvconvert
명령은 /dev/sde1 을 제거하고 선형 장치를 구성하는 물리 볼륨으로 /dev/sdf1 을 유지하도록 지정합니다.# lvconvert -m0 my_vg/my_lv /dev/sde1
검증
RAID1 논리 볼륨이 LVM 선형 장치로 변환되었는지 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sdf1(1)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.13. 미러링된 LVM 장치를 RAID1 논리 볼륨으로 변환
세그먼트 유형 미러를 사용하여 기존 미러링된 LVM 장치를 RAID1 LVM 장치로 변환할 수 있습니다. 이 작업을 수행하려면 --type
raid1 인수와 함께 lvconvert
명령을 사용합니다. 이렇게 하면 mimage
라는 미러 하위 볼륨이 rimage
라는 RAID 하위 볼륨으로 변경됩니다.
또한 미러 로그를 제거하고 해당 데이터 하위 볼륨과 동일한 물리 볼륨의 data 하위 볼륨에 대해 rmeta
라는 메타데이터 하위 볼륨을 생성합니다.
절차
미러링된 논리 볼륨 my_vg/my_lv:의 레이아웃을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 15.20 my_lv_mimage_0(0),my_lv_mimage_1(0) [my_lv_mimage_0] /dev/sde1(0) [my_lv_mimage_1] /dev/sdf1(0) [my_lv_mlog] /dev/sdd1(0)
미러링된 논리 볼륨 my_vg/my_lv 를 RAID1 논리 볼륨으로 변환합니다.
# lvconvert --type raid1 my_vg/my_lv Are you sure you want to convert mirror LV my_vg/my_lv to raid1 type? [y/n]: y Logical volume my_vg/my_lv successfully converted.
검증
미러링된 논리 볼륨이 RAID1 논리 볼륨으로 변환되는지 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(0) [my_lv_rmeta_0] /dev/sde1(125) [my_lv_rmeta_1] /dev/sdf1(125)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.14. 기존 RAID1 장치의 이미지 수 변경
LVM 미러링 구현에서 이미지 수를 변경할 수 있는 방식과 유사하게 기존 RAID1 어레이의 이미지 수를 변경할 수 있습니다.
lvconvert
명령을 사용하여 RAID1 논리 볼륨에 이미지를 추가하는 경우 다음 작업을 수행할 수 있습니다.
- 결과 장치의 총 이미지 수를 지정합니다.
- 장치에 추가할 이미지 수입니다.
- 선택적으로 새 메타데이터/데이터 이미지 쌍이 상주하는 물리 볼륨을 지정할 수 있습니다.
절차
2방향 RAID1 어레이인 LVM 장치 my_vg/my_lv 를 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
rmeta
라는 메타데이터 하위 볼륨은 항상 데이터 subvolumesrimage
와 동일한 물리적 장치에 존재합니다. metadata/data 하위 볼륨 쌍은--alloc
을 지정하지 않는 한 RAID 배열의 다른 metadata/data 하위 볼륨 쌍과 동일한 물리 볼륨에 생성되지 않습니다.2 방향 RAID1 논리 볼륨 my_vg/my_lv 를 3방향 RAID1 논리 볼륨으로 변환합니다.
# lvconvert -m 2 my_vg/my_lv Are you sure you want to convert raid1 LV my_vg/my_lv to 3 images enhancing resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted.
다음은 기존 RAID1 장치에서 이미지 수를 변경하는 몇 가지 예입니다.
RAID에 이미지를 추가하는 동안 사용할 물리 볼륨을 지정할 수도 있습니다. 다음 명령은 배열에 사용할 물리 볼륨 /dev/sdd1 을 지정하여 2-way RAID1 논리 볼륨 my_vg/my_lv 를 3-way RAID1 논리 볼륨으로 변환합니다.
# lvconvert -m 2 my_vg/my_lv /dev/sdd1
3방향 RAID1 논리 볼륨을 2방향 RAID1 논리 볼륨으로 변환합니다.
# lvconvert -m1 my_vg/my_lv Are you sure you want to convert raid1 LV my_vg/my_lv to 2 images reducing resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted.
제거할 이미지가 포함된 물리 볼륨 /dev/sde1 을 지정하여 3방향 RAID1 논리 볼륨을 2방향 RAID1 논리 볼륨으로 변환합니다.
# lvconvert -m1 my_vg/my_lv /dev/sde1
또한 이미지 및 관련 메타데이터의 하위 볼륨을 제거하면 숫자가 높은 이미지가 슬롯을 채우기 위해 아래로 전환됩니다.
lv_rimage_0
,lv_rimage_1
, lv_rimage_1로 구성된 3-way RAID1 어레이에서
을 제거하면 lv_rimage_lv_rimage
_10 및
로 구성된 RAID1 배열이 생성됩니다. 하위 볼륨lv_rimage
_1lv_rimage_2
의 이름이 변경되고 빈 슬롯을 인수하여lv_rimage_1
이 됩니다.
검증
기존 RAID1 장치에서 이미지 수를 변경한 후 RAID1 장치를 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdd1(1) [my_lv_rimage_1] /dev/sde1(1) [my_lv_rimage_2] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sdd1(0) [my_lv_rmeta_1] /dev/sde1(0) [my_lv_rmeta_2] /dev/sdf1(0)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.15. RAID 이미지를 별도의 논리 볼륨으로 분할
RAID 논리 볼륨 이미지를 분리하여 새 논리 볼륨을 구성할 수 있습니다. 기존 RAID1 논리 볼륨에서 RAID 이미지를 제거하거나 장치 중간에서 RAID 데이터 하위 볼륨 및 연결된 메타데이터 하위 볼륨을 제거하는 경우 번호가 많은 이미지가 슬롯을 채우기 위해 아래로 이동합니다. 따라서 RAID 배열을 구성하는 논리 볼륨의 인덱스 번호는 브랜치되지 않은 정수 시퀀스가 됩니다.
RAID1 배열이 아직 동기화되지 않은 경우 RAID 이미지를 분할할 수 없습니다.
절차
2방향 RAID1 어레이인 LVM 장치 my_vg/my_lv 를 표시합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 12.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)
RAID 이미지를 별도의 논리 볼륨으로 분할합니다.
다음 예제에서는 2-way RAID1 논리 볼륨인 my_lv 를 두 개의 선형 논리 볼륨 my_lv 및 new 로 분할합니다.
# lvconvert --splitmirror 1 -n new my_vg/my_lv Are you sure you want to split raid1 LV my_vg/my_lv losing all resilience? [y/n]: y
다음 예제에서는 3방향 RAID1 논리 볼륨인 my_lv 를 2방향 RAID1 논리 볼륨, my_lv 및 선형 논리 볼륨 new 로 분할합니다.
# lvconvert --splitmirror 1 -n new my_vg/my_lv
검증
RAID 논리 볼륨의 이미지를 분리한 후 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sde1(1) new /dev/sdf1(1)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.16. RAID 이미지 분할 및 병합
lvconvert
명령의 --splitmirrors
인수와 함께 --trackchanges
인수를 사용하여 변경 사항을 추적하면서 읽기 전용용으로 RAID1 배열의 이미지를 일시적으로 나눌 수 있습니다. 이 기능을 사용하면 이미지가 분할된 이후 변경된 배열의 해당 부분만 다시 동기화하면서 나중에 이미지를 배열에 병합할 수 있습니다.
RAID 이미지를 --trackchanges
인수로 분할하면 분할할 이미지를 지정할 수 있지만 분할되는 볼륨의 이름은 변경할 수 없습니다. 또한 결과 볼륨에는 다음과 같은 제약 조건이 있습니다.
- 생성하는 새 볼륨은 읽기 전용입니다.
- 새 볼륨의 크기를 조정할 수 없습니다.
- 나머지 배열은 변경할 수 없습니다.
- 남아 있는 배열의 크기를 조정할 수 없습니다.
- 새 볼륨과 나머지 배열을 독립적으로 활성화할 수 있습니다.
분할된 이미지를 병합할 수 있습니다. 이미지를 병합하면 이미지가 분할된 이후 변경된 배열의 부분만 다시 동기화됩니다.
절차
RAID 논리 볼륨을 생성합니다.
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg Logical volume "my_lv" created
선택 사항: 생성된 RAID 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
생성된 RAID 논리 볼륨에서 이미지를 분할하고 나머지 배열에 대한 변경 사항을 추적합니다.
# lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv my_lv_rimage_2 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_2' to merge back into my_lv
선택 사항: 이미지를 분할한 후 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0)
볼륨을 배열에 다시 병합합니다.
# lvconvert --merge my_vg/my_lv_rimage_1 my_vg/my_lv_rimage_1 successfully merged back into my_vg/my_lv
검증
병합된 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.17. 할당
할 RAID 오류 정책 설정
raid_fault_policy
필드를 /etc/lvm/lvm.conf
파일의 allocate
매개변수로 설정할 수 있습니다. 이 기본 설정을 사용하면 시스템에서 실패한 장치를 볼륨 그룹의 예비 장치로 교체하려고 합니다. 예비 장치가 없으면 시스템 로그에 이 정보가 포함됩니다.
절차
RAID 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
/dev/sdb 장치가 실패하면 RAID 논리 볼륨을 확인합니다.
# lvs --all --options name,copy_percent,devices my_vg /dev/sdb: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] [unknown](1) [my_lv_rimage_1] /dev/sdc1(1) [...]
/dev/sdb 장치가 실패하는 경우 오류 메시지에 대한 시스템 로그를 볼 수도 있습니다.
lvm.conf
파일에할당
할raid_fault_policy
필드를 설정합니다.# vi /etc/lvm/lvm.conf raid_fault_policy = "allocate"
참고raid_fault_policy
를 할당
하도록 설정했지만 예비 장치가 없는 경우 할당이 실패하고 논리 볼륨을 그대로 둡니다. 할당에 실패하면lvconvert --repair
명령을 사용하여 실패한 장치를 수정하고 교체할 수 있습니다. 자세한 내용은 논리 볼륨에서 실패한 RAID 장치 교체를 참조하십시오.
검증
실패한 장치가 볼륨 그룹의 새 장치로 교체되었는지 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg Couldn't find device with uuid 3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy. LV Copy% Devices lv 100.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0) [lv_rimage_0] /dev/sdh1(1) [lv_rimage_1] /dev/sdc1(1) [lv_rimage_2] /dev/sdd1(1) [lv_rmeta_0] /dev/sdh1(0) [lv_rmeta_1] /dev/sdc1(0) [lv_rmeta_2] /dev/sdd1(0)
참고이제 실패한 장치가 교체되었지만 장치가 볼륨 그룹에서 아직 제거되지 않았기 때문에 LVM에서 실패한 장치를 찾을 수 없다는 표시가 계속 표시됩니다.
my_vg명령을 실행하여 볼륨 그룹에서 실패한 장치를 제거할
수 있습니다.
추가 리소스
-
시스템의 LVM.conf(5)
도움말 페이지
9.18. 경고로 RAID 오류 정책 설정
raid_fault_policy
필드를 lvm.conf
파일의 warn
매개변수로 설정할 수 있습니다. 이 기본 설정을 사용하면 시스템에서 실패한 장치를 나타내는 경고를 시스템 로그에 추가합니다. 경고에 따라 추가 단계를 확인할 수 있습니다.
기본적으로 raid_fault_policy
필드의 값은 lvm.conf
에서 warn
입니다.
절차
RAID 논리 볼륨을 확인합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
lvm.conf 파일에서 warn로 raid_fault_policy 필드를 설정합니다.
# vi /etc/lvm/lvm.conf # This configuration option has an automatic default value. raid_fault_policy = "warn"
/dev/sdb 장치가 실패하는 경우 오류 메시지를 표시하도록 시스템 로그를 확인합니다.
# grep lvm /var/log/messages Apr 14 18:48:59 virt-506 kernel: sd 25:0:0:0: rejecting I/O to offline device Apr 14 18:48:59 virt-506 kernel: I/O error, dev sdb, sector 8200 op 0x1:(WRITE) flags 0x20800 phys_seg 0 prio class 2 [...] Apr 14 18:48:59 virt-506 dmeventd[91060]: WARNING: VG my_vg is missing PV 9R2TVV-bwfn-Bdyj-Gucu-1p4F-qJ2Q-82kCAF (last written to /dev/sdb). Apr 14 18:48:59 virt-506 dmeventd[91060]: WARNING: Couldn't find device with uuid 9R2TVV-bwfn-Bdyj-Gucu-1p4F-qJ2Q-82kCAF. Apr 14 18:48:59 virt-506 dmeventd[91060]: Use 'lvconvert --repair my_vg/ly_lv' to replace failed device.
/dev/sdb 장치가 실패하면 시스템 로그에 오류 메시지가 표시됩니다. 그러나 이 경우 LVM은 이미지 중 하나를 교체하여 RAID 장치를 자동으로 복구하지 않습니다. 대신 장치가 실패한 경우 장치를
lvconvert
명령의--repair
인수로 교체할 수 있습니다. 자세한 내용은 논리 볼륨에서 실패한 RAID 장치 교체를 참조하십시오.
추가 리소스
-
시스템의 LVM.conf(5)
도움말 페이지
9.19. 작동 중인 RAID 장치 교체
lvconvert
명령의 --replace
인수를 사용하여 논리 볼륨에서 작동 중인 RAID 장치를 교체할 수 있습니다.
RAID 장치 오류가 발생하는 경우 다음 명령이 작동하지 않습니다.
사전 요구 사항
- RAID 장치가 실패하지 않았습니다.
절차
RAID1 배열을 생성합니다.
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg Logical volume "my_lv" created
생성된 RAID1 배열을 검사합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdb2(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdb2(0) [my_lv_rmeta_2] /dev/sdc1(0)
요구 사항에 따라 RAID 장치를 다음 방법으로 교체합니다.
교체할 물리 볼륨을 지정하여 RAID1 장치를 교체합니다.
# lvconvert --replace /dev/sdb2 my_vg/my_lv
교체에 사용할 물리 볼륨을 지정하여 RAID1 장치를 교체합니다.
# lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
여러 교체 인수를 지정하여 한 번에 여러 RAID 장치를 교체합니다.
# lvconvert --replace /dev/sdb1 --replace /dev/sdc1 my_vg/my_lv
검증
교체할 물리 볼륨을 지정한 후 RAID1 배열을 검사합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 37.50 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc2(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc2(0) [my_lv_rmeta_2] /dev/sdc1(0)
교체에 사용할 물리 볼륨을 지정한 후 RAID1 배열을 검사합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 28.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdd1(0)
한 번에 여러 RAID 장치를 교체한 후 RAID1 배열을 검사합니다.
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 60.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rimage_2] /dev/sde1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdd1(0) [my_lv_rmeta_2] /dev/sde1(0)
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
9.20. 논리 볼륨에서 실패한 RAID 장치 교체
RAID는 기존 LVM 미러링과 동일하지 않습니다. LVM 미러링의 경우 실패한 장치를 제거합니다. 그렇지 않으면 RAID 배열이 실패한 장치에서 계속 실행되는 동안 미러링된 논리 볼륨이 중단됩니다. RAID1 이외의 RAID 수준의 경우 장치를 제거하면 RAID6에서 RAID5로 또는 RAID4 또는 RAID0으로의 낮은 RAID 수준으로의 변환을 의미합니다.
실패한 장치를 제거하고 교체를 LVM으로 할당하는 대신 lvconvert
명령의 --repair
인수를 사용하여 RAID 논리 볼륨에서 물리 볼륨으로 사용되는 실패한 장치를 교체할 수 있습니다.
사전 요구 사항
볼륨 그룹에는 오류가 발생한 장치를 교체하기에 충분한 여유 용량을 제공하는 물리 볼륨이 포함되어 있습니다.
볼륨 그룹에서 사용 가능한 확장 영역이 충분한 물리 볼륨이 없는 경우 Cryostatextend 유틸리티를 사용하여 충분히 큰
새
물리 볼륨을 추가합니다.
절차
RAID 논리 볼륨을 확인합니다.
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
/dev/sdc 장치가 실패한 후 RAID 논리 볼륨을 확인합니다.
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
실패한 장치를 교체합니다.
# lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
선택 사항: 실패한 장치를 대체하는 물리 볼륨을 수동으로 지정합니다.
# lvconvert --repair my_vg/my_lv replacement_pv
교체를 사용하여 논리 볼륨을 검사합니다.
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
볼륨 그룹에서 오류가 발생한 장치를 제거할 때까지 LVM 유틸리티는 여전히 LVM에서 실패한 장치를 찾을 수 없음을 나타냅니다.
볼륨 그룹에서 실패한 장치를 제거합니다.
# vgreduce --removemissing my_vg
검증
실패한 장치를 제거한 후 사용 가능한 물리 볼륨을 확인합니다.
# pvscan PV /dev/sde1 VG rhel_virt-506 lvm2 [<7.00 GiB / 0 free] PV /dev/sdb1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free]
실패한 장치를 교체한 후 논리 볼륨을 검사합니다.
# lvs --all --options name,copy_percent,devices my_vg my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
추가 리소스
-
시스템의
lvconvert(8)
및 Cryostatreduce(8)
도움말 페이지
9.21. RAID 논리 볼륨에서 데이터 일관성 확인
LVM은 RAID 논리 볼륨에 대한 스크럽을 지원합니다. RAID 스크럽은 배열의 모든 데이터 및 패리티 블록을 읽고 일관성이 있는지 확인하는 프로세스입니다. lvchange --syncaction repair
명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
절차
선택 사항: 다음 옵션 중 하나를 설정하여 RAID 논리 볼륨이 초기화되는 속도를 제어합니다.
-
--maxrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 확장하지 않도록 합니다. --minrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 달성하도록 합니다.# lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume _my_vg/my_lv_changed.
4K 를 복구 속도 값으로 바꿉니다. 이 값은 배열의 각 장치에 대한 초당 양입니다. 접미사를 지정하지 않으면 옵션은 장치당 초당 kiB를 가정합니다.
# lvchange --syncaction repair my_vg/my_lv
RAID 스크러블링 작업을 수행할 때
동기화
작업에 필요한 백그라운드 I/O는 볼륨 그룹 메타데이터 업데이트 등 LVM 장치에 대한 다른 I/O의 충돌을 줄일 수 있습니다. 이로 인해 다른 LVM 작업이 느려질 수 있습니다.참고RAID 장치를 생성하는 동안 이러한 최대 및 최소 I/O 속도를 사용할 수도 있습니다. 예를 들어
lvcreate --type raid10 -i 2 -m 1 -l 1 -L 10G --maxrecoveryrate 128 -n my_vg
는 128 kiB/sec/device의 최대 복구 속도를 가진 볼륨 그룹 my_vg에 있는 볼륨 그룹 my_vg에서 최대 복구 속도를 가진 크기가 10G인 my_vg를 생성합니다.
-
배열의 불일치 수를 복구하지 않고 표시합니다.
# lvchange --syncaction check my_vg/my_lv
이 명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
-
선택 사항: 커널 메시지의
var/log/syslog
파일을 확인합니다. 배열의 불일치를 수정합니다.
# lvchange --syncaction repair my_vg/my_lv
이 명령은 RAID 논리 볼륨에서 실패한 장치를 복구하거나 교체합니다. 이 명령을 실행한 후 커널 메시지의
var/log/syslog
파일을 볼 수 있습니다.
검증
스크럽 작업에 대한 정보를 표시합니다.
# lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches my_lv my_vg rwi-a-r--- 500.00m 100.00 idle 0
추가 리소스
-
시스템의
lvchange(8)
및lvmraid(7)
도움말 페이지 - 최소 및 최대 I/O 속도 옵션
9.22. RAID1 논리 볼륨에서 I/O 작업
lvchange
명령의 --writemost 및
매개변수를 사용하여 RAID1 논리 볼륨에서 장치의 I/O 작업을 제어할 수 있습니다. 다음은 이러한 매개변수를 사용하는 형식입니다.
--write
behind
--[RAID]writemostly physicalVolume[:{t|y|n}]
RAID1 논리 볼륨의 장치를
대부분 쓰기
로 표시하고 필요한 경우가 아니면 이러한 드라이브에 대한 모든 읽기 작업을 방지합니다. 이 매개변수를 설정하면 I/O 작업 수가 드라이브에 최소로 유지됩니다.lvchange --writemostly /dev/sdb my_vg/my_lv
명령을 사용하여 이 매개변수를 설정합니다.다음과 같은 방법으로
writemostly
속성을 설정할 수 있습니다.:y
-
기본적으로
writemostly
속성 값은 논리 볼륨에서 지정된 물리 볼륨에 대해 yes입니다. :n
-
writemostly
플래그를 제거하려면:n
을 물리 볼륨에 추가합니다. :t
writemostly 속성의 값을 토글하려면
--
인수를 지정합니다.writemostly
단일 명령에서 이 인수를 두 번 이상 사용할 수 있습니다(예:
lvchange --writemostly /dev/sdd1:n --writemostly /dev/sdb1:t --writemostly /dev/sdc1:y my_vg/my_lv
). 이를 통해 논리 볼륨의 모든 물리 볼륨에 대한쓰기
속성을 한 번에 전환할 수 있습니다.
--[RAID]writebehind IOCount
writemostly
로 표시된 보류 중인 쓰기의 최대 수를 지정합니다. RAID1 논리 볼륨의 장치에 적용할 수 있는 쓰기 작업 수입니다. 이 매개 변수의 값을 초과한 후 RAID 배열에서 모든 쓰기 작업이 완료되도록 하기 전에 구성 장치에 대한 모든 쓰기 작업이 동기적으로 완료됩니다.lvchange --writebehind 100 my_vg/my_lv
명령을 사용하여 이 매개변수를 설정할 수 있습니다.writemostly
특성의 값을 0으로 설정하면 기본 설정이 지워집니다. 이 설정을 사용하면 시스템은 임의로 값을 선택합니다.
9.23. RAID 볼륨 교체
RAID 교체는 RAID 수준을 변경하지 않고 RAID 논리 볼륨의 속성을 변경하는 것을 의미합니다. 변경할 수 있는 일부 속성에는 RAID 레이아웃, 스트라이프 크기 및 스트라이프 수가 포함됩니다.
절차
RAID 논리 볼륨을 생성합니다.
# lvcreate --type raid5 -i 2 -L 500M -n my_lv my_vg Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.
RAID 논리 볼륨을 확인합니다.
# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] my_vg iwi-aor--- 252.00m /dev/sda(1) [my_lv_rimage_1] my_vg iwi-aor--- 252.00m /dev/sdb(1) [my_lv_rimage_2] my_vg iwi-aor--- 252.00m /dev/sdc(1) [my_lv_rmeta_0] my_vg ewi-aor--- 4.00m /dev/sda(0) [my_lv_rmeta_1] my_vg ewi-aor--- 4.00m /dev/sdb(0) [my_lv_rmeta_2] my_vg ewi-aor--- 4.00m /dev/sdc(0)
선택 사항: RAID 논리 볼륨의
스트라이프
이미지 및 스트라이프# lvs -o stripes my_vg/my_lv #Str 3
# lvs -o stripesize my_vg/my_lv Stripe 64.00k
요구 사항에 따라 다음 방법을 사용하여 RAID 논리 볼륨의 속성을 수정합니다.
RAID 논리 볼륨의
스트라이프
이미지를 수정합니다.# lvconvert --stripes 3 my_vg/my_lv Using default stripesize 64.00 KiB. WARNING: Adding stripes to active logical volume my_vg/my_lv will grow it from 126 to 189 extents! Run "lvresize -l126 my_vg/my_lv" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV my_vg/my_lv? [y/n]: y Logical volume my_vg/my_lv successfully converted.
RAID 논리
볼륨의 스트라이프
크기를 수정합니다.# lvconvert --stripesize 128k my_vg/my_lv Converting stripesize 64.00 KiB of raid5 LV my_vg/my_lv to 128.00 KiB. Are you sure you want to convert raid5 LV my_vg/my_lv? [y/n]: y Logical volume my_vg/my_lv successfully converted.
maxrecoveryrate
및minrecoveryrate
속성을 수정합니다.# lvchange --maxrecoveryrate 4M my_vg/my_lv Logical volume my_vg/my_lv changed.
# lvchange --minrecoveryrate 1M my_vg/my_lv Logical volume my_vg/my_lv changed.
syncaction
속성을 수정합니다.# lvchange --syncaction check my_vg/my_lv
writemostly
및writebehind
속성을 수정합니다.# lvchange --writemostly /dev/sdb my_vg/my_lv Logical volume my_vg/my_lv changed.
# lvchange --writebehind 100 my_vg/my_lv Logical volume my_vg/my_lv changed.
검증
RAID 논리 볼륨의
스트라이프
이미지 및 스트라이프# lvs -o stripes my_vg/my_lv #Str 4
# lvs -o stripesize my_vg/my_lv Stripe 128.00k
maxrecoveryrate
특성을 수정한 후 RAID 논리 볼륨을 확인합니다.# lvs -a -o +raid_max_recovery_rate LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert MaxSync my_lv my_vg rwi-a-r--- 10.00g 100.00 4096 [my_lv_rimage_0] my_vg iwi-aor--- 10.00g [...]
minrecoveryrate
특성을 수정한 후 RAID 논리 볼륨을 확인합니다.# lvs -a -o +raid_min_recovery_rate LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert MinSync my_lv my_vg rwi-a-r--- 10.00g 100.00 1024 [my_lv_rimage_0] my_vg iwi-aor--- 10.00g [...]
syncaction
속성을 수정한 후 RAID 논리 볼륨을 확인합니다.# lvs -a LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert my_lv my_vg rwi-a-r--- 10.00g 2.66 [my_lv_rimage_0] my_vg iwi-aor--- 10.00g [...]
추가 리소스
-
시스템의
lvconvert(8)
및lvmraid(8)
도움말 페이지
9.24. RAID 논리 볼륨에서 영역 크기 변경
RAID 논리 볼륨을 생성할 때 /etc/lvm/lvm.conf
파일의 raid_region_size
매개변수는 RAID 논리 볼륨의 리전 크기를 나타냅니다. RAID 논리 볼륨을 생성한 후 볼륨의 영역 크기를 변경할 수 있습니다. 이 매개 변수는 더티 상태 또는 정리 상태를 추적하는 세분성을 정의합니다. 비트맵의 더티 비트는 RAID 볼륨의 더티 종료 후 동기화할 작업 세트를 정의합니다(예: 시스템 오류).
raid_region_size
를 더 높은 값으로 설정하면 비트맵 크기와 혼잡이 줄어듭니다. 그러나 RAID에 대한 쓰기
는 영역을 동기화할 때까지 지연되기 때문에 영역을 재동기화하는 동안 쓰기 작업에 영향을 미칩니다.
절차
RAID 논리 볼륨을 생성합니다.
# lvcreate --type raid1 -m 1 -L 10G test Logical volume "lvol0" created.
RAID 논리 볼륨을 확인합니다.
# lvs -a -o +devices,region_size LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Region lvol0 test rwi-a-r--- 10.00g 100.00 lvol0_rimage_0(0),lvol0_rimage_1(0) 2.00m [lvol0_rimage_0] test iwi-aor--- 10.00g /dev/sde1(1) 0 [lvol0_rimage_1] test iwi-aor--- 10.00g /dev/sdf1(1) 0 [lvol0_rmeta_0] test ewi-aor--- 4.00m /dev/sde1(0) 0 [lvol0_rmeta_1] test ewi-aor--- 4.00m
Region 열은 raid_region_size 매개변수의 값을 나타냅니다.
선택 사항:
raid_region_size
매개변수의 값을 확인합니다.# cat /etc/lvm/lvm.conf | grep raid_region_size # Configuration option activation/raid_region_size. # raid_region_size = 2048
RAID 논리 볼륨의 영역 크기를 변경합니다.
# lvconvert -R 4096K my_vg/my_lv Do you really want to change the region_size 512.00 KiB of LV my_vg/my_lv to 4.00 MiB? [y/n]: y Changed region size on RAID LV my_vg/my_lv to 4.00 MiB.
RAID 논리 볼륨을 다시 동기화합니다.
# lvchange --resync my_vg/my_lv Do you really want to deactivate logical volume my_vg/my_lv to resync it? [y/n]: y
검증
RAID 논리 볼륨을 확인합니다.
# lvs -a -o +devices,region_size LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Region lvol0 test rwi-a-r--- 10.00g 6.25 lvol0_rimage_0(0),lvol0_rimage_1(0) 4.00m [lvol0_rimage_0] test iwi-aor--- 10.00g /dev/sde1(1) 0 [lvol0_rimage_1] test iwi-aor--- 10.00g /dev/sdf1(1) 0 [lvol0_rmeta_0] test ewi-aor--- 4.00m /dev/sde1(0) 0
Region 열은
raid_region_size
매개변수의 변경된 값을 나타냅니다.lvm.conf
파일에서raid_region_size
매개변수의 값을 확인합니다.# cat /etc/lvm/lvm.conf | grep raid_region_size # Configuration option activation/raid_region_size. # raid_region_size = 4096
추가 리소스
-
시스템의
lvconvert(8)
도움말 페이지
10장. LVM 장치 가시성 및 사용 제한
LVM에서 스캔할 수 있는 장치를 제어하여 표시되는 장치를 LVM(Logical Volume Manager)에서 표시하고 사용할 수 있는 장치를 제한할 수 있습니다.
LVM 명령을 사용하여 LVM 장치 스캔을 제어합니다. LVM 명령은 표시되고 사용 가능한 장치를 나열하는 system.devices
파일라는 파일과 상호 작용합니다. 이 기능은 Red Hat Enterprise Linux 9에서 기본적으로 활성화되어 있습니다.
장치 파일 기능을 비활성화하면 LVM 장치 필터가 자동으로 활성화됩니다.
LVM 장치 스캔 구성을 조정하려면 /etc/lvm/lvm.conf
파일에서 LVM 장치 필터 설정을 편집합니다. lvm.conf
파일의 필터는 일련의 간단한 정규식으로 구성됩니다. 시스템은 이러한 표현식을 /dev
디렉토리의 각 장치 이름에 적용하여 감지된 각 블록 장치를 수락할지 또는 거부할지 결정합니다.
10.1. LVM 장치 파일
LVM(Logical Volume Manager) system.devices
파일은 LVM에 대한 장치 가시성 및 가용성을 제어합니다. 장치 파일은 /etc/lvm/devices/
디렉터리에서 찾을 수 있습니다. LVM 명령을 사용하여 장치 파일을 관리합니다. system.devices
파일을 직접 편집하지 마십시오.
기본적으로 system.devices
파일 기능은 Red Hat Enterprise Linux 9에서 활성화됩니다. 활성 상태의 경우 LVM 장치 필터가 교체됩니다. LVM 장치 필터를 활성화하려면 system.devices
파일을 비활성화합니다. 자세한 내용은 System.devices 파일 비활성화를 참조하십시오.
10.1.1. 추가 리소스
-
시스템의
lvmdevices(8)
및lvm.conf(5)
도움말 페이지
10.1.2. system.devices 파일에 장치 추가
LVM(Logical Volume Manager)에서 장치를 사용하려면 system.devices
파일에 장치 ID 목록이 포함되어야 합니다. 그러지 않으면 LVM에서 이를 무시합니다. 운영 체제(OS) 설치 프로그램은 설치 중에 system.devices
파일에 장치를 추가합니다. 새로 설치된 시스템은 장치 파일에 루트 장치를 자동으로 포함합니다. OS 설치 중에 시스템에 연결된 모든 물리 볼륨(PV)도 장치 파일에 포함됩니다. 또한 장치 파일에 장치를 추가할 수도 있습니다. LVM에서 장치 파일에 저장된 장치 목록을 감지하고 사용합니다.
절차
다음 방법 중 하나를 사용하여 system.devices
파일에 장치를 추가합니다.
장치 파일에 해당 이름을 포함하여 장치를 추가합니다.
$ lvmdevices --adddev <device_name>
볼륨 그룹(VG)의 모든 장치를 장치 파일에 추가합니다.
$ vgimportdevices <vg_name>
표시되는 모든 VG의 장치를 장치 파일에 추가합니다.
$ vgimportdevices --all
새 장치를 system.devices
파일에 암시적으로 포함하려면 다음 명령 중 하나를 사용합니다.
pvcreate
명령을 사용하여 새 장치를 초기화합니다.$ pvcreate <device_name>
-
이 작업은 새 PV(물리 볼륨)를
system.devices
파일에 자동으로 추가합니다.
-
이 작업은 새 PV(물리 볼륨)를
새 장치를 초기화하고 새로운 장치 인수를 장치 파일에 자동으로 추가합니다.
$ vgcreate <vg_name> <device_names>
- & lt;vg_name >을 장치를 추가할 VG 이름으로 바꿉니다.
- & lt;device_names >를 추가할 장치의 공백으로 구분된 목록으로 바꿉니다.
새 장치를 초기화하려면
extend
명령을 사용합니다.$ vgextend <vg_name> <device_names>
- & lt;vg_name >을 장치를 추가할 VG 이름으로 바꿉니다.
- & lt;device_names >를 추가하려는 장치 이름으로 바꿉니다.
- 그러면 장치 파일에 새 장치 인수가 자동으로 추가됩니다.
검증
system.devices
파일에 새 장치를 명시적으로 추가해야 하는 경우에만 다음 확인을 사용하십시오.
system.devices
파일을 표시하여 장치 목록을 확인합니다.$ cat /etc/lvm/devices/system.devices
최신 장치 정보와 일치하도록
system.devices
파일을 업데이트합니다.$ lvmdevices --update
추가 리소스
-
lvmdevices(8)
,pvcreate(8)
, Cryostatcreate(8)
및 Cryostatextend(8)
매뉴얼 페이지
10.1.3. system.devices 파일에서 장치 제거
LVM(Logical Volume Manager)이 해당 장치를 감지하거나 사용하지 못하도록 장치를 제거합니다.
절차
해당 장치에 대한 정보에 따라 다음 방법 중 하나를 사용하여 장치를 제거합니다.
이름으로 장치를 제거합니다.
$ lvmdevices --deldev <device_name>
장치의 PVID(물리 볼륨 ID)로 장치를 제거합니다.
$ lvmdevices --delpvid <PV_UUID>
검증
system.devices
파일에서 장치를 명시적으로 제거해야 하는 경우에만 다음 확인을 사용하십시오.
system.devices
파일을 표시하여 삭제된 장치가 더 이상 존재하지 않는지 확인합니다.$ cat /etc/lvm/devices/system.devices
최신 장치 정보와 일치하도록
system.devices
파일을 업데이트합니다.$ lvmdevices --update
추가 리소스
-
시스템의
lvmdevices(8)
도움말 페이지
10.1.4. 사용자 지정 장치 파일 생성
LVM(Logical Volume Manager) 명령은 시스템의 기본 system.devices
파일을 사용합니다. LVM 명령에 새 파일 이름을 지정하여 사용자 지정 장치 파일을 만들고 사용할 수도 있습니다. 사용자 지정 장치 파일은 특정 애플리케이션만 특정 장치를 사용해야 하는 경우에 유용합니다.
절차
-
/etc/lvm/devices/
디렉터리에 사용자 지정 장치 파일을 만듭니다. LVM 명령에 새 장치 파일 이름을 추가합니다.
$ lvmdevices --devicesfile <devices_file_name>
선택 사항: 새 장치 파일을 표시하여 새 장치의 이름이 있는지 확인합니다.
$ cat /etc/lvm/devices/<devices_file_name>
추가 리소스
-
시스템의
lvmdevices(8)
도움말 페이지
10.1.5. 시스템의 모든 장치에 액세스
LVM(Logical Volume Manager)을 활성화하여 시스템의 모든 장치에 액세스하고 사용할 수 있으므로 system.devices
파일에 나열된 장치로 인해 발생한 제한을 재정의할 수 있습니다.
절차
빈 장치 파일을 지정합니다.
$ lvmdevices --devicesfile ""
추가 리소스
-
시스템의
lvmdevices(8)
도움말 페이지
10.1.6. system.devices 파일 비활성화
system.devices
파일 기능을 비활성화할 수 있습니다. 이 작업을 수행하면 LVM(Logical Volume Manager) 장치 필터가 자동으로 활성화됩니다.
절차
-
lvm.conf
파일을 엽니다. - devices 섹션에서 다음 값을 설정합니다.
use_devicesfile=0
system.devices
파일을 제거하면 이 작업은 이를 효과적으로 비활성화합니다. 이는 devices 섹션에서 use_devicesfile=1
을 설정하여 lvm.conf
구성 파일에서 system.devices
파일을 활성화하는 경우에도 적용됩니다. 장치 파일을 비활성화하면 lvm.conf
장치 필터가 자동으로 활성화됩니다.
추가 리소스
-
시스템의
lvmdevices(8)
및lvm.conf(5)
도움말 페이지
10.2. LVM 필터링을 위한 영구 식별자
/dev/sda
와 같은 기존 Linux 장치 이름은 시스템을 수정하고 재부팅하는 동안 변경될 수 있습니다. WWID(WWID), UUID(Universally Unique Identifier) 및 경로 이름과 같은 PNA(영구 이름 지정 속성)는 스토리지 장치의 고유한 특성을 기반으로 하며 하드웨어 구성 변경에 탄력적입니다. 이로 인해 시스템 재부팅 시 보다 안정적이고 예측 가능합니다.
LVM 필터링에 영구 장치 식별자를 구현하면 LVM 구성의 안정성과 안정성이 향상됩니다. 또한 장치 이름의 동적 특성과 관련된 시스템 부팅 실패의 위험을 줄입니다.
추가 리소스
- 영구 이름 지정 속성
- 로컬 디스크 이름이 영구적이지 않은 경우 lvm 필터를 구성하는 방법은 무엇입니까? (Red Hat Knowledgebase)
10.3. LVM 장치 필터
LVM(Logical Volume Manager) 장치 필터는 장치 이름 패턴 목록입니다. 이를 사용하여 시스템에서 장치를 평가할 수 있는 필수 기준 세트를 지정하고 LVM과 함께 사용하기 위해 이를 유효한 것으로 간주할 수 있습니다. LVM 장치 필터를 사용하면 LVM에서 사용하는 장치를 제어할 수 있습니다. 이는 실수로 데이터 손실 또는 저장 장치에 대한 무단 액세스를 방지하는 데 도움이 될 수 있습니다.
10.3.1. LVM 장치 필터 패턴 특성
LVM 장치 필터 패턴은 정규식의 형태로 되어 있습니다. 정규 표현식은 문자로 구분되며 수락을 위해 r
또는 거부 인
경우 r로 구분됩니다. 장치와 일치하는 목록의 첫 번째 정규 표현식은 LVM이 특정 장치를 수락하거나 거부(ignore)하는지 여부를 결정합니다. 그러면 LVM에서 장치의 경로와 일치하는 초기 정규식을 목록에서 찾습니다. LVM은 이 정규 표현식을 사용하여 장치를 결과를 통해 승인해야 하는지 r
결과를 통해 거부해야하는지 여부를 결정합니다.
단일 장치에 여러 경로 이름이 있는 경우 LVM은 목록 순서에 따라 이러한 경로 이름에 액세스합니다. r
패턴 전에 하나 이상의 경로 이름이 패턴과 일치하는 경우 LVM에서 장치를 승인합니다. 그러나 모든 경로 이름이 패턴을 발견하기 전에
r
패턴과 일치하면 장치가 거부됩니다.
패턴과 일치하지 않는 경로 이름은 장치의 승인 상태에 영향을 미치지 않습니다. 장치 패턴에 해당하는 경로 이름이 없는 경우 LVM에서는 장치를 계속 승인합니다.
시스템의 각 장치에 대해 udev
규칙은 여러 개의 심볼릭 링크를 생성합니다. 디렉터리에는 /dev/disk/by-id/
, /dev/disk/by-uuid/
, /dev/disk/by-path/
와 같은 심볼릭 링크가 포함되어 여러 경로 이름을 통해 시스템의 각 장치에 액세스할 수 있습니다.
필터에서 장치를 거부하려면 특정 장치와 연결된 모든 경로 이름이 해당 reject r
표현식과 일치해야 합니다. 그러나 거부할 수 있는 모든 경로 이름을 식별하는 것은 어려울 수 있습니다. 따라서 특정 경로를 구체적으로 수락하고 다른 모든 경로를 거부하는 필터를 생성하는 것이 좋습니다. 일련의 특정 표현식과 단일 r|.*|
표현식이 다른 모든 항목을 거부하는 것입니다.
필터에 특정 장치를 정의하는 동안 커널 이름 대신 해당 장치에 symlink 이름을 사용합니다. 장치의 커널 이름은 /dev/sda
와 같이 변경될 수 있지만 특정 심볼릭 링크 이름은 /dev/disk/by-id/wwn-*
과 같은 변경되지 않습니다.
기본 장치 필터는 시스템에 연결된 모든 장치를 허용합니다. 이상적인 사용자 구성 장치 필터는 하나 이상의 패턴을 허용하고 다른 모든 패턴을 거부합니다. 예를 들어 r|.*|
로 끝나는 패턴 목록입니다.
LVM 장치는 lvm.conf
파일의 devices/filter
및 devices/global_filter
구성 필드에서 LVM 장치 필터 구성을 찾을 수 있습니다. devices/filter
및 devices/global_filter
구성 필드는 동일합니다.
Red Hat Enterprise Linux 9에서 /etc/lvm/devices/system.devices
파일은 기본적으로 활성화되어 있습니다. system.devices
파일이 비활성화되면 시스템에서 LVM 장치 필터를 자동으로 활성화합니다.
추가 리소스
-
시스템의 LVM.conf(5)
도움말 페이지
10.3.2. LVM 장치 필터 구성의 예
다음 예제에서는 LVM에서 스캔하고 나중에 사용하는 장치를 제어하는 필터 구성을 표시합니다. lvm.conf
파일에서 장치 필터를 구성하려면 다음을 참조하십시오.
복사 또는 복제된 PV를 처리할 때 중복된 PV(물리 볼륨) 경고가 표시될 수 있습니다. 이 문제를 해결하기 위해 필터를 설정할 수 있습니다. 중복 PV 경고를 방지하는 Example LVM 장치 필터의 예제 필터 구성을 참조하십시오.
모든 장치를 검사하려면 다음을 입력합니다.
filter = [ "a|.*|" ]
드라이브에 미디어가 없는 경우 지연을 방지하기 위해
cdrom
장치를 제거하려면 다음을 입력하십시오.filter = [ "r|^/dev/cdrom$|" ]
모든 루프 장치를 추가하고 다른 모든 장치를 제거하려면 다음을 입력합니다.
filter = [ "a|loop|", "r|.*|" ]
모든 루프 및 SCSI 장치를 추가하고 다른 모든 블록 장치를 제거하려면 다음을 입력합니다.
filter = [ "a|loop|", "a|/dev/sd.*|", "r|.*|" ]
첫 번째 SCSI 드라이브에 파티션 8만 추가하고 다른 모든 블록 장치를 제거하려면 다음을 입력합니다.
filter = [ "a|^/dev/sda8$|", "r|.*|" ]
모든 다중 경로 장치와 함께 WWID로 식별되는 특정 장치의 모든 파티션을 추가하려면 다음을 입력합니다.
filter = [ "a|/dev/disk/by-id/<disk-id>.|", "a|/dev/mapper/mpath.|", "r|.*|" ]
명령은 다른 블록 장치도 제거합니다.
추가 리소스
-
시스템의 LVM.conf(5)
도움말 페이지
10.3.3. LVM 장치 필터 구성 적용
lvm.conf
구성 파일에 필터를 설정하여 LVM 스캔 장치를 제어할 수 있습니다.
사전 요구 사항
-
system.devices
파일 기능을 비활성화했습니다. - 사용하려는 장치 필터 패턴을 준비합니다.
절차
다음 명령을 사용하여 실제로
/etc/lvm/lvm.conf
파일을 수정하지 않고 장치 필터 패턴을 테스트합니다. 다음은 필터 구성 예제를 포함합니다.# lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
/etc/lvm/lvm.conf
파일의 구성 섹션장치에 장치
필터 패턴을 추가합니다.filter = [ "a|/dev/emcpower.*|", "r|*.|" ]
재부팅 시 필요한 장치만 스캔합니다.
# dracut --force --verbose
이 명령은 재부팅 시 LVM이 필요한 장치만 스캔하도록
initramfs
파일 시스템을 다시 빌드합니다.
11장. LVM 할당 제어
기본적으로 볼륨 그룹은 일반
할당 정책을 사용합니다. 이렇게 하면 동일한 물리 볼륨에 병렬 스트라이프를 배치하지 않는 등의 공통 밀도 규칙에 따라 물리 확장 영역을 할당합니다. Cryostat create 명령의
수 있습니다. 일반적으로 일반 이외의 할당 정책은 비정상적 또는 비표준 범위 할당을 지정해야 하는 특수한 경우에만 필요합니다. --alloc
인수를 사용하여 다른 할당 정책(,연속적인
,
어디에서나
)을 지정할
11.1. 지정된 장치의 확장 영역 할당
명령줄 끝에 있는 장치 인수를 lvcreate
및 lvconvert
명령과 함께 사용하여 특정 장치에서 할당을 제한할 수 있습니다. 더 많은 제어를 위해 각 장치의 실제 범위 범위를 지정할 수 있습니다. 명령은 지정된 물리 볼륨(PV)을 인수로 사용하여 새 논리 볼륨(LV)에 대한 Extent만 할당합니다. 각 PV에서 사용 가능한 확장 영역을 실행한 다음 나열된 다음 PV의 확장 영역을 사용합니다. 요청된 LV 크기에 나열된 모든 PV에 공간이 충분하지 않으면 명령이 실패합니다. 이 명령은 이름이 지정된 PV에서만 할당합니다. RAID LV는 별도의 raid 이미지 또는 별도의 스트라이프에 순차적 PV를 사용합니다. 전체 RAID 이미지에 PV가 충분히 크지 않으면 결과 장치 사용을 완전히 예측할 수 없습니다.
절차
볼륨 그룹(VG)을 생성합니다.
# vgcreate <vg_name> <PV> ...
다음과 같습니다.
-
<VG_NAME
>은 VG의 이름입니다. -
&
lt;PV&
gt;는 PV입니다.
-
PV를 할당하여 선형 또는 raid와 같은 다양한 볼륨 유형을 생성할 수 있습니다.
확장 영역을 할당하여 선형 볼륨을 만듭니다.
# lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
다음과 같습니다.
-
<lv_name
>은 LV의 이름입니다. -
<lv_size
>는 LV의 크기입니다. 기본 단위는 메가바이트입니다. -
<VG_NAME
>은 VG의 이름입니다. [ <PV …> ]
는 PV입니다.PV 중 하나, 모두 또는 명령줄에서 none을 지정할 수 있습니다.
하나의 PV를 지정하면 해당 LV의 확장 영역이 할당됩니다.
참고PV에 전체 LV에 사용 가능한 확장 영역이 충분하지 않으면
lvcreate
이 실패합니다.- 두 PV를 지정하면 해당 LV의 확장 영역이 해당 LV 중 하나에서 할당되거나 둘 다 조합됩니다.
PV를 지정하지 않으면 VG의 PV 중 하나 또는 VG에 있는 모든 PV의 조합에서 Extent가 할당됩니다.
참고이 경우 LVM에서 이름이 지정된 PV 또는 사용 가능한 PV를 모두 사용하지 못할 수 있습니다. 첫 번째 PV에 전체 LV에 사용 가능한 확장 영역이 충분한 경우 다른 PV가 사용되지 않을 수 있습니다. 그러나 첫 번째 PV의 할당 크기가 설정된 여유 Extent가 없는 경우 LV는 첫 번째 PV에서 부분적으로 할당되고 두 번째 PV에서 부분적으로 할당될 수 있습니다.
예 11.1. 하나의 PV에서 확장 영역 할당
이 예에서는
lv1
Extent가sda
에서 할당됩니다.# lvcreate -n lv1 -L1G vg /dev/sda
예 11.2. 두 PV의 확장 영역 할당
이 예에서
lv2
Extent는sda
또는sdb
또는 둘 다 조합에서 할당됩니다.# lvcreate -n lv2 L1G vg /dev/sda /dev/sdb
예 11.3. PV를 지정하지 않고 확장 영역 할당
이 예에서
lv3
Extent는 VG의 PV 중 하나 또는 VG에 있는 모든 PV의 조합에서 할당됩니다.# lvcreate -n lv3 -L1G vg
또는
-
확장 영역을 할당하여 raid 볼륨을 생성합니다.
# lvcreate --type <segment_type> -m <mirror_images> -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
다음과 같습니다.
-
<segment_type
>은 지정된 세그먼트 유형입니다(예:raid5
,mirror
,snapshot
). -
<mirror_images
>는 지정된 수의 이미지를 사용하여raid1
또는 미러링된 LV를 생성합니다. 예를 들어-m 1
을 사용하면 두 개의 이미지가 있는raid1
LV가 생성됩니다. -
<lv_name
>은 LV의 이름입니다. -
<lv_size
>는 LV의 크기입니다. 기본 단위는 메가바이트입니다. -
<VG_NAME
>은 VG의 이름입니다. <[PV …]>
는 PV입니다.첫 번째 RAID 이미지는 첫 번째 PV, 두 번째 PV의 두 번째 raid 이미지 등에서 할당됩니다.
예 11.4. 두 PV에서 raid 이미지 할당
이 예에서
lv4
첫 번째 raid 이미지는sda
에서 할당되고 두 번째 이미지는sdb
에서 할당됩니다.# lvcreate --type raid1 -m 1 -n lv4 -L1G vg /dev/sda /dev/sdb
예 11.5. 세 PV에서 raid 이미지 할당
이 예에서
lv5
첫 번째 raid 이미지는sda
에서 할당되고 두 번째 이미지는sdb
에서 할당되고, 세 번째 이미지는sdc
에서 할당됩니다.# lvcreate --type raid1 -m 2 -n lv5 -L1G vg /dev/sda /dev/sdb /dev/sdc
-
추가 리소스
-
시스템의
lvcreate(8)
,lvconvert(8)
및lvmraid(7)
도움말 페이지
11.2. LVM 할당 정책
LVM 작업에서 하나 이상의 논리 볼륨(LV)에 물리 확장 영역을 할당해야 하는 경우 할당은 다음과 같이 진행됩니다.
- 볼륨 그룹에서 할당되지 않은 물리 확장 영역의 전체 세트가 검토를 위해 생성됩니다. 명령줄 끝에 물리 확장 영역 범위를 제공하는 경우 지정된 PV(물리 볼륨)에서 해당 범위 내에서 할당되지 않은 물리 확장 영역만 고려합니다.
-
각 할당 정책은 가장 엄격한 정책(지속적인 )부터 시작하여
--alloc
옵션을 사용하여 지정된 할당 정책으로 끝나거나 특정 LV 또는 볼륨 그룹(VG)의 기본값으로 설정됩니다.각 정책에 대해 할당 정책에 따른 제한 사항에 따라 가능한 한 많은 공간을 채워야 하는 빈 LV 공간의 가장 낮은 숫자 논리 범위에서 작업하는 것이 좋습니다. 더 많은 공간이 필요한 경우 LVM은 다음 정책으로 이동합니다.
할당 정책 제한은 다음과 같습니다.
연속
정책을 사용하려면 LV의 첫 번째 논리 범위를 제외하고 논리 영역의 물리적 위치가 바로 앞의 논리 확장 영역의 물리적 위치에 있어야 합니다.LV를 제거하거나 미러링하면
연속
할당 제한이 공간이 필요한 각 스트라이프 또는 raid 이미지에 독립적으로 적용됩니다.-
클링
할당 정책을 사용하려면 논리 범위에 사용된 PV를 해당 LV에서 하나 이상의 논리 범위에서 이미 사용 중인 기존 LV에 추가해야 합니다. -
일반
할당 정책은 해당 병렬 LV 내의 동일한 오프셋에서 병렬 LV(즉, 다른 스트라이프 또는 raid 이미지)에 이미 할당된 논리 범위와 동일한 PV를 공유하는 물리적 범위를 선택하지 않습니다. -
할당 요청을 충족할 수 있는 사용 가능한 확장 영역이 충분하지만
일반
할당 정책에서 사용하지 않는 경우 동일한 PV에 두 개의 스트라이프를 배치하여 성능이 저하되더라도 아무나의 할당 정책이 사용됩니다.
Cryostatchange 명령을 사용하여 할당 정책을 변경할
수 있습니다.
향후 업데이트에서는 정의된 할당 정책에 따라 레이아웃 동작에 코드 변경을 가져올 수 있습니다. 예를 들어, 명령줄에서 할당에 사용 가능한 여유 물리 확장 영역이 동일한 두 개의 빈 물리 볼륨을 제공하는 경우 LVM은 현재 나열된 순서대로 각 물리 영역을 사용하는 것을 고려합니다. 향후 릴리스에서는 해당 속성을 유지 관리한다는 보장이 없습니다. 특정 LV에 대한 특정 레이아웃이 필요한 경우 일련의 lvcreate
및 lvconvert
단계를 통해 이를 빌드하여 각 단계에 적용된 할당 정책이 레이아웃에 대한 재량에 관계없이 LVM을 남기지 않도록 합니다.
11.3. 물리 볼륨에서 할당 방지
pvchange
명령을 사용하여 하나 이상의 물리 볼륨의 사용 가능한 공간에 물리 확장 영역을 할당하지 못할 수 있습니다. 디스크 오류가 있거나 물리 볼륨을 제거하는 경우 이 작업이 필요할 수 있습니다.
절차
다음 명령을 사용하여
device_name
에서 물리 확장 영역 할당을 허용하지 않습니다.# pvchange -x n /dev/sdk1
pvchange
명령의-xy
인수를 사용하여 이전에 허용하지 않은 위치에서 할당을 허용할 수도 있습니다.
추가 리소스
-
시스템의
pvchange(8)
도움말 페이지
12장. 태그를 사용하여 LVM 오브젝트 그룹화
LVM(Logical Volume Manager) 개체에 태그를 할당하여 그룹화할 수 있습니다. 이 기능을 사용하면 그룹에서 활성화와 같은 LVM 동작의 제어를 자동화할 수 있습니다. LVM 개체 인수 대신 태그를 사용할 수도 있습니다.
12.1. LVM 개체 태그
LVM(Logical Volume Manager) 태그는 동일한 유형의 LVM 개체를 그룹화합니다. 물리 볼륨, 볼륨 그룹, 논리 볼륨과 같은 오브젝트에 태그를 연결할 수 있습니다.
모호성을 방지하려면 각 태그 앞에 @
. 각 태그는 해당 태그를 보유하는 모든 오브젝트로 대체하여 확장되며 명령줄에서 해당 위치에서 예상되는 유형입니다.
LVM 태그는 최대 1024자로 구성된 문자열입니다. LVM 태그는 하이픈으로 시작할 수 없습니다.
유효한 태그는 제한된 범위의 문자로만 구성됩니다. 허용되는 문자는 A-Z a-z 0-9 _ + . - / = ! : # &
amp; 0-9입니다.
볼륨 그룹의 오브젝트만 태그할 수 있습니다. 물리 볼륨은 볼륨 그룹에서 제거된 경우 태그가 손실됩니다. 이는 태그가 볼륨 그룹 메타데이터의 일부로 저장되고 물리 볼륨이 제거될 때 삭제되기 때문입니다.
동일한 태그가 있는 모든 볼륨 그룹(VG), 논리 볼륨(LV) 또는 PV(물리 볼륨)에 일부 명령을 적용할 수 있습니다. 지정된 명령의 man 페이지에는 VG|Tag
,LV|Tag
, PV|Tag
라는 구문이 표시됩니다. VG, LV 또는 PV 이름의 태그 이름을 대체할 수 있는 경우.
12.2. LVM 오브젝트에 태그 추가
다양한 볼륨 관리 명령과 함께 --addtag
옵션을 사용하여 LVM 오브젝트에 태그를 추가하여 그룹화할 수 있습니다.
사전 요구 사항
-
lvm2
패키지가 설치되어 있습니다.
절차
기존 PV에 태그를 추가하려면 다음을 사용합니다.
# pvchange --addtag <@tag> <PV>
기존 VG에 태그를 추가하려면 다음을 사용합니다.
# vgchange --addtag <@tag> <VG>
생성 중에 VG에 태그를 추가하려면 다음을 사용합니다.
# vgcreate --addtag <@tag> <VG>
기존 LV에 태그를 추가하려면 다음을 사용합니다.
# lvchange --addtag <@tag> <LV>
생성 중에 LV에 태그를 추가하려면 다음을 사용합니다.
# lvcreate --addtag <@tag> ...
12.3. LVM 오브젝트에서 태그 제거
더 이상 LVM 오브젝트를 그룹화하지 않으려면 다양한 볼륨 관리 명령과 함께 --deltag
옵션을 사용하여 오브젝트에서 태그를 제거할 수 있습니다.
사전 요구 사항
-
lvm2
패키지가 설치되어 있습니다. - 물리 볼륨(PV), 볼륨 그룹(VG) 또는 논리 볼륨(LV)에 태그가 생성되었습니다.
절차
기존 PV에서 태그를 제거하려면 다음을 사용합니다.
# pvchange --deltag @tag PV
기존 VG에서 태그를 제거하려면 다음을 사용합니다.
# vgchange --deltag @tag VG
기존 LV에서 태그를 제거하려면 다음을 사용합니다.
# lvchange --deltag @tag LV
12.4. LVM 오브젝트에 태그 표시
다음 명령을 사용하여 LVM 오브젝트에 태그를 표시할 수 있습니다.
사전 요구 사항
-
lvm2
패키지가 설치되어 있습니다. - 물리 볼륨(PV), 볼륨 그룹(VG) 또는 논리 볼륨(LV)에 태그가 생성되었습니다.
절차
기존 PV의 모든 태그를 표시하려면 다음을 사용합니다.
# pvs -o tags <PV>
기존 VG의 모든 태그를 표시하려면 다음을 사용합니다.
# vgs -o tags <VG>
기존 LV의 모든 태그를 표시하려면 다음을 사용합니다.
# lvs -o tags <LV>
12.5. 태그를 사용하여 논리 볼륨 활성화 제어
다음 절차에서는 해당 호스트에서 특정 논리 볼륨만 활성화해야 하는 구성 파일에서 지정하는 방법을 설명합니다.
절차
예를 들어 다음 항목은 활성화 요청에 대한 필터 역할을 하며 해당 호스트의 메타데이터에 데이터베이스
태그를 사용하여 skopeo 1/lvol0
및 모든 논리 볼륨 또는 볼륨 그룹만 활성화합니다.
activation { volume_list = ["vg1/lvol0", "@database" ] }
메타데이터 태그가 해당 머신의 호스트 태그와 일치하는 경우에만 가 일치하도록 하는 특수 일치 @*
입니다.
다른 예로 클러스터의 모든 시스템에 구성 파일에 다음 항목이 있는 상황을 고려해 보십시오.
tags { hosttags = 1 }
호스트 db
2를 활성화하려면 다음을 수행하십시오.
2
에서만 skopeo1/lvol
-
클러스터의 모든 호스트에서
lvchange --addtag @db2ECDHE1/lvol2
를 실행합니다. -
lvchange -ayECDHE1/lvol2
를 실행합니다.
이 솔루션을 사용하려면 볼륨 그룹 메타데이터 내에 호스트 이름을 저장해야 합니다.
13장. LVM 문제 해결
LVM(Logical Volume Manager) 도구를 사용하여 LVM 볼륨 및 그룹의 다양한 문제를 해결할 수 있습니다.
13.1. LVM에서 진단 데이터 수집
LVM 명령이 예상대로 작동하지 않는 경우 다음과 같은 방법으로 진단을 수집할 수 있습니다.
절차
다음 방법을 사용하여 다양한 종류의 진단 데이터를 수집합니다.
-
LVM 명령에
-v
인수를 추가하여 명령 출력의 세부 정보 표시 수준을 높입니다.v를 추가하여 자세한 정보 표시를 늘릴 수 있습니다.
이러한v의 최대 4가지는
허용됩니다(예:-vvv).
-
/etc/lvm/lvm.conf
구성 파일의log
섹션에서level
옵션의 값을 늘립니다. 이로 인해 LVM에서 시스템 로그에 자세한 정보를 제공합니다. 문제가 논리 볼륨 활성화와 관련된 경우 활성화하는 동안 LVM을 활성화하여 메시지를 기록합니다.
-
/etc/lvm/lvm.conf
구성 파일의log
섹션에서activation = 1
옵션을 설정합니다. -
v
vv
v 옵션을 사용하여 LVM 명령을 실행합니다. - 명령 출력을 검사합니다.
활성화
옵션을0
으로 재설정합니다.옵션을
0
으로 재설정하지 않으면 메모리 부족 상황에서 시스템이 응답하지 않을 수 있습니다.
-
진단 목적으로 정보 덤프를 표시합니다.
# lvmdump
추가 시스템 정보를 표시합니다.
# lvs -v
# pvs --all
# dmsetup info --columns
-
/etc/lvm/backup/ 디렉토리에서 LVM 메타데이터의 마지막 백업을 검사하고
디렉토리에 보관된 버전을 검사합니다./etc/
lvm/archive/ 현재 구성 정보를 확인합니다.
# lvmconfig
-
/run/lvm/hints
캐시 파일에서 물리 볼륨이 있는 장치의 레코드를 확인합니다.
-
LVM 명령에
추가 리소스
-
시스템의
lvmdump(8)
도움말 페이지
13.2. 실패한 LVM 장치에 대한 정보 표시
실패한 LVM(Logical Volume Manager) 볼륨에 대한 정보를 해결하면 오류 원인을 파악하는 데 도움이 될 수 있습니다. 가장 일반적인 LVM 볼륨 실패의 다음 예를 확인할 수 있습니다.
예 13.1. 실패한 볼륨 그룹
이 예에서는 myvg 볼륨 그룹을 구성하는 장치 중 하나에 실패했습니다. 그런 다음 볼륨 그룹 유용성은 오류 유형에 따라 달라집니다. 예를 들어 RAID 볼륨도 관련된 경우에도 볼륨 그룹을 계속 사용할 수 있습니다. 실패한 장치에 대한 정보도 볼 수 있습니다.
# vgs --options +devices
/dev/vdb1: open failed: No such device or address
/dev/vdb1: open failed: No such device or address
WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
VG #PV #LV #SN Attr VSize VFree Devices
myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](0)
myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](5120),/dev/vdb1(0)
예 13.2. 실패한 논리 볼륨
이 예에서는 장치 중 하나가 실패했습니다. 이는 볼륨 그룹의 논리 볼륨이 실패하는 이유가 될 수 있습니다. 명령 출력에는 실패한 논리 볼륨이 표시됩니다.
# lvs --all --options +devices
/dev/vdb1: open failed: No such device or address
/dev/vdb1: open failed: No such device or address
WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
mylv myvg -wi-a---p- 20.00g [unknown](0) [unknown](5120),/dev/sdc1(0)
예 13.3. RAID 논리 볼륨에서 실패한 이미지
다음 예제에서는 RAID 논리 볼륨의 이미지에 실패한 경우 pvs
및 lvs
유틸리티의 명령 출력을 보여줍니다. 논리 볼륨은 계속 사용할 수 있습니다.
# pvs
Error reading device /dev/sdc1 at 0 length 4.
Error reading device /dev/sdc1 at 4096 length 4.
Couldn't find device with uuid b2J8oD-vdjw-tGCA-ema3-iXob-Jc6M-TC07Rn.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rimage_1 while checking used and assumed devices.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rmeta_1 while checking used and assumed devices.
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel_bp-01 lvm2 a-- <464.76g 4.00m
/dev/sdb1 myvg lvm2 a-- <836.69g 736.68g
/dev/sdd1 myvg lvm2 a-- <836.69g <836.69g
/dev/sde1 myvg lvm2 a-- <836.69g <836.69g
[unknown] myvg lvm2 a-m <836.69g 736.68g
# lvs -a --options name,vgname,attr,size,devices myvg
Couldn't find device with uuid b2J8oD-vdjw-tGCA-ema3-iXob-Jc6M-TC07Rn.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rimage_1 while checking used and assumed devices.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rmeta_1 while checking used and assumed devices.
LV VG Attr LSize Devices
my_raid1 myvg rwi-a-r-p- 100.00g my_raid1_rimage_0(0),my_raid1_rimage_1(0)
[my_raid1_rimage_0] myvg iwi-aor--- 100.00g /dev/sdb1(1)
[my_raid1_rimage_1] myvg Iwi-aor-p- 100.00g [unknown](1)
[my_raid1_rmeta_0] myvg ewi-aor--- 4.00m /dev/sdb1(0)
[my_raid1_rmeta_1] myvg ewi-aor-p- 4.00m [unknown](0)
13.3. 볼륨 그룹에서 손실된 LVM 물리 볼륨 제거
물리 볼륨이 실패하면 볼륨 그룹에서 나머지 물리 볼륨을 활성화하고 볼륨 그룹에서 해당 물리 볼륨을 사용한 모든 논리 볼륨을 제거할 수 있습니다.
절차
볼륨 그룹에서 나머지 물리 볼륨을 활성화합니다.
# vgchange --activate y --partial myvg
제거될 논리 볼륨을 확인합니다.
# vgreduce --removemissing --test myvg
볼륨 그룹에서 손실된 물리 볼륨을 사용한 논리 볼륨을 모두 제거합니다.
# vgreduce --removemissing --force myvg
선택 사항: 유지하려는 논리 볼륨을 실수로 제거한 경우
vgreduce
작업을 되돌릴 수 있습니다.# vgcfgrestore myvg
주의씬 풀을 제거하면 LVM에서 작업을 되돌릴 수 없습니다.
13.4. 누락된 LVM 물리 볼륨의 메타데이터 찾기
물리 볼륨의 볼륨 그룹의 메타데이터 영역을 실수로 덮어쓰거나 삭제하는 경우 메타데이터 영역이 올바르지 않거나 특정 UUID가 있는 물리 볼륨을 찾을 수 없음을 나타내는 오류 메시지가 표시됩니다.
이 절차에서는 누락되거나 손상된 물리 볼륨의 보관된 최신 메타데이터를 찾습니다.
절차
물리 볼륨이 포함된 볼륨 그룹의 아카이브 메타데이터 파일을 찾습니다. 아카이브된 메타데이터 파일은
/etc/lvm/archive/volume-group-name_backup-number.vg
경로에 있습니다.# cat /etc/lvm/archive/myvg_00000-1248998876.vg
00000-1248998876 을 backup-number로 바꿉니다. 볼륨 그룹의 번호가 가장 높은 마지막으로 알려진 유효한 메타데이터 파일을 선택합니다.
물리 볼륨의 UUID를 찾습니다. 다음 방법 중 하나를 사용합니다.
논리 볼륨을 나열합니다.
# lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
-
아카이브된 메타데이터 파일을 검사합니다. 볼륨 그룹 구성의
physical_volumes
섹션에서id =
라는 값으로 UUID를 찾습니다. partial 옵션을 사용하여 볼륨 그룹을
비활성화
합니다.# vgchange --activate n --partial myvg PARTIAL MODE. Incomplete logical volumes will be processed. WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/vdb1). 0 logical volume(s) in volume group "myvg" now active
13.5. LVM 물리 볼륨에서 메타데이터 복원
이 절차에서는 새 장치로 손상되거나 교체되는 물리 볼륨에 메타데이터를 복원합니다. 물리 볼륨의 메타데이터 영역을 다시 작성하여 물리 볼륨에서 데이터를 복구할 수 있습니다.
작동 중인 LVM 논리 볼륨에서는 이 절차를 시도하지 마십시오. 잘못된 UUID를 지정하면 데이터가 손실됩니다.
사전 요구 사항
- 누락된 물리 볼륨의 메타데이터를 확인했습니다. 자세한 내용은 누락된 LVM 물리 볼륨의 메타데이터 찾기를 참조하십시오.
절차
물리 볼륨에서 메타데이터를 복원합니다.
# pvcreate --uuid physical-volume-uuid \ --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \ block-device
참고명령은 LVM 메타데이터 영역만 덮어쓰고 기존 데이터 영역에는 영향을 주지 않습니다.
예 13.4. /dev/vdb1에서 물리 볼륨 복원
다음 예제는
/dev/vdb1
장치를 다음 속성을 사용하여 물리 볼륨으로 레이블을 지정합니다.-
FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
의 UUID VG_00050.vg에 포함된 메타데이터 정보.
이는 볼륨 그룹의 가장 최근 적절한 아카이브 메타데이터입니다.# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" \ --restorefile /etc/lvm/archive/VG_00050.vg \ /dev/vdb1 ... Physical volume "/dev/vdb1" successfully created
-
볼륨 그룹의 메타데이터를 복원합니다.
# vgcfgrestore myvg Restored volume group myvg
볼륨 그룹의 논리 볼륨을 표시합니다.
# lvs --all --options +devices myvg
논리 볼륨은 현재 비활성 상태입니다. 예를 들면 다음과 같습니다.
LV VG Attr LSize Origin Snap% Move Log Copy% Devices mylv myvg -wi--- 300.00G /dev/vdb1 (0),/dev/vdb1(0) mylv myvg -wi--- 300.00G /dev/vdb1 (34728),/dev/vdb1(0)
논리 볼륨의 세그먼트 유형이 RAID인 경우 논리 볼륨을 다시 동기화합니다.
# lvchange --resync myvg/mylv
논리 볼륨을 활성화합니다.
# lvchange --activate y myvg/mylv
-
디스크상의 LVM 메타데이터가 최소한 지나치게 많은 공간을 차지하는 경우 이 절차에서는 물리 볼륨을 복구할 수 있습니다. 메타데이터 영역을 넘어서는 메타데이터가 오버라이드된 경우 볼륨의 데이터가 영향을 받을 수 있습니다.
fsck
명령을 사용하여 해당 데이터를 복구할 수 있습니다.
검증
활성 논리 볼륨을 표시합니다.
# lvs --all --options +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices mylv myvg -wi--- 300.00G /dev/vdb1 (0),/dev/vdb1(0) mylv myvg -wi--- 300.00G /dev/vdb1 (34728),/dev/vdb1(0)
13.6. LVM 출력에서 오류 반올림
볼륨 그룹에서 공간 사용량을 보고하는 LVM 명령은 보고된 번호를 2
10진수로 반올림하여 사람이 읽을 수 있는 출력을 제공합니다. 여기에는 vgdisplay
및 vgs 유틸리티가
포함됩니다.
반올림 결과, 가용 공간의 보고된 값은 볼륨 그룹의 물리 확장 영역보다 클 수 있습니다. 논리 볼륨을 생성하려고 하면 보고된 여유 공간의 크기가 다음과 같은 오류가 발생할 수 있습니다.
Insufficient free extents
오류를 해결하려면 볼륨 그룹의 사용 가능한 물리 확장 영역 수를 검사해야 하며 이는 사용 가능한 공간의 정확한 값입니다. 그런 다음 확장 영역 수를 사용하여 논리 볼륨을 성공적으로 만들 수 있습니다.
13.7. LVM 볼륨을 만들 때 라운드 오류 방지
LVM 논리 볼륨을 만들 때 논리 볼륨의 논리 확장 영역 수를 지정하여 반올림 오류를 방지할 수 있습니다.
절차
볼륨 그룹에서 사용 가능한 물리 확장 영역의 수를 찾습니다.
# vgdisplay myvg
예 13.5. 볼륨 그룹에서 사용 가능한 확장 영역
예를 들어 다음 볼륨 그룹에는 8780 사용 가능한 물리 확장 영역이 있습니다.
--- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 6 VG Access read/write [...] Free PE / Size 8780 / 34.30 GB
논리 볼륨을 만듭니다. 볼륨 크기를 바이트가 아닌 확장 영역 단위로 입력합니다.
예 13.6. 확장 영역 수를 지정하여 논리 볼륨 만들기
# lvcreate --extents 8780 --name mylv myvg
예 13.7. 남아 있는 모든 공간을 차지하기 위한 논리 볼륨 만들기
또는 논리 볼륨을 확장하여 볼륨 그룹에서 사용 가능한 나머지 공간의 백분율을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
# lvcreate --extents 100%FREE --name mylv myvg
검증
볼륨 그룹에서 현재 사용하는 확장 영역의 수를 확인합니다.
# vgs --options +vg_free_count,vg_extent_count VG #PV #LV #SN Attr VSize VFree Free #Ext myvg 2 1 0 wz--n- 34.30G 0 0 8780
13.8. LVM 메타데이터 및 디스크의 위치
LVM 헤더 및 메타데이터 영역은 다른 오프셋 및 크기에서 사용할 수 있습니다.
기본 LVM 디스크 헤더:
-
label_header
및pv_header
구조에 있습니다. - 디스크의 두 번째 512바이트 섹터에 있습니다. PV(물리 볼륨)를 생성할 때 기본이 아닌 위치가 지정된 경우 헤더가 첫 번째 또는 세 번째 섹터에 있을 수도 있습니다.
표준 LVM 메타데이터 영역:
- 디스크 시작부터 4096바이트를 시작합니다.
- 디스크 시작부터 1MiB를 종료합니다.
-
mda_header
구조를 포함하는 512바이트 섹터로 시작합니다.
메타데이터 텍스트 영역은 mda_header
섹터 후에 시작하여 메타데이터 영역의 끝으로 이동합니다. LVM VG 메타데이터 텍스트는 순환 방식으로 메타데이터 텍스트 영역에 작성됩니다. mda_header
는 텍스트 영역 내의 최신 VG 메타데이터의 위치를 가리킵니다.
# pvck --dump headers /dev/sda
명령을 사용하여 디스크에서 LVM 헤더를 출력할 수 있습니다. 이 명령은 label_header
,pv_header
,mda_header
및 존재하는 경우 메타데이터 텍스트 위치를 출력합니다. 잘못된 필드는 CHECK
접두사를 사용하여 출력됩니다.
LVM 메타데이터 영역 오프셋은 PV를 생성한 시스템의 페이지 크기와 일치하므로 메타데이터 영역은 디스크 시작 시 8K, 16K 또는 64K를 시작할 수 있습니다.
PV를 생성할 때 더 크거나 작은 메타데이터 영역을 지정할 수 있습니다. 이 경우 메타데이터 영역은 1MiB가 아닌 위치에서 종료될 수 있습니다. pv_header
는 메타데이터 영역의 크기를 지정합니다.
PV를 생성할 때 디스크 끝에 두 번째 메타데이터 영역을 선택적으로 활성화할 수 있습니다. pv_header
에는 메타데이터 영역의 위치가 포함되어 있습니다.
13.9. 디스크에서 VG 메타데이터 추출
상황에 따라 디스크에서 VG 메타데이터를 추출하려면 다음 절차 중 하나를 선택합니다. 추출된 메타데이터를 저장하는 방법에 대한 자세한 내용은 추출된 메타데이터를 파일에 저장을 참조하십시오.
복구의 경우 디스크에서 메타데이터를 추출하지 않고 /etc/lvm/backup/
에서 백업 파일을 사용할 수 있습니다.
절차
유효한
mda_header
에서 참조된 현재 메타데이터 텍스트를 인쇄 :# pvck --dump metadata <disk>
예 13.8. 유효한
mda_header
의 메타데이터 텍스트# pvck --dump metadata /dev/sdb metadata text at 172032 crc Oxc627522f # vgname test segno 59 --- <raw metadata from disk> ---
유효한
mda_header
를 찾는 방법에 따라 메타데이터 영역에 있는 모든 메타데이터 복사본의 위치를 인쇄합니다.# pvck --dump metadata_all <disk>
예 13.9. 메타데이터 영역에 있는 메타데이터 복사본의 위치
# pvck --dump metadata_all /dev/sdb metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 7168 length 1450 crc 5652ea55 vg test seqno 3 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv
헤더가 없거나 손상된 경우
mda_header
를 사용하지 않고 메타데이터 영역에 있는 모든 메타데이터 복사본을 검색합니다.# pvck --dump metadata_search <disk>
예 13.10.
mda_header
를 사용하지 않고 메타데이터 영역의 메타데이터 복사본# pvck --dump metadata_search /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 7168 length 1450 crc 5652ea55 vg test seqno 3 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv
dump
명령에-v
옵션을 포함하여 메타데이터 복사본의 각 설명을 표시합니다.# pvck --dump metadata -v <disk>
예 13.11. 각 메타데이터 사본에서 설명 표시
# pvck --dump metadata -v /dev/sdb metadata text at 199680 crc 0x628cf243 # vgname my_vg seqno 40 --- my_vg { id = "dmEbPi-gsgx-VbvS-Uaia-HczM-iu32-Rb7iOf" seqno = 40 format = "lvm2" status = ["RESIZEABLE", "READ", "WRITE"] flags = [] extent_size = 8192 max_lv = 0 max_pv = 0 metadata_copies = 0 physical_volumes { pv0 { id = "8gn0is-Hj8p-njgs-NM19-wuL9-mcB3-kUDiOQ" device = "/dev/sda" device_id_type = "sys_wwid" device_id = "naa.6001405e635dbaab125476d88030a196" status = ["ALLOCATABLE"] flags = [] dev_size = 125829120 pe_start = 8192 pe_count = 15359 } pv1 { id = "E9qChJ-5ElL-HVEp-rc7d-U5Fg-fHxL-2QLyID" device = "/dev/sdb" device_id_type = "sys_wwid" device_id = "naa.6001405f3f9396fddcd4012a50029a90" status = ["ALLOCATABLE"] flags = [] dev_size = 125829120 pe_start = 8192 pe_count = 15359 }
이 파일은 복구에 사용할 수 있습니다. 첫 번째 메타데이터 영역은 기본적으로 덤프 메타데이터에 사용됩니다. 디스크 끝에 두 번째 메타데이터 영역이 있는 경우 --settings "mda_num=2"
옵션을 사용하여 덤프 메타데이터에 두 번째 메타데이터 영역을 대신 사용할 수 있습니다.
13.10. 추출된 메타데이터를 파일에 저장
복구에 덤프된 메타데이터를 사용해야 하는 경우 추출된 메타데이터를 -f
옵션과 --setings
옵션을 사용하여 파일에 저장해야 합니다.
절차
-
-f <filename
>이--dump 메타데이터에
추가되면 원시 메타데이터가 이름이 지정된 파일에 작성됩니다. 이 파일을 사용하여 복구할 수 있습니다. -
-f <filename
>이--dump metadata_all
또는--dump metadata_search
에 추가된 경우 모든 위치의 원시 메타데이터가 이름이 지정된 파일에 작성됩니다. --dump metadata_all|metadata_search
의 메타데이터 텍스트 인스턴스 하나를 저장하려면--settings "metadata_offset=<offset>"
을 추가합니다. 여기서 <offset
>은 목록 출력의 "metadata at <offset>"입니다.예 13.12. 명령 출력
# pvck --dump metadata_search --settings metadata_offset=5632 -f meta.txt /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv # head -2 meta.txt test { id = "FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv"
13.11. pvcreate 및 Cryostatcfgrestore 명령을 사용하여 손상된 LVM 헤더 및 메타데이터로 디스크 복구
손상된 물리 볼륨에서 메타데이터 및 헤더를 복원하거나 새 장치로 교체할 수 있습니다. 물리 볼륨의 메타데이터 영역을 다시 작성하여 물리 볼륨에서 데이터를 복구할 수 있습니다.
이러한 명령은 매우 주의하여 사용해야 하며, 각 명령의 영향, 볼륨의 현재 레이아웃, 달성해야 하는 레이아웃 및 백업 메타데이터 파일의 콘텐츠에 대해 잘 알고 있는 경우에만 사용해야 합니다. 이러한 명령에는 데이터가 손상될 가능성이 있으므로 문제 해결에 도움이 필요한 경우 Red Hat 글로벌 지원 서비스에 문의하는 것이 좋습니다.
사전 요구 사항
- 누락된 물리 볼륨의 메타데이터를 확인했습니다. 자세한 내용은 누락된 LVM 물리 볼륨의 메타데이터 찾기를 참조하십시오.
절차
pvcreate
및 Cryostatcfgrestore
명령에 필요한 다음 정보를 수집합니다.# pvs -o+uuid
명령을 실행하여 디스크 및 UUID에 대한 정보를 수집할 수 있습니다.-
metadata-file 은 VG의 최신 메타데이터 백업 파일의 경로입니다(예:
/etc/lvm/backup/ <vg-name>).
- VG-name 은 PV가 손상되거나 누락된 VG의 이름입니다.
-
이 장치에서 손상된 PV의 UUID 는
# pvs -i+uuid
명령의 출력에서 가져온 값입니다. -
disk 는 PV가 있어야 하는 디스크 이름입니다(예:
/dev/sdb
). 이 디스크가 올바른 디스크인지 확인하거나 도움을 구하십시오. 그렇지 않으면 이러한 단계를 수행하면 데이터가 손실될 수 있습니다.
-
metadata-file 은 VG의 최신 메타데이터 백업 파일의 경로입니다(예:
디스크에서 LVM 헤더를 다시 생성합니다.
# pvcreate --restorefile <metadata-file> --uuid <UUID> <disk>
필요한 경우 헤더가 유효한지 확인합니다.
# pvck --dump headers <disk>
디스크에서 VG 메타데이터를 복원합니다.
# vgcfgrestore --file <metadata-file> <vg-name>
필요한 경우 메타데이터가 복원되었는지 확인합니다.
# pvck --dump metadata <disk>
VG에 대한 메타데이터 백업 파일이 없는 경우 추출된 메타데이터를 파일에 저장하는 절차를 사용하여 하나를 가져올 수 있습니다.
검증
새 물리 볼륨이 손상되지 않고 볼륨 그룹이 올바르게 작동하는지 확인하려면 다음 명령의 출력을 확인합니다.
# vgs
추가 리소스
-
pvck(8) 도움말 페이지
- 물리 볼륨에서 LVM 메타데이터 백업 추출
- 온라인에서 물리적 볼륨의 메타데이터를 복구하는 방법은 무엇입니까? (Red Hat Knowledgebase)
- 볼륨 그룹을 구성하는 물리 볼륨 중 하나가 실패한 경우 Red Hat Enterprise Linux에서 볼륨 그룹을 복원하려면 어떻게 해야 합니까? (Red Hat Knowledgebase)
13.12. pvck 명령을 사용하여 손상된 LVM 헤더 및 메타데이터로 디스크 복구
이는 pvcreate 및 pvcfgrestore 명령을 사용하여 손상된 LVM 헤더 및 메타데이터가 있는 디스크를 복구하는 대신 사용할 수 있습니다. pvcreate
및 Cryostat cfgrestore
명령이 작동하지 않는 경우가 있을 수 있습니다. 이 방법은 손상된 디스크를 더 대상으로 합니다.
이 방법은 pvck --dump
에서 추출한 메타데이터 입력 파일 또는 /etc/lvm/backup
의 백업 파일을 사용합니다. 가능한 경우 동일한 VG의 다른 PV 또는 PV의 두 번째 메타데이터 영역에서 pvck --dump
에 저장된 메타데이터를 사용합니다. 자세한 내용은 추출된 메타데이터를 파일에 저장을 참조하십시오.
절차
디스크에서 헤더 및 메타데이터를 복구합니다.
# pvck --repair -f <metadata-file> <disk>
다음과 같습니다.
-
<metadata-file >은 VG에 대한 최신 메타데이터를 포함하는 파일입니다.
/etc/lvm/backup/ Cryostat-name
이거나pvck --dump metadata_search
명령 출력에서 원시 메타데이터 텍스트가 포함된 파일일 수 있습니다. -
<disk >는 PV가 있어야 하는 디스크 이름입니다(예:
/dev/sdb
). 데이터 손실을 방지하려면 가 올바른 디스크인지 확인합니다. 디스크가 올바른지 확실하지 않은 경우 Red Hat 지원팀에 문의하십시오.
-
<metadata-file >은 VG에 대한 최신 메타데이터를 포함하는 파일입니다.
메타데이터 파일이 백업 파일인 경우 VG에서 메타데이터를 보유하는 각 PV에서 pvck --repair
를 실행해야 합니다. 메타데이터 파일이 다른 PV에서 추출된 원시 메타데이터인 경우 pvck --repair
는 손상된 PV에서만 실행해야 합니다.
검증
새 물리 볼륨이 손상되지 않고 볼륨 그룹이 올바르게 작동하는지 확인하려면 다음 명령의 출력을 확인합니다.
# vgs <vgname>
# pvs <pvname>
# lvs <lvname>
추가 리소스
-
pvck(8) 도움말 페이지
- 물리 볼륨에서 LVM 메타데이터 백업 추출.
- 온라인에서 물리적 볼륨의 메타데이터를 복구하는 방법은 무엇입니까? (Red Hat Knowledgebase)
- 볼륨 그룹을 구성하는 물리 볼륨 중 하나가 실패한 경우 Red Hat Enterprise Linux에서 볼륨 그룹을 복원하려면 어떻게 해야 합니까? (Red Hat Knowledgebase)
13.13. LVM RAID 문제 해결
LVM RAID 장치의 다양한 문제를 해결하여 데이터 오류를 수정하고 장치를 복구하거나 실패한 장치를 교체할 수 있습니다.
13.13.1. RAID 논리 볼륨에서 데이터 일관성 확인
LVM은 RAID 논리 볼륨에 대한 스크럽을 지원합니다. RAID 스크럽은 배열의 모든 데이터 및 패리티 블록을 읽고 일관성이 있는지 확인하는 프로세스입니다. lvchange --syncaction repair
명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
절차
선택 사항: 다음 옵션 중 하나를 설정하여 RAID 논리 볼륨이 초기화되는 속도를 제어합니다.
-
--maxrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 확장하지 않도록 합니다. --minrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 달성하도록 합니다.# lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume _my_vg/my_lv_changed.
4K 를 복구 속도 값으로 바꿉니다. 이 값은 배열의 각 장치에 대한 초당 양입니다. 접미사를 지정하지 않으면 옵션은 장치당 초당 kiB를 가정합니다.
# lvchange --syncaction repair my_vg/my_lv
RAID 스크러블링 작업을 수행할 때
동기화
작업에 필요한 백그라운드 I/O는 볼륨 그룹 메타데이터 업데이트 등 LVM 장치에 대한 다른 I/O의 충돌을 줄일 수 있습니다. 이로 인해 다른 LVM 작업이 느려질 수 있습니다.참고RAID 장치를 생성하는 동안 이러한 최대 및 최소 I/O 속도를 사용할 수도 있습니다. 예를 들어
lvcreate --type raid10 -i 2 -m 1 -l 1 -L 10G --maxrecoveryrate 128 -n my_vg
는 128 kiB/sec/device의 최대 복구 속도를 가진 볼륨 그룹 my_vg에 있는 볼륨 그룹 my_vg에서 최대 복구 속도를 가진 크기가 10G인 my_vg를 생성합니다.
-
배열의 불일치 수를 복구하지 않고 표시합니다.
# lvchange --syncaction check my_vg/my_lv
이 명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
-
선택 사항: 커널 메시지의
var/log/syslog
파일을 확인합니다. 배열의 불일치를 수정합니다.
# lvchange --syncaction repair my_vg/my_lv
이 명령은 RAID 논리 볼륨에서 실패한 장치를 복구하거나 교체합니다. 이 명령을 실행한 후 커널 메시지의
var/log/syslog
파일을 볼 수 있습니다.
검증
스크럽 작업에 대한 정보를 표시합니다.
# lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches my_lv my_vg rwi-a-r--- 500.00m 100.00 idle 0
추가 리소스
-
시스템의
lvchange(8)
및lvmraid(7)
도움말 페이지 - 최소 및 최대 I/O 속도 옵션
13.13.2. 논리 볼륨에서 실패한 RAID 장치 교체
RAID는 기존 LVM 미러링과 동일하지 않습니다. LVM 미러링의 경우 실패한 장치를 제거합니다. 그렇지 않으면 RAID 배열이 실패한 장치에서 계속 실행되는 동안 미러링된 논리 볼륨이 중단됩니다. RAID1 이외의 RAID 수준의 경우 장치를 제거하면 RAID6에서 RAID5로 또는 RAID4 또는 RAID0으로의 낮은 RAID 수준으로의 변환을 의미합니다.
실패한 장치를 제거하고 교체를 LVM으로 할당하는 대신 lvconvert
명령의 --repair
인수를 사용하여 RAID 논리 볼륨에서 물리 볼륨으로 사용되는 실패한 장치를 교체할 수 있습니다.
사전 요구 사항
볼륨 그룹에는 오류가 발생한 장치를 교체하기에 충분한 여유 용량을 제공하는 물리 볼륨이 포함되어 있습니다.
볼륨 그룹에서 사용 가능한 확장 영역이 충분한 물리 볼륨이 없는 경우 Cryostatextend 유틸리티를 사용하여 충분히 큰
새
물리 볼륨을 추가합니다.
절차
RAID 논리 볼륨을 확인합니다.
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
/dev/sdc 장치가 실패한 후 RAID 논리 볼륨을 확인합니다.
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
실패한 장치를 교체합니다.
# lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
선택 사항: 실패한 장치를 대체하는 물리 볼륨을 수동으로 지정합니다.
# lvconvert --repair my_vg/my_lv replacement_pv
교체를 사용하여 논리 볼륨을 검사합니다.
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
볼륨 그룹에서 오류가 발생한 장치를 제거할 때까지 LVM 유틸리티는 여전히 LVM에서 실패한 장치를 찾을 수 없음을 나타냅니다.
볼륨 그룹에서 실패한 장치를 제거합니다.
# vgreduce --removemissing my_vg
검증
실패한 장치를 제거한 후 사용 가능한 물리 볼륨을 확인합니다.
# pvscan PV /dev/sde1 VG rhel_virt-506 lvm2 [<7.00 GiB / 0 free] PV /dev/sdb1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free]
실패한 장치를 교체한 후 논리 볼륨을 검사합니다.
# lvs --all --options name,copy_percent,devices my_vg my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
추가 리소스
-
시스템의
lvconvert(8)
및 Cryostatreduce(8)
도움말 페이지
13.14. 다중 경로 LVM 장치에 대한 중복 물리 볼륨 경고 문제 해결
다중 경로 스토리지가 있는 LVM을 사용하는 경우 볼륨 그룹 또는 논리 볼륨을 나열하는 LVM 명령을 실행하면 다음과 같은 메시지가 표시될 수 있습니다.
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf
이러한 경고 문제를 해결하여 LVM이 표시되는 이유를 이해하거나 경고를 숨길 수 있습니다.
13.14.1. 중복된 PV 경고의 근본 원인
DM Multipath(Device Mapper Multipath), EMC PowerPath 또는 HDLM(Hitachi Dynamic Link Manager)과 같은 다중 경로 소프트웨어가 시스템의 스토리지 장치를 관리하는 경우, 특정 LUN(Logical Unit)의 각 경로는 다른 SCSI 장치로 등록됩니다.
그런 다음 다중 경로 소프트웨어는 해당 개별 경로에 매핑되는 새 장치를 생성합니다. 각 LUN에는 /dev
디렉터리에 동일한 기본 데이터를 가리키는 여러 장치 노드가 있으므로 모든 장치 노드에는 동일한 LVM 메타데이터가 포함됩니다.
다중 경로 소프트웨어 | LUN에 대한 SCSI 경로 | 경로에 대한 다중 경로 장치 매핑 |
---|---|---|
DM Multipath |
|
|
EMC PowerPath |
| |
HDLM |
|
여러 장치 노드로 인해 LVM 툴에서 동일한 메타데이터를 여러 번 찾아 중복으로 보고합니다.
13.14.2. 중복된 PV 경고 사례
LVM에는 다음 경우 중 하나에 중복된 PV 경고가 표시됩니다.
- 동일한 장치에 대한 단일 경로
출력에 표시된 두 장치는 모두 동일한 장치에 대한 단일 경로입니다.
다음 예제에서는 중복 장치가 동일한 장치에 대한 단일 경로인 중복 PV 경고를 보여줍니다.
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf
multipath -ll
명령을 사용하여 현재 DM Multipath 토폴로지를 나열하는 경우 동일한 다중 경로 맵에서/dev/sdd
및/dev/sdf
를 모두 찾을 수 있습니다.이러한 중복 메시지는 경고일 뿐이며 LVM 작업이 실패했음을 나타내는 것은 아닙니다. 대신 LVM에서 장치를 물리 볼륨으로 사용하고 다른 장치를 무시한다고 경고합니다.
LVM에서 잘못된 장치를 선택하거나 경고가 사용자에게 중단되었다고 표시되면 필터를 적용할 수 있습니다. 필터는 물리 볼륨에 필요한 장치만 검색하고 다중 경로 장치에 대한 기본 경로를 종료하도록 LVM을 구성합니다. 결과적으로 더 이상 경고가 표시되지 않습니다.
- 다중 경로 맵
출력에 표시된 두 장치는 두 다중 경로 맵입니다.
다음 예제에서는 두 개의 다중 경로 맵에 대한 중복 PV 경고를 보여줍니다. 중복된 물리 볼륨은 동일한 장치에 대한 두 가지 다른 경로에 있지 않고 두 개의 다른 장치에 있습니다.
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh
이러한 상황은 동일한 장치에 대한 두 개의 단일 경로인 장치에 대한 중복 경고보다 더 심각합니다. 이러한 경고는 종종 시스템에 액세스하지 않아야 하는 장치에 액세스한다는 것을 의미합니다(예: LUN 복제 또는 미러).
컴퓨터에서 제거해야 하는 장치를 명확하게 모르는 경우 이 상황을 복구할 수 없습니다. 이 문제를 해결하려면 Red Hat 기술 지원에 문의하는 것이 좋습니다.
13.14.3. 중복된 PV 경고를 방지하는 LVM 장치 필터의 예
다음 예제에서는 단일 LUN(Logical Unit)에 대한 여러 스토리지 경로로 인한 중복 물리 볼륨 경고를 방지하는 LVM 장치 필터를 보여줍니다.
모든 장치의 메타데이터를 확인하도록 LVM(Logical Volume Manager)의 필터를 구성할 수 있습니다. 메타데이터에는 로컬 하드 디스크 드라이브와 여기에 있는 루트 볼륨 그룹과 다중 경로 장치가 포함됩니다. LVM이 다중 경로 장치 자체에서 각각의 고유한 메타데이터 영역을 발견하므로 다중 경로 장치의 기본 경로(예: /dev/sdb
,/dev/sdd
)의 기본 경로를 거부하면 이러한 중복 PV 경고를 방지할 수 있습니다.
첫 번째 하드 디스크 드라이브의 두 번째 파티션과 DM(Device mapper) Multipath 장치를 수락하고 다른 모든 항목을 거부하려면 다음을 입력합니다.
filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
모든 HP SmartArray 컨트롤러 및 EMC PowerPath 장치를 수락하려면 다음을 입력합니다.
filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]
첫 번째 IDE 드라이브 및 다중 경로 장치의 파티션을 수락하려면 다음을 입력합니다.
filter = [ "a|/dev/hda.*|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
13.14.4. 추가 리소스
추가 리소스