OS/LINUX Common

리눅스 LVM 생성

장피디 2015. 8. 20. 12:23
반응형

출처 : http://blog.daum.net/99lib/9

가져온 곳 : 
블로그 >System engineer
|
글쓴이 : bonnie_clyde| 원글보기




파일시스템 개념을 잡고 가야할듯..

ext4 가 확장성이 있고 ext3는 확장성이 없다는데, 내 기억으로는 LVM을 확장해줬던 기억이 있어서 갑자기 혼란스러웠다.

파일시스템 자체를 확장하는 것이 아니라 논리볼륨을 더 확장한 것 뿐이라서 결국엔 아닌 것이었으나 내가 본론적으로 잘 이해를 못하고 있음을 깨달아

다시 정리하고자 한다.

 

* 보통은 ~~

디스크를 붙이고 -> 파티션을 생성하고 -> 해당 파티션을 포맷하고(파일시스템을 만들고) -> 마운트

* 요기선~

디스크를 붙이고 -> 파티션을 LVM타입으로 생성하고 -> 물리볼륨을 만들고 -> 볼륨그룹을 만들고 -> 볼륨그룹에서 논리볼륨을 만들고 -> 포맷 -> 마운트

 

우선 LVM을 만드는 순서부터 살펴보자면,

 

 

 

 

  1. 하드디스크를 LVM을 만들 수 있게 파티션 생성
  2. 물리볼륨 생성 (pvcreate)
  3. 위 물리볼륨들을 볼륨그룹을 생성하여 묶는다. (vgcreate)
  4. 위 볼륨그룹을 원하는 크기대로 나눠 논리볼륨 생성 (lvcreate)
  5. 파일시스템으로 포맷

 

 

1. 하드디스크를 LVM 타입으로 파티션 생성 .. (이라는데 굳이 그럴 필욘 없는듯..) 

1)  fdisk -l 하여 LVM 설정할 하드드라이브 (디스크)의 디바이스명을 확인

(fdisk -l /dev/sda 이런 식으로 하면 /dev/sda 의 파티션 내용을 확인하는 것이고, 생략하면 모든 하드드라이브의 파티션을 보여준다.)

ex) fdisk -l 실행화면

 

이런 식으로, fdisk -l /dev/sda 를 하면 sda 하드 드라이브의 논리적 파티션들의 정보가 보여진다.

df -h 를 하게 되면 , /dev/sda 인 하드드라이브가 보이는 것이 아니라 sda1, sda2... 이런 파티션들의 정보가 보여진다. sda는 안 보인다.

2)  fdisk를 사용하여 LVM 타입으로 파티션을 생성한다.

# fdisk /dev/hdb

n 엔터 (새 파티션 추가)

-> p 엔터 (primary partition (1-4)) ; 주파티션이면 p, 확장파티션이면 e

-> 1 엔터 (파티션 넘버 입력)

-> 엔터 (First cylinder 1-1792, default 1:)

-> 엔터 (last cylinder)

-> t 엔터 (change a partition's system id)

-> l 엔터 (type L to list codes)

-> 8e (linux LVM이 8e다)

-> w 엔터 (write table to disk and exit)

# fdisk /dev/hdc , hdd 위와 동일하게 설정

3)  fdisk -l 하여 LVM 타입으로 파티션이 설정되었음을 확인

 

2. 물리볼륨 생성

1) pvcreate 로 물리볼륨을 생성

 

[root@localhost ~]# pvcreate /dev/hdb1

Physical volume "/dev/hdb1" successfully created

 

(윗단계에서 fdisk /dev/hdb 했으니깐... 이 디스크가 hdb1, hdb2 ... 이런 식으로 쪼개졌을 거란 말이지. 근데 위에선 그냥 한 디스크를 통으로 한 파티션으로 생성..한듯.)

 

[root@localhost ~]# pvcreate /dev/hdc1

[root@localhost ~]# pvcreate /dev/hdd1

 

2) pvdisplay하여 물리볼륨 확인

 

 

3. 볼륨그룹 설정

1) vgcreate 하여 볼륨그룹 설정 (위에서 생성했던 물리볼륨들을)

[root@localhost ~]# vgcreate myvg /dev/hdb1 /dev/hdc1 /dev/hdd1

               Volume group "myvg" successfully created

2) vgdisplay 하여 볼륨그룹을 확인

 

4. 논리볼륨 생성

1) lvcreate 하여 논리볼륨을 두 개 (하나는 7GB , 하나는 나머지 공간) 생성

  (여기서 소문자 l을 쓰면 pe 의 개수로 용량을 지정하게 된다. 상세  LVM 내용은 다음 포스트 참조.)

 

[root@localhost ~]# lvcreate -n dtlv -L 7GB myvg

Logical volume "dtlv" created

[root@localhost ~]# lvcreate -n bklv -l 100%FREE myvg

Logical volume "bklv" created

 

2) lvdisplay 하여 논리볼륨 확인

 

 

 

 

5. 파일시스템 포맷 및 마운트

 

이제서야 포맷을 하게 된다~!

 

1) 위에서 생성한 논리볼륨을 파일시스템 포맷

 

[root@localhost ~]# mkfs.ext3 /dev/myvg/dtlv

....

[root@localhost ~]# mkfs.ext3 /dev/myvg/bklv

 

2) 마운트

 

[root@localhost ~]# mkdir /mnt/data

[root@localhost ~]# mkdir /mnt/back

[root@localhost ~]# mount -t ext3 /dev/myvg/dtlv /mnt/data

[root@localhost ~]# mount -t ext3 /dev/myvg/bklv /mnt/back

 

3) df -l 하여 마운트 확인

 

4) 부팅 시 자동으로 디스크를 읽어줄 수 있게 fstab 설정

#vi /etc/fstab

/dev/myvg/dtlv         /mnt/data         ext3      defaults     0    0

 

 

fdisk 해서 나중에 -l 치면 나오는 애들은.... list known partition types 이다. 파일시스템 리스트가 아니라 파티션 타입~!

/proc/filesystems는 파일시스템 타입이고..

 

즉, 처음에 내가 가졌던 의문,

기본적으로 fdisk해서 만들었던 파티션들이 df -T 하면 나오는 파일시스템 타입에는 왜 ext3가 있느냐,

fdisk 해서 l로 치면 나오는 타입에는 ext3가 없는데?

라는 우문에는, 파티션 타입이라 다른거고..

기본적으로 fdisk로 해서 만든 파티션을 만든 후 반드시 포맷하고 마운트를 시켜야 한다.

나는 fdisk하면 바로 포맷이 되서 쓸 수 있는 건줄 착각하고 있었다....ㅋㅋ

 

 

+) 그런데 굳이 물리볼륨을 만들 필요 없이 바로 파티션을 볼륨그룹으로 묶을 순 없는건가?

왜 굳이 물리볼륨을 중간에 추가적으로 만들어서 (그냥 파티션을 그것도) 작업을 한번 더하는거지?..

 

 

+) dmc-emass 이관 작업시, cx4-80 스토리지의 디스크를 추가로 할당하여 붙여줄 ?,

스토리지 엔지니어가 미리 파티션까지 다 할당해놓았었다...

나는 이 때 파티션을 LVM  타입으로 만들어야 했는데 엔지니어가 말도 없이 그냥 리눅스 타입으로 해서 당황스러웠었다 ㅋㅋㅋ

LVM이 잘 생성되긴 했었는데...

그런데 fdisk -l 하면 파티션 테이블이 존재하지 않는다는 메시지가 뜬다.

나는 여튼 이미 엔지니어가 파티션까지 다 만들어버렸으니 바로 물리볼륨그룹 작업으로 들어갔었는데...



----------------------------------------------------------------------------------------

출처 : http://attiadmin.guyweb.co.kr/linux/lvm.html



1. LVM이란?
 (1) 개요: 리눅스 설치시나 하드디스크 추가시에 파티션이라는 것을 나누고 공간을 할당한다. 이 
          때 한번 설정한 공간을 고정이 되어 변경이나 추가가 불가능하다. LVM(Logical Volume 
          Manager)은 파티션을 원하는 대로 추가하거나 제거하고 그 크기도 조절할 수 있도록 
          해주는 방법이다.
 (2) 관련용어
   1) 물리적 볼륨(PV:Physical Volume): 실제로 나눈 파티션을 말한다. 즉 /dev/hda8, /dev/hdb1 등
                                      을 말한다. LVM에서는 이러한 물리적 볼륨을 하나의 구성원
                                      으로 받아 들이는 형식이다.
   2) 물리적 확장(PE:Physical Extents): 일종의 블럭같은 것으로 실제 데이터가 저장되는 공간을 
                                       말한다. 보통 1PE가 약 4MB정도 차지한다.
   3) 볼륨그룹(VG:Volume Group): 물리적 볼륨이 모여서 하나의 VG를 이룬다. 이것은 더 크게 말하
                                면 지정한 크기의 PE가 모여 생성되는 하나의 큰 덩어리라고 할 수
                                있다.
   4) 논리적볼륨(LV:Logical Volume): 이 논리적 볼륨이 우리가 흔히 쓰는 정규파티션과 같다. 실제
                                    만들어서 사용하는 것이 바로 이 LV이다.

2. LVM 설정하기
 (1) 설명: /dev/hda8(약 800MB)과 /dev/hda9(약 800MB)을 lvm이라는 볼륨그룹으로 생성하고 1.2GB는
          /data라는 디렉토리로 400MB는 /backup으로 구성해보자. 여기서 /data는 처음에 1GB로 
          할당하고 추가로 영역을 200MB 확장하는 형태로 구성한다.
 (2) 설정1 : 1000MB의 /data 로 구성
   1) fdisk를 이용하여 파티션 속성을 변경: fdisk /dev/hda 실행후에 t, 해당 파티션 선택, 8e, w 
                                          을 누르고 재부팅한다.
   2) 디스크에 있는 볼륨그룹을 검색하고 /etc/lvmtab 파일 생성
     [root@www root]# vgscan
   3) 물리적 볼륨(PV:Physical Volume) 생성
     [root@www root]# pvcreate /dev/hda8
     pvcreate -- physical volume "/dev/hda5" successfully created

     [root@www root]# pvcreate /dev/hda9
     pvcreate -- physical volume "/dev/hda8" successfully created
   4) 생성된 PV를 특정한 볼륨그룹(lvm)에 추가시킨다.
     [root@www root]# vgcreate lvm /dev/hda8 /dev/hda9
     vgcreate -- INFO: using default physical extent size 4 MB
     vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
     vgcreate -- doing automatic backup of volume group "lvm"
     vgcreate -- volume group "lvm" successfully created and activated
   5) 생성된 볼륨그룹 검사한다.
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                0
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       0 / 0
     Free  PE / Size       424 / 1.66 GB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- No logical volumes defined in "lvm" ---


     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212
   6) 논리적 볼륨(LV:Logical Volume) 생성
     [root@www root]# lvcreate -L 1000M -n data lvm
     lvcreate -- doing automatic backup of "data"
     lvcreate -- logical volume "/dev/lvm/data" successfully created
   7) LV생성확인
     [root@www root]# lvscan
     lvscan -- ACTIVE            "/dev/lvm/data" [1000 MB]
     lvscan -- 1 logical volumes with 1000 MB total in 1 volume group
     lvscan -- 1 active logical volumes
   8) VG 확인
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                1
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       250 / 1000 MB
     Free  PE / Size       174 / 696 MB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- Logical volume ---
     LV Name                /dev/lvm/data
     VG Name                data
     LV Write Access        read/write
     LV Status              available
     LV #                   1
     # open                 0
     LV Size                1000 MB
     Current LE             250
     Allocated LE           250
     Allocation             next free
     Read ahead sectors     1024
     Block device           58:0
     

     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 0

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 174
      => 논리적 볼륨부분이 나타나고 물리적 볼륨에서 /dev/hda8은 모두 사용중인 것으로 나타난다.
   9) 파일시스템 생성
     [root@www root]# mkfs -t ext3 /dev/lvm/data
   10) 마운트하여 사용한다.
      [root@www root]# mount -t ext3 /dev/lvm/data /data
 (3) 참고
   1) 설명: LVM을 시스템 재부팅후에도 사용하려면 /etc/fstab파일에 등록하면 된다.
   2) 예
     /dev/lvm/data              /data                ext3    defaults        0 0
 (4) 설정2: /data 디렉토리 200MB 추가하기
   1) 설명: lvextend 명령을 이용하여 공간을 늘리고 lvscan명령으로 확인하도록 한다.
   2) 방법
    ㄱ. [root@www root]# lvextend -L +200M /dev/lvm/data
          => 기존의 용량에 추가로 200MB를 할당한다.
    ㄴ. [root@www root]# lvscan
 (5) 설정2: 남은 공간(약 400MB)를 /backup 디렉토리로 사용하기
   1) 설명: 남은 공간을 확인하려면 vgdisplay -v 명령을 내려서 Free PE값을 확인하고 해당 PE값을
           할당하는 것이 좋다. lvcreate 로 남은 PE값을 지정하고 Logical Volume을 생성한다.
   2) 방법
    ㄱ. [root@www root]# lvcreate -l 124 -n backup lvm
         => lvm이라는 볼륨그룹에 backup 이라는 Logical Volume을 생성하고 크기는 약 124PE
          (약 496MB)를 할당한다.
    ㄴ. [root@www root]# mkfs -t ext3 /dev/lvm/backup
         => 파일시스템을 생성한다.
    ㄷ. [root@www root]# mount -t ext3 /dev/lvm/backup /backup
         => 마운트하여 사용한다.

3. 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@www root]# vgdisplay
         => Volume Group의 내용을 보여준다. 
    ㄴ. [root@www root]# vgdisplay -v lvm
         => lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
 (5) lvcreate
   1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
   2) 사용법
     lvcreate 옵션 볼륨그룹명
   3) option
     -L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt
        es) 단위를 붙여 지정가능하다.
     -l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB
        이다.
     -n: LV의 이름을 지정하는 옵션이다. 
   4) 사용예
    ㄱ. [root@www root]# lvcreate -L 2000M -n backup lvm
         => lvm이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
    ㄴ. [root@www 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@www root]# lvdisplay -v /dev/lvm/data
       => /dev/lvm/data라는 LV의 정보를 자세히 보여준다.
 (8) vgextend
   1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
   2) 사용법
     vgextend 볼륨그룹명 새PV명
   3) 사용예
     [root@www root]# vgextend lvm /dev/hdc1
       => lvm이라는 볼륨그룹에 /dev/hdc1을 추가한다.
 (9) vgreduce
   1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다.
   2) 사용법
     vgreduce 볼륨그룹명 PV명
   3) 사용예
     [root@www 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@www root]# lvextend -L +200M /dev/lvm/data
       => 기존의 용량에 추가로 200MB를 할당한다.
 (11) lvreduce
   1) 설명: Logical Volume의 용량을 줄이는 명령이다.
   2) 사용법
    lvreduce 옵션 [볼륨그룹병] LV명
   3) option
     -l -사이즈: 지정한 PE수만큼 용량을 줄인다.
     -L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes
                이다.
   4) 사용예
     [root@www 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@www root]# vgchange -a y lvm
         => lvm이라는 볼륨그룹을 활성화시킨다.
    ㄴ. [root@www root]# vgchange -a n lvm
         => lvm이라는 볼륨그룹을 비활성화시킨다.
    ㄷ. [root@www root]# vgchange -l 100 lvm
         => lvm이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
 (13) vgremove 
   1) 설명: 볼륨그룹을 제거하는 명령이다.
   2) 사용법
     vgremove 볼륨그룹명
   3) 사용예
     [root@www root]# vgremove lvm
      => lvm이라는 볼륨그룹을 삭제한다.

- rename


To rename an existing logical volume, use the lvrename command.

Either of the following commands renames logical volume lvold in volume group vg02 to lvnew.

lvrename /dev/vg02/lvold /dev/vg02/lvnew
lvrename vg02 lvold lvnew

 

반응형