각각의 물리 볼륨 그룹을 설정해주고 시작

[root@localhost ~]# vgcreate test-vg /dev/sdb1 /dev/sdc1 /dev/sdd1
  Volume group "test-vg" successfully created

 

1. 볼륨 그룹 확장

 

이미 구성된 볼륨 그룹에 추가로 사이즈를 확보하거나, RAID 구성을 위해 물리 볼륨을 추가할 수 있습니다. 이때 사용하는 명령어는 vgextend입니다.

 

vgextend volume-group-name physical-volume1 physical-volume2 ...

 

[root@localhost ~]# vgextend test-vg /dev/sde1 /dev/sdf1
  Volume group "test-vg" successfully extended
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree 
  /dev/sda2  centos  lvm2 a--  <49.74g  4.00m
  /dev/sdb1  test-vg lvm2 a--   <8.00g     0 
  /dev/sdc1  test-vg lvm2 a--   <8.00g  5.99g
  /dev/sdd1  test-vg lvm2 a--   <8.00g <8.00g
  /dev/sde1  test-vg lvm2 a--   <8.00g <8.00g
  /dev/sdf1  test-vg lvm2 a--   <8.00g <8.00g
  /dev/sdg1          lvm2 ---   <8.00g <8.00g

2. 볼륨 그룹 축소

볼륨 그룹 축소는 vgreduce 명령을 사용합니다. 볼륨 그룹 축소는 볼륨 그룹에서 물리 볼륨을 분리하여 진행합니다.

 

 

 

vgreduce volume-group-name physical-volume1 physical-volume2 ...

 

 

 

 

하지만 볼륨 그룹 축소는 확장과는 달리 이미 볼륨 그룹에서 사용 중인 물리 볼륨의 데이터를 다른 물리 볼륨으로 이동시켜야 합니다.

-> 데이터 손상 방지

 

 

pvmove 명령을 통해 지정된 물리 볼륨의 데이터를 같은 볼륨 그룹 내의 다른 물리 볼륨으로 이동시키는 작업이 필요합니다.

 

pvmove physical-volume

 

[root@localhost ~]# pvmove /dev/sdc1
  /dev/sdc1: Moved: 0.39%
  /dev/sdc1: Moved: 100.00%

 

 

이후에 vgreduce를 실행합니다

[root@localhost ~]# vgreduce test-vg /dev/sdc1
  Removed "/dev/sdc1" from volume group "test-vg"

 

 

3. 논리 볼륨 확장

논리 볼륨에 파일 시스템을 생성하고 마운트 한 뒤 사용하다가 사이즈가 부족할 경우 사이즈를 확장할 수 있습니다.

 

논리 볼륨 확장에 사용하는 명령은 lvextend입니다.

 

lvextend [option]  logical-volume-path

 

옵션은 -I 옵션과 , -L 옵션이 존재합니다.

-I 옵션의 경우 뒤에 PE개수를 지정하며 -L 옵션의 경우 사이즈(MB, GB)를 지정합니다.

 

또한, PE개수 또는 사이즈를 지정할 때 '+' 기호를 붙여야만 현재 크기에서 지정한 크기만큼 사이즈가 추가됩니다. 기호를 추가하지 않으면 절댓값으로 인식합니다.

 

[root@localhost ~]# lvextend -L +100M /dev/test-vg/test-lv2
  Size of logical volume test-vg/test-lv2 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).
  Logical volume test-vg/test-lv2 successfully resized.

 

이렇게 확장을 한다면 , 논리 볼륨을 확장하였지만, 논리 볼륨 내에 있는 파일 시스템 크기는 이전과 동일하게 됩니다.]

이는 논리 볼륨의 크기는 확장되었으나, 확장된 부분에는 파일 시스템을 생성하지 않았기 때문입니다.

 

즉, 파일 시스템 확장을 위해서는 각 파일 시스템 종류에 맞게 명령이 필요합니다.

 

xfs파일의 경우 xfs_growfs mount-point

ext4파일 시스템의 경우resize2fs logical-volume-path 과같은 명령어를 이용하면 됩니다.

 

xfs 파일 시스템의 경우 파운트 포인트를 인자로 지정, ext4파일 시스템의 경우 논리 볼륨 장치 파일을 인자로 지정합니다.

 

하지만 ' lvextend -r' 옵션을 이용하면 파일 시스템 종류에 상관없이 논리 볼륨과 파일 시스템을 동시에 확장시킬 수 있습니다!!

 

 

4. 논리 볼륨 축소

 

논리 볼륨 축소 명령은 lvreduce입니다.

 

lvreduce [option] logical-volume-path

 

 

논리 볼륨 축소도 마찬가지로 논리 볼륨만 축소하는 것이 아니라, 파일 시스템을 모두 축소하여야 합니다.

하지만 확대 와는 반대로 파일 시스템을 먼저 축소하고, 그다음 논리 볼륨을 축소해야 하는 반대의 순서를 가집니다!

(또한, 파일 시스템 축소는 ext4 파일 시스템만 가능합니다 )

 

 

resize2fs logical-volume-path size

또는

lvreduce '-r' 을 통해 파일 시스템 축소, 논리 볼륨 축소를 동시에 가능합니다.(안전)

 

 

 

 

2021.05.13 - [리눅스 공부] - [리눅스/CentOS] 단일 RAID 종류별 특징

 

 

[리눅스/CentOS] 단일 RAID 종류별 특징

스트라이프 볼륨 , RAID 0 (효율+스피드) 스트라이프 볼륨은 스토리지 사이즈와 성능을 중시하는 논리 볼륨 생성 방식입니다. 스트라이프 볼륨은 디스크의 배열 사용과 관련된 RAID-0과 동작 방식이

trevor522.tistory.com

위의 RAID 이론을 기반으로 리눅스 환경에서 실습을 진행해보겠습니다.

 

스트라이프 볼륨 만들어보기 (RAID-0)

 

스트라이프 볼륨을 설정하기 위한 lvcreate 명령의 옵션은 다음과 같다.

 

-i : 스트라이프 개수를 지정합니다

-I : 스트라이프 단위의 크기를 지정합니다.

 

[root@localhost ~]# lvcreate -n stripe_lv -L 100M -i 3 -I 64K raid-vg
  Rounding size 100.00 MiB (25 extents) up to stripe boundary size 108.00 MiB(27 extents).
  Logical volume "stripe_lv" created.
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree 
  /dev/sda2  centos  lvm2 a--  <49.74g  4.00m
  /dev/sdb1  raid-vg lvm2 a--   <8.00g  7.96g
  /dev/sdc1  raid-vg lvm2 a--   <8.00g  7.96g
  /dev/sdd1  raid-vg lvm2 a--   <8.00g  7.96g
  /dev/sde1  raid-vg lvm2 a--   <8.00g <8.00g
  /dev/sdf1  raid-vg lvm2 a--   <8.00g <8.00g
  /dev/sdg1          lvm2 ---   <8.00g <8.00g

lvcreate를 통해 3개의 스트라이프를 64K 크기를 지정하여 볼륨을 설정하고 pvs를 통해 결과를 살펴보았습니다.

 

 

미러 볼륨 만들어보기 (RAID-1)

미러 볼륨은 옵션 -m을 통해 생성할 미러(중복) 개수를 지정하면 됩니다.

[root@localhost ~]# lvcreate -n mirror-lv1 -L 500M -m 3 raid-vg
  Logical volume "mirror-lv1" created.
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree 
  /dev/sda2  centos  lvm2 a--  <49.74g  4.00m
  /dev/sdb1  raid-vg lvm2 a--   <8.00g  7.50g
  /dev/sdc1  raid-vg lvm2 a--   <8.00g  7.50g
  /dev/sdd1  raid-vg lvm2 a--   <8.00g  7.50g
  /dev/sde1  raid-vg lvm2 a--   <8.00g  7.50g
  /dev/sdf1  raid-vg lvm2 a--   <8.00g <8.00g
  /dev/sdg1          lvm2 ---   <8.00g <8.00g

 

RAID-5, RAID-6 볼륨 구성

RAID-5,-6 은 기존의 명령어에 --type 옵션을 선언하여 설정하면 됩니다.

 

[root@localhost ~]# lvcreate -n raid5-lvl -L 1G -i 3 --type raid5 -I 64K raid-vg
  Rounding size 1.00 GiB (256 extents) up to stripe boundary size <1.01 GiB(258 extents).
  Logical volume "raid5-lvl" created.
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree 
  /dev/sda2  centos  lvm2 a--  <49.74g  4.00m
  /dev/sdb1  raid-vg lvm2 a--   <8.00g <7.66g
  /dev/sdc1  raid-vg lvm2 a--   <8.00g <7.66g
  /dev/sdd1  raid-vg lvm2 a--   <8.00g <7.66g
  /dev/sde1  raid-vg lvm2 a--   <8.00g <7.66g
  /dev/sdf1  raid-vg lvm2 a--   <8.00g <8.00g
  /dev/sdg1          lvm2 ---   <8.00g <8.00g

다음을 보면 3개의 스트라이프 개수를 지정하였지만 RAID-5의 패리티 특성으로 인해 한 개의 스트라이프가 더 사용된 걸 확인할 수 있습니다.

스트라이프 볼륨 , RAID 0 (효율+스피드)

 

스트라이프 볼륨은 스토리지 사이즈와 성능을 중시하는 논리 볼륨 생성 방식입니다. 스트라이프 볼륨은 디스크의 배열 사용과 관련된 RAID-0과 동작 방식이 동일합니다.

연속된 데이터를 두 개의 디스크에 나누어 저장하여 데이터의 입출력 속도를 증가시킵니다. 즉 속도가 두배 정도 단축됩니다(이론상)

따라서 볼륨의 사이즈는 두 디스크 크기의 합과 동일합니다. 다만 그만큼 안정성이 떨어지게 됩니다.

 

2. 미러 볼륨 , RAID 1 (안정성 우선)

 

서비스를 제공하는 하드웨어에서 이상이 발생했을 때, 서비스가 중단되지 않고 정상적으로 서비스를 제공하며, 데이터의 손실이 발생하지 않도록 하는 기능을 내결함성(Fault Tolerance)이라고 합니다. 미러 볼륨은 이러한 내결함성을 중시한 논리 볼륨 방식입니다.(안정성 중시)

 

따라서 여러개의 디스크로 구성된 볼륨 중 한 디스크가 손상되더라도, 다른 디스크에 전체 데이터가 남아있으므로, 정상적으로 서비스를 제공할 수 있습니다.(데이터 손상 예방)

또한, 아무리 많은 디스크를 배열한다 하더라도 한 개의 디스크를 사용하는 것과 같은 사이즈밖에 사용할 수밖에 없습니다.

 

RAID 2, RAID 3 , RAID4 는 잘 사용하지 않습니다. ->RAID 5 사용

RAID-5 , RAID-6

 

RAID5 는 RAID 0의 효율성과 RAID 1의 안정성(패리티 비트를 사용)의 장점을 합친 방식입니다.

하지만 역시 디스크가 2개이상 고장 난 다면 패리티를 통한 복구가 불가능합니다.

RAID 6는 RAID 5에서 패리티를 통한 복구 기능을 더 살리기 위해 패리티 기능을 하나 더 추가해줍니다.

1.물리 볼륨을 생성하기 위한 파티션 생성

 

우선, 각각의 디스크 전체를 물리 볼륨으로 구성하기 위해 MBR 파티션 방식으로 파티셔닝 한 뒤, 한 개의 파티션에 전체 섹터를 할당하였습니다.  이후 Id : 8e를 이용하여 Linux LVM으로 설정합니다

 

논리 볼륨을 구성하기 위해 파티션 정보를 확인할수 있는 명령은 lvmdiskscan입니다

 

 

아직 파티션만 나눴을 뿐 물리 볼륨을 생성하진 않은 상태입니다.(sda1 한 개 제외)

 

 

2. 물리 볼륨 생성 

이제 준비된 파티션을 사용하여 물리 볼륨을 생성합니다. 물리 볼륨 생성 명령어는 pvcreate입니다.

 

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

 

물리 볼륨 삭제 명령어는 pvremove입니다.

[root@localhost ~]# pvremove /dev/sdb1 /dev/sdc1
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.

다시 물리 볼륨 생성 상태로 돌아가 물리 볼륨 상태를 살펴봅시다 명령어는 pvdisplay입니다

 

[root@localhost ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "<8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <8.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               op1FKV-K7MM-qz3G-B9SI-DP4O-tp7r-mKETa8

 

3. 볼륨 그룹 (VG) 구성

 

볼륨 그룹 구성은 vgcreate 명령을 사용합니다. (옵션에서 한 개의 물리 볼륨은 반드시 선택하여야 하며, 이름을 지정해야 합니다)

 

옵션 : -s [PE사이즈]

 

옵션을 지정하면 PE사이즈를 지정하여 볼륨 그룹을 생성할 수 있습니다.

 

[root@localhost ~]# vgcreate test-vg /dev/sdb1 /dev/sdc1 /dev/sdd1
  Volume group "test-vg" successfully created

이번에도 vgdisplay를 이용하여 상태를 봅시다 

 

 

볼륨 그룹을 삭제하기 위한 명령어는 vgremove입니다.

 

[root@localhost ~]# vgremove test-vg-2
  Volume group "test-vg-2" successfully removed

 

4. 논리 볼륨(Logical Volume) 생성

 

 

논리 볼륨은 볼륨그룹에서 PE를 할당받아 생성 할 수 있습니다. 명령어는 lvcreate입니다. 

lv는 VG라는 메모리 풀에서 땡겨 쓴다고 생각하면 편합니다 ㅎㅎ..

 

 

lvcreate [option] volume-group-name

 

옵션

 

-l : 생성할 논리 볼륨의 크기를 지정(PE개수 지정)

-L : 생성할 논리 볼륨의 크기를 지정합니다(사이즈 지정)

-n :  생성할 논리 볼륨의 이름을 지정 합니다.

 

 

[root@localhost ~]# lvcreate -n test-lv1 -l 100 test-vg
  Logical volume "test-lv1" created.

 

LV를 보려면 앞과 마찬가지로 lvdisplay 명령어를 통해 확인 가능합니다 . 다만 /dev 안으로 하나씩 들어가서 이름을 통해 찾아야 합니다. ( LV size = PE의 기본사이즈 4MB * 지정한 논리볼륨크기 100 (PE100개 의미 ) )

 

 

+ Recent posts