본문으로 바로가기

Day-18 파일 시스템 관리 5

category Linux 2017. 1. 12. 20:03

LVM (Logical Volume Manager)
- Disk 파티션을 효율적으로 관리하고 사용할 수 있는 방식
- VLM2(Divice Mapper)를 이용



PV (Physical Volume, 물리 볼륨)
 /dev/sdb1, /dev/sdb2 같은 실제 하드디스크의 파티션을 의미


VG (Volume Group, 볼륨 그룹)
 여러개의 PV를 그룹으로 묶은 것을 뜻한다.
 예를 들어 /dev/sdb1, /dev/sdb2가 GRP1이라는 그룹을 만들때, GRP1을 VG라고 함


LV (Logical Volume, 논리 볼륨)
 VG를 다시 적절한 크기의 파티션으로 나눈 때 각 파티션을 LV라고 함


PE (Physical Extent)
 PV가 가진 일정한 블록을 의미


LE (Logical Extent)
 LV가 가진 일정한 블록을 의미

 

LVM 명령어


 (1) vgscan
   1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일을 생성한다.
                fdisk를 이용하여 파티션을 속성을 LVM으로 지정한 후에 이 명령을 사용한다.
   2) 사용법
     vgscan
 (2) pvcreate
   1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을 분할하고 LVM 속성으로 지정한 뒤에

               해당 파티션을 PV  로 만들 때 사용하는 명령이다.
   2) 사용법
     pvcreate 디바이스명
   3) 사용예
     pvcreate /dev/hdb1
 (3) vgcreate
   1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
   2) 사용법
     vgcreate 볼륨그룹명 디바이스명 디바이스명
   3) 사용예
     vgcreate lvm /dev/hda7 /dev/hdb1
      => lvm 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
 (4) vgdisplay
   1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
   2) 사용법
     vgdisplay [option] [볼륨그룹명]
   3) option
     -v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 gical Volume과 Physical Volume도 같이 보여준다.
   4) 사용예
    ㄱ. [root@xxx root]# vgdisplay
         => Volume Group의 내용을 보여준다.
    ㄴ. [root@xxx root]# vgdisplay -v lvm
         => lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
 (5) lvcreate
   1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
   2) 사용법
     lvcreate 옵션 볼륨그룹명
   3) option
     -L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabytes) 단위를 붙여 지정가능하다.
     -l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB  이다.
     -n: LV의 이름을 지정하는 옵션이다.
   4) 사용예
    ㄱ. [root@xxx root]# lvcreate -L 2000M -n backup lvm
         => lvm이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
    ㄴ. [root@xxx root]# lvcreate -l 250 -n data lvm
         => lvm이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
 (6) lvscan
   1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
   2) 사용법
     lvscan [option]
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     lvscan
 (7) lvdisplay
   1) 설명: Logical Volume의 정보를 보여준다.
   2) 사용법
     lvdisplay [option] LV명
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     [root@xxx root]# lvdisplay -v /dev/lvm/data
       => /dev/lvm/data라는 LV의 정보를 자세히 보여준다.
 (8) vgextend
   1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
   2) 사용법
     vgextend 볼륨그룹명 새PV명
   3) 사용예
     [root@xxx root]# vgextend lvm /dev/hdc1
       => lvm이라는 볼륨그룹에 /dev/hdc1을 추가한다.
 (9) vgreduce
   1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다.
   2) 사용법
     vgreduce 볼륨그룹명 PV명
   3) 사용예
     [root@xxx root]# vgreduce lvm /dev/hdc1
       => lvm이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
 (10) lvextend
   1) 설명: Logical Volume의 용량을 확장하는 명령이다.
   2) 사용법
     lvextend 옵션 [볼륨그룹명] LV명
   3) option
     -l +사이즈: 지정한 PE수만큼 용량을 늘린다.
     -L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes  단위이다.
   4) 사용예
     [root@xxx root]# lvextend -L +200M /dev/lvm/data
       => 기존의 용량에 추가로 200MB를 할당한다.
 (11) lvreduce
   1) 설명: Logical Volume의 용량을 줄이는 명령이다.
   2) 사용법
    lvreduce 옵션 [볼륨그룹병] LV명
   3) option
     -l -사이즈: 지정한 PE수만큼 용량을 줄인다.
     -L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes 이다.
   4) 사용예
     [root@xxx root]# lvreduce -L -500 /dev/lvm/data
      => /dev/lvm/data의 용량을 500MB 줄인다.
 (12) vgchange
   1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경 할 수 있다.
   2) 사용법
     vgchange 옵션 볼륨그룹명
   3) option
     -a y|n : 볼륨그룹의 사용여부를 지정한다.
     -l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
   4) 사용예
    ㄱ. [root@xxx root]# vgchange -a y lvm
         => lvm이라는 볼륨그룹을 활성화시킨다.
    ㄴ. [root@xxx root]# vgchange -a n lvm
         => lvm이라는 볼륨그룹을 비활성화시킨다.
    ㄷ. [root@xxx root]# vgchange -l 100 lvm
         => lvm이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
 (13) vgremove
   1) 설명: 볼륨그룹을 제거하는 명령이다.
   2) 사용법
     vgremove 볼륨그룹명
   3) 사용예
     [root@xxx root]# vgremove lvm
      => lvm이라는 볼륨그룹을 삭제한다.


LVM 생성 과정

Linear LVM 

 

1. 스냅샷(초기상태), 1GB Disk 2EA 추가, reboot
 #fdisk -l      //추가한 Disk 확인

 

2. LVM (LVM2) 패키지 설치
 #yum -y install lvm2         //LVM 패키지 설치
   

3. fdisk 이용 하티션 생성 (/dev/sdb1 /dev/sdc1)
"n" add a new partition                     //새로운 파티션
"p" primary partition                        //주파티션 선택
     partition number1                        //파티션 번호 1
     first cylinder                               //처음 실런터 부터
     last cylinder                                 //마지막 실린더 까지 모두 사용
     t change a partition's system id    //파티션 타입 지정
    8e Linux LVM                                 //LVM 선택
    p print the partition's table          //설정 내용 확인
    w write table to disk and exit       //저장 후 종료 확인

 

4. PV (Physical Volume) 생성
 #pvcreate [파티션명]
 #pvcreate /dev/sdb1                 //물리 볼륨 생성
 #pvcreate /dev/sdc1                 //물리 볼륨 생성

 #pvremove [파티션명]                //물리 볼륨 제거
 
5. VG (Volume Group) 생성
 #vgcreate [볼륨그룹명] [파티션] … [파티션]
 #vgcreate PracticeVG /dev/sdb1 /dev/sdc1     //PracticeVG VG생성
 #vgchange -a y PracticeVG                              //Active Yes
 

VG 제거
 #vgchange -n PracticeVG       //VG 중지
 #vgremove PracticeVG          //VG 제거

 

6. VG 구성 확인
 #vgdisplay [VG명]        //볼륨 그룹 확인
 #vgdisplay                   //전체 볼륨 그룹 확인


 VG Name               PracticeVG             // 볼륨 그룹 명 확인
    VG Size               1.98 GiB                // VG 크기
 PE Size               4.00 MiB                  // PE 크기
 Total PE              508                          // 총 PE의 갯수
 Alloc PE / Size       0 / 0                    // 할당된 PE
 Free  PE / Size       508 / 1.98 GiB    // 할당되지 않은 PE

 

7. VG(Volume Group)파티션 LV(Logical Volume)생성
 #lvcreate --size [용량크기] --name [LV명] [VG명]
 #lvcreate -L [크기] -n [LV명] [VG명]

 

 #lvcreate --size 500M --name PracticeLV1 PracticeVG
 #lvcreate --size 1.4G --name PracticeLV2 PracticeVG
 #lvcreate --extents 100%FREE --name PracticeLV3 PracticeVG

 #lvdisplay

 

8. 파일 시스템 생성 및 마운트
 #mkfs -t ext4 /dev/PracticeVG/PracticeLV1
 #mkfs -t ext4 /dev/PracticeVG/PracticeLV2
 #mkfs -t ext4 /dev/PracticeVG/PracticeLV3
 
 #mkdir /LV{1,2,3}
 #mount /dev/PracticeVG/PracticeLV1 /LV1
 #mount /dev/PracticeVG/PracticeLV1 /LV2
 #mount /dev/PracticeVG/PracticeLV1 /LV3

 

9. fstab 수정
 #blkid                      //LV UUID 확인
 #vi /etc/fstab        //수정 후 rebooting
 #df -h                    //마운트 확인

 

 

 

LV (Logical Volume) 삭제 및 용량 추가


 #umount /LV3
 #lvchange -an /dev/PracticeVG/PracticeLV3             //LV 비활성
 #lvremove /dev/PracticeVG/PracticeLV3                  //LV 제거
 #lvdisplay                                                                  //LV 제거 확인
 
 #lvextend --size +90M /dev/PracticeVG/PracticeLV2   //90메가 추가
 #lvcreate --extents
 (size는 크기, extents는 PE의 개수)
 
 #lvcreate --extents 1 --name PracticeLV3 PracticeVG
 //PE 개수를 이용하여 LV 생성
 
 #mkfs -t ext4 /dev/PracticeVG/PracticeLV3

 

 


VG (Volume Group) 용량 추가 후 LV용량 추가

 

 1G Disk 추가 및 fdisk, LVM 타입 선택

 #vgdisplay                                           //추가전 용량 확인
 #pvcreate /dev/sdd1                          //PV생성
 #vgextend PracticeVG /dev/sdd1       //생성한 PV를 VG추가
 #vgdisplay                                          //추가 후 용량 확인

 #vgdisplay
 FREE PE / Size   254 / 1016.00 MiB
 #lvextend --extents +254 /dev/PracticeVG/PracticeLV3
 #lvdisplay
 #mount /dev/PracticeVG/PracticeLV3
 #df -h

 #resize2fs /dev/PracticeVG/PracticeLV3
 //파일시스템 크기 변경 적용


LV 용량 축소

 

 #umount /LV1     //축소 시에는 umount 필수
 #e2fsck -f /dev/PracticeVG/PracticeLV1
 //축소 전 파일 시스템 점검

 #resize2fs -f /dev/PracticeVG/PracticeLV1 377M
 #lvreduce --size -100M /dev/PracticeVG/PracticeLV1
 #lvdisplay

 #lvextend --extents 100 /dev/PracticeVG/PracticeLV1
 // practiceLV1 PE개수를  100로 지정
 #lvextend --extents +25 /dev/PracticeVG/PracticeLV1
 // practiceLV1 PE개수에서 25개를 추가

Stripe LV

1. 스냅샷 초기화
2. 1GB Disk 2EA 추가
3. 파티션 생성, LVM 파티션 생성
4. PV생성
5. VG생성
 #vgcreate STRIPE_VG /dev/sdb1 /dev/sdc1
6. LV생성
 -i Disk 수를 지정
 #lvcreate -i 2 --extents 100%FREE --name STRIPE_LV STRIPE_VG
 #lvcreate -i 2 --extents 508 --name STRIPE_LV STRIPE_VG

Mirror LV

1. 스냅샷 초기화
2. 1GB Disk 2EA 추가
3. 파티션 생성, LVM 파티션 생성
4. PV생성
5. VG 생성
 #vgcreate Mirror_VG /dev/sdb1 /dev/sdc1 /dev/sdd1
6. LV생성
 #lvcreate [크기] [-m 사본개수] [LV명] [VG명] [PV원본, PV사본, PV로그]
 #lvcreate --extents 254 -m1 --name Mirror_LV Mirror_VG /dev/sdb1 /dev/sdc1 /dev/sdd1
7. LV확인
 #lvs
 #lvscan
 #lvdisplay
 #lvs -a -o+devices  // LV가 어느 장치에 할당되었는지 확인 가능
8. 파일시스템
 mkfs -t ext4 /dev/Mirror_VG/Mirror_LV
9. 마운트
 mkdir /LVM-mirror
 mount /dev/Mirror_VG/Mirror_LV /LVM-mirror
10. 장애테스트
#cat > test
#touch test1
#cp /boot/vm* ./test2

#dd if=/dev/zero of=/dev/sdb1 bs=1024 count=10

dd - 블록 단위로 파일을 복사하거나 파일 변환을 할 수 있는 명령
 (백업할때 사용하는 명령어)
/dev/zero : 0 갑을 가지는 특수 장치 파일

if=FILE : 표준 입력대신 지정한 파일을 입력으로 받는다.
of=FILE : 표준 출력대신 지정된 파일에 출력한다.
bs=BYTES : 한번에 BYTES씩 읽어 들이고 출력
count=BLOCKS : 입력한 회수 만큼 반복(복사)한다.

 

장애확인
#pvscan
#pvs
#pvdisplay

#vgreduce --removemissing --force Mirror_VG
// Mirror_VG 문제가 있는 PV제거하고 VG정보를 갱신

#vgextend Mirror_VG /dev/sdb1
#lvconvert /dev/Mirror_VG/Mirror_LV -m1 /dev/sdb1 /dev/sdc1 /dev/sdd1

'Linux' 카테고리의 다른 글

Day-20 소프트 웨어 관리하기  (0) 2017.01.14
Day-19 부팅 프로세스  (0) 2017.01.13
Day-17 파일 시스템 관리 4  (0) 2017.01.10
Day-16 파일 시스템 관리 3  (0) 2017.01.09
Day-15 파일 시스템 관리 2  (0) 2017.01.09