주:
- 이 사용지침서는 Oracle 제공 무료 실습 환경에서 제공됩니다.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마치면 사용자의 클라우드 환경과 관련된 값으로 대체합니다.
Oracle Linux에서 RAID 논리적 볼륨 구성
소개
LVM RAID는 여러 물리적 장치를 사용하여 성능을 향상시키거나 장치 오류를 허용하는 논리 볼륨(LV)을 만드는 방법입니다. LVM에서 물리적 장치는 VG(단일 볼륨 그룹)의 PV(물리적 볼륨)입니다.
이 자습서에서는 Oracle Linux Volume Manager 유틸리티와 함께 RAID 논리 볼륨을 만든 다음 디스크 오류를 처리합니다.
목표
- RAID 논리 볼륨 만들기
- RAID 논리 볼륨 크기 조정
- 장애가 발생한 RAID 장치 복구
필요 조건
다음 구성을 사용하는 모든 Oracle Linux 8 시스템:
- sudo 권한이 있는 비루트 사용자
- LVM에 사용할 추가 블록 볼륨
랩 환경 설정
주: 무료 실습 환경을 사용하는 경우 Oracle Linux Lab Basics에서 연결 및 기타 사용 지침을 참조하십시오.
-
아직 연결되지 않은 경우 터미널을 열고 위에서 언급한 각 instance에 ssh를 통해 연결합니다.
ssh oracle@<ip_address_of_instance> -
블록 볼륨이 존재하는지 확인합니다.
sudo lsblk무료 랩 환경의 출력에는 기존 파일 시스템에 대한 /dev/sda과 사용 가능한 디스크 /dev/sdb, /dev/sdc, /dev/sdd 및 /dev/sde가 표시되어야 합니다. 또한 나중에 사용할 두 개의 추가 디스크(/dev/sdf, /dev/sdg)가 있습니다.
물리적 볼륨(PV)
-
사용 가능한 디스크를 사용하여 PV(물리적 볼륨)를 만듭니다.
sudo pvcreate -v /dev/sd[b-e]-v옵션과 함께 명령을 실행하여 자세한 정보를 가져옵니다. -
PV 만들기를 확인합니다.
sudo pvs예제 출력:
[oracle@ol-node01 ~]$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ocivolume lvm2 a-- 45.47g 0 /dev/sdb lvm2 --- 50.00g 50.00g /dev/sdc lvm2 --- 50.00g 50.00g /dev/sdd lvm2 --- 50.00g 50.00g /dev/sde lvm2 --- 50.00g 50.00g
VG(볼륨 그룹)
-
새로 생성된 물리적 볼륨을 사용하여 VG(볼륨 그룹)를 만듭니다.
sudo vgcreate -v foo /dev/sd[b-e] -
VG 만들기를 확인합니다.
sudo vgs예제 출력:
[oracle@ol-node01 ~]$ sudo vgs VG #PV #LV #SN Attr VSize VFree foo 4 0 0 wz--n- 199.98g 199.98g ocivolume 1 2 0 wz--n- 45.47g 0
논리 볼륨(LV)
-
RAID LV(논리적 볼륨)를 만듭니다.
sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo--type: RAID 레벨을 설정합니다. LVM은 RAID 레벨 0, 1, 4, 5, 6 및 10을 지원합니다.-i: RAID 4/5/6 논리 볼륨에 대한 스트라이프(장치)의 수(n)를 설정합니다. raid5 LV에는 n+1 장치가 필요합니다.-L: RAID 배열의 총 크기입니다.-n: RAID 배열의 이름입니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo Using default stripesize 64.00 KiB. Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents). Logical volume "rr" created.자세한 내용은
lvmraid(7)설명서 페이지를 참조하십시오. -
LV 만들기를 확인합니다.
sudo lvdisplay foo출력에는 foo VG에 포함된 모든 논리 볼륨이 표시됩니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvdisplay foo --- Logical volume --- LV Path /dev/foo/rr LV Name rr VG Name foo LV UUID vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2 LV Write Access read/write LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1281 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 1024 Block device 252:10 -
LV 유형을 표시합니다.
sudo lvs -o name,segtype foo/rrlvs명령은 전체 LV 경로를 옵션으로 사용하여 결과를 좁힐 수 있습니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr LV Type rr raid5
파일 시스템 만들기
-
RAID LV에 XFS 파일 시스템을 만듭니다.
sudo mkfs.xfs -f /dev/foo/rr-f: 기존 파일 시스템을 강제로 덮어씁니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr meta-data=/dev/foo/rr isize=512 agcount=8, agsize=163952 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1311616, imaxpct=25 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0주: XFS 파일 시스템은 만든 후 크기를 줄일 수 없습니다. 그러나 xfs_growfs 명령은 확장할 수 있습니다.
RAID LV 마운트
-
파일 시스템을 마운트합니다.
sudo mkdir -p /u01 sudo mount /dev/foo/rr /u01 -
파일 시스템 디스크 사용량을 보고합니다.
df -h예제 출력:
[oracle@ol-node01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/foo-rr 5.0G 69M 5.0G 2% /u01
RAID LV 크기 조정
RAID LV의 크기를 조정하는 방법은 여러 가지가 있습니다.
- LV를 늘리려면
lvresize또는lvextend를 사용합니다. - LV를 축소하려면
lvresize또는lvreduce를 사용합니다. lvconvert를--stripes N매개변수와 함께 사용하여 스트라이프 수를 변경합니다.
중요: LV를 축소하는 것은 위험하며 데이터가 손실될 수 있습니다. LV에서 XFS 파일 시스템을 실행할 때 XFS에서 파일 시스템 크기 감소를 허용하지 않으므로 LV를 축소하지 마십시오.
RAID LV 용량 증가
-
VG에서 사용 가능한 공간을 사용하여 RAID LV 크기를 10G로 늘립니다.
sudo lvresize -L 10G foo/rr크기를 10G로 늘리려면
-L +10G옵션을 대신 사용합니다. -
LV가 10G로 증가했는지 확인합니다.
sudo lvs foo/rrLSize에 10g가 표시되어야 합니다.
-
파일 시스템을 확장합니다.
sudo xfs_growfs /u01 -
업데이트된 파일 시스템 디스크 사용량을 보고합니다.
df -h -
계속하기 전에 RAID 동기화 상태를 확인하십시오.
경고: 다음 단계로 너무 빨리 진행하면 foo/rr이 동기화되지 않아 오류가 표시될 수 있습니다.
위의 RAID LV 크기를 조정한 후 동기화가 완료되지 않은 경우 이 오류가 발생합니다.
watch sudo lvs foo/rr가 있는 RAID LV를 확인하고 Cpy%Sync 필드가 100%가 될 때까지 기다립니다. Cpy%Sync가 100%에 도달하면ctrl-c를 사용하여watch명령을 종료합니다.
자세한 내용은 lvresize(8), lvextend(8) 및 lvreduce(8) 매뉴얼 페이지를 참조하십시오.
RAID LV의 스트라이프 증가
RAID LV의 스트라이프 수를 변경하면 전체 용량이 증가하고 RAID4/5/6/10에서 가능합니다. 각 추가 스트라이프에는 볼륨 그룹 내에 할당되지 않은 동일한 수의 물리적 볼륨(장치)이 필요합니다.
-
VG foo에 물리적 볼륨(PV)이 있는지 확인합니다.
sudo pvs출력에서 /dev/sdb, /dev/sdc, /dev/sdd 및 /dev/sde는 모두 VG foo와 연관됩니다.
-
사용되지 않은 물리적 볼륨이 있는지 확인합니다.
sudo pvdisplay -m /dev/sd[b-e]예제 출력:
--- Physical volume --- PV Name /dev/sdb VG Name foo PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 11944 Allocated PE 855 PV UUID Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/foo/rr_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 854: Logical volume /dev/foo/rr_rimage_0 Logical extents 0 to 853 Physical extent 855 to 12798: FREE ...pvdisplay명령을-m옵션과 함께 사용하면 물리적 확장 영역을 논리적 볼륨 및 논리적 확장에 매핑할 수 있습니다. 출력 예의 PV /dev/sdb은 RAID LV와 연관된 물리적 범위를 보여줍니다. /dev/sdc, /dev/sdd 및 /dev/sde에도 동일하게 나타나야 합니다. -
VG에 다른 PV를 추가합니다.
기존 RAID LV가 기존의 모든 물리적 볼륨을 사용하므로 PV 푸에 /dev/sdf를 추가합니다.
sudo vgextend foo /dev/sdf출력에는
vgextend명령이 VG foo에 추가하기 전에 /dev/sdf를 PV로 변환하는 내용이 표시됩니다. -
RAID LV에 스트라이프를 추가합니다.
sudo lvconvert --stripes 4 foo/rr프롬프트에
y로 응답합니다.예제 출력:
[oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr Using default stripesize 64.00 KiB. WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents! Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y Logical volume foo/rr successfully converted. -
LV 새 크기를 확인합니다.
sudo lvs foo/rr예제 출력:
[oracle@ol-node01 ~]$ sudo lvs foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert rr foo rwi-aor--- 13.34g 2.24용량(LSize)이 3.34g씩 증가하고 동기화(Cpy%Sync)가 시작됩니다. 동기화는 RAID LV의 모든 장치를 서로 일관되게 만드는 프로세스이며, RAID LV의 장치를 수정하거나 교체할 때 전체 동기화가 필요합니다.
-
동기화 상태를 확인합니다.
진행률이 100%에 도달할 때까지 검사를 실행합니다.
watch sudo lvs foo/rrCpy%Sync가 100%에 도달하면
ctrl-c를 사용하여watch명령을 종료합니다.watch명령을 사용하는 다른 방법은 다음과 같습니다.watch -n 5 sudo lvs foo/rr를 실행하여 기본값 2가 아닌 모든 5를 새로 고칩니다.- 60초 후에 자동으로 종료하려면
timeout 60 watch -n 5 sudo lvs foo/rr를 실행합니다.
-
이제 /dev/sdf가 포함된 새 세그먼트 범위 및 PV를 표시합니다.
sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
LV에서 실패한 RAID 장치 복구
RAID 어레이는 고장난 장치와 함께 계속 실행할 수 있습니다. RAID1 이외의 RAID 유형에 대한 장치를 제거하면 하위 레벨 RAID(이 경우 RAID5에서 RAID0으로 변환)로 변환됩니다.
LVM은 실패한 드라이브를 제거하고 교체품을 추가하는 대신 lvconvert --repair 명령을 사용하여 한 번에 RAID 볼륨에서 실패한 장치를 교체할 수 있도록 허용합니다.
-
현재 RAID LV 레이아웃을 확인합니다.
sudo lvs --all --options name,copy_percent,devices foo -
/dev/sdd에서 실패를 시뮬레이트합니다.
echo 1 | sudo tee /sys/block/sdd/device/delete -
실패 후 RAID LV 레이아웃을 다시 확인합니다.
sudo lvs --all --options name,copy_percent,devices foo[unknown] 장치를 확인합니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). LV Cpy%Sync Devices rr 100.00 rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0) [rr_rimage_0] /dev/sdb(855) [rr_rimage_0] /dev/sdb(1) [rr_rimage_1] /dev/sdc(855) [rr_rimage_1] /dev/sdc(1) [rr_rimage_2] [unknown](855) [rr_rimage_2] [unknown](1) [rr_rimage_3] /dev/sde(855) [rr_rimage_3] /dev/sde(1) [rr_rimage_4] /dev/sdf(855) [rr_rimage_4] /dev/sdf(1) [rr_rmeta_0] /dev/sdb(0) [rr_rmeta_1] /dev/sdc(0) [rr_rmeta_2] [unknown](0) [rr_rmeta_3] /dev/sde(0) [rr_rmeta_4] /dev/sdf(0) -
실패한 장치를 교체합니다.
sudo lvconvert --repair foo/rr프롬프트에
y로 응답합니다.이 명령은 VG에서 사용할 수 있는 공간이나 장치를 찾지 못했습니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Insufficient free space: 856 extents needed, but only 0 available Failed to replace faulty devices in foo/rr.경고: 오류에 "Unable to replace devices in foo/rr while it is not in-sync" 메시지가 포함된 경우
watch sudo lvs foo/rr를 실행하고 Cpy%Sync가 100%인지 확인하여 RAID-LV가 동기화 상태인지 확인합니다.lvconvert명령을 다시 시도하십시오. -
VG에 /dev/sdg 장치를 추가합니다.
sudo vgextend foo /dev/sdg출력의 WARNING 메시지는 여전히 실패한 드라이브로 인해 발생합니다.
-
실패한 드라이브 교체를 재시도합니다.
sudo lvconvert --repair foo/rr프롬프트에
y를 사용하여 다시 응답합니다.출력에 다시 누락된 드라이브에 대한 WARNING 메시지가 표시되지만 명령이 VG에서 결함이 있는 장치를 성공적으로 교체했습니다.
-
레이아웃을 검사합니다.
sudo lvs --all --options name,copy_percent,devices foo/dev/sdg는 모든 [unknown] 장치 항목을 대체합니다.
-
VG에서 고장난 장치를 제거합니다.
LVM 유틸리티는 LVM이 VG에서 제거될 때까지 실패한 장치를 찾을 수 없다고 계속 보고합니다.
sudo vgreduce --removemissing foo출력의 WARNING 메시지는 여전히 실패한 드라이브로 인해 발생합니다.
-
계속하기 전에 RAID 동기화 상태를 확인하십시오.
경고: 다음 섹션으로 너무 빨리 진행하면 다음 오류 메시지가 표시될 수 있습니다.
예제 출력:
[oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr foo/rr state is currently "recover". Unable to switch to "check".RAID LV에 스트라이프를 추가한 후 동기화가 완료되지 않은 경우 이 오류가 발생합니다.
watch sudo lvs foo/rr가 있는 RAID LV를 확인하고 Cpy%Sync 필드가 100%가 될 때까지 기다립니다.
RAID LV에서 데이터 일관성 검사(스크러빙)
LVM은 배열의 모든 데이터 및 패리티 블록을 읽고 일관성을 검사하는 RAID LV에 대한 스크러빙 기능을 제공합니다.
-
검사 모드에서 스크러빙을 시작합니다.
sudo lvchange --syncaction check foo/rr -
스크러빙 작업의 상태를 표시합니다.
watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr예제 출력:
[oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr LV SyncAction Cpy%Sync rr check 30.08 -
스크러빙(동기화)이 완료된 후 발견된 일관성 없는 블록 수를 표시합니다.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rrraid_sync_action옵션은 다음 값 중 하나로 SyncAction 필드를 표시합니다.idle: 모든 작업이 완료되었습니다.resync: 시스템 실패 후 초기화 또는 복구하는 중입니다.recover: 배열의 장치를 교체하는 중입니다.check: 차이를 확인합니다.repair: 차이점을 찾고 복구합니다.
예제 출력:
[oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches rr foo rwi-aor--- 13.34g 44.42 check 0출력에는 0개의 불일치(일치하지 않음)가 표시됩니다.
-
(선택 사항) 배열의 차이를 수정합니다.
이 샘플 배열에는 차이가 없을 수 있으므로 이 단계는 선택 사항입니다.
sudo lvchange --syncaction repair foo/rr -
(선택사항) 복구 상태를 확인합니다.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rrSyncAction 필드가 repair로 변경된 것을 확인할 수 있습니다.
자세한 내용은 lvchange(8) 및 lvmraid(7) 매뉴얼 페이지를 참조하십시오.
자세한 내용:
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 보다 무료 학습 컨텐츠에 접근할 수 있습니다. 또한 education.oracle.com/learning-explorer을 방문하여 Oracle Learning Explorer가 됩니다.
제품 설명서는 Oracle Help Center를 참조하십시오.
Configure RAID Logical Volumes on Oracle Linux
F57869-02
May 2022
Copyright © 2021, Oracle and/or its affiliates.