ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LVM 생성 및 관리
    linux/centOS 2018. 6. 22. 16:20

    ☆ LVM이란?

     

    : LVM(Logical Volume Manage)는 물리적인 디스크를 논리적 볼륨그룹으로 구성해서 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기 만큼의 논리볼륨을 할당하여 사용하는 방법으로, 여러 개의 디스크를 하나의 논리적인 볼륨그룹(VG)으로 구성할 수 있으며, 각 논리볼륨(LV)는 독립적이므로, 하나의 디스크에도 여러 가지의 파일 시스템을 설치할 수 있다. 또한 디스크의 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설이 가능하고데이터량이 감소하여 더 이상 많은 양의 저장공간이 필요 없는 경우, 볼륨그룹에 속한 물리볼륨 개수를 축소하여 용량 감소가 가능하다.

     

    가상 볼륨 방식 장점: () 확장성, () 안정성, () 편의성(관리 용이)

     

     

     

    ☆ LVM 구성 요소

     

    LVMPV(Physical Volume), VG(Volume Group), LV(Logical Volume)으로 구성된다

     

    구성요소

    설명

    Physical Volume

    PV는 하나의 물리적인 DiskLVM을 사용할 수 있도록 LVM 데이터 구조를 생성한 것을 말한다

    디스크에 PV가 생성되면 LVM은 디스크를 하나의 물리볼륨으로 간주하게 되고, 볼륨그룹에 포함시킬 수 있게 된다. 따라서 하나의 디스크를 몇 개의 섹션은 논리볼륨으로, 몇 개의 섹션은 전체디스크로 관리하는 등의 방법은 적용 할 수 없다.

    () 물리적인 디스크(EX:/dev/sda) or 물리적인 파티션(EX:/dev/sda1)

    Volume Group

    VG는 하나 또는 그 이상의 PV를 포함하며, LV를 생성할 수 있는 Volume Group의 집합이다

    vg00은 부팅정보와 OS가 있는 root Volume Group으로 변경이 불가능하다.

    관리자가 관리상의 편의를 위해 DB의 경우에는 vgdb##, 일반적인 파일시스템의 경우에는vgfil##등으로 VG이름을 지정하여 사용한다.

    () 가상 디스크

    Logical Volume

    LV는 하나 또는 그 이상의 PV로 구성되어 있는 VG 공간을 전체 또는 분할하여 일반 파일시스템, swap or dump area, raw disk로 사용할 수 있도록 논리적으로 할당한공간이다

    운영 중 공간이 부족할 경우 볼륨그룹에 속해 있는 또 다른 물리볼륨을 사용하여 확장이 가능하고, 필요하다면 크기를 변경하거나 다른 디스크로 데이터를 옮길 수 있다.

    Volume Group vg00에 속한 Logical Volume lvol1,lvol2,lvol3은 각각 /stand, primary swap, / 디렉토리로 변경이 불가능 하다.

    () 가상 파티션

     

     

     

    ☆ LVM 작동 방식

     

    PE (Physical Extent) : PV가 갖는 일정한 블록 (mapping 하는 단위)

     

    디스크에 PV를 생성하게 되면, LVM은 주소를 지정할 수 있는 PE(Physical Extent)라는 단위로 각 물리 디스크를 나눈다. extent는 주소 0번부터 시작하여 1 증분하며 순차적으로 디스크에 할당되고, PE의 크기는 볼륨 그룹을 만들 때 구성할 수 있다. 그리고 PE의 크기는 default 값이 4MB이며, 이 값은 필요에 따라 볼륨 그룹을 생성 시 1MB에서 256MB 사이의 값으로 지정할 수 있다.

     

     

    LE (Logical Extent) : LV가 갖는 일정한 블록

     

    디스크에 PV를 생성하고, 생성된 PV를 이용하여 VG(Volume Group)을 구성한 후 이 VGLV(Logical Volume)를 생성할 수 있다. LV의 기본 할당 단위를 LE(Logical Extent)라고 하는데, LE PV 생성 시 나누어진 PE 영역과 Mapping된다. 따라서 PE의 크기가 4MB이면 LE의 크기도 4MB 된다. 그리고 LV의 크기는 구성된 LE의 개수 또는 할당할 디스크 용량에 의해 결정된다.

     

     

    LVMData Access 

     

    앞서 말한 바와 같이 LVM 논리볼륨에 디스크 공간을 할당할 때 LVM은 주소 0에서 시작하여 각 디스크에 순차적으로 할당된 PE 할당된 LE Mapping Table을 만든다. 따라서 LVM은 그림 9.3과 같이 실제 데이터가 물리 볼륨에 상주하는 위치와 상관없이 논리 볼륨을 Access 함으로써 데이터에 액세스 한다.

     

     

    LVMroot 파티션

     

    논리 볼륨이 루트, 부팅, 기본 스왑 또는 덤프에 사용될 경우에는 PE영역은 연속적이어야 한다. , 단일 물리 볼륨에 공백 없이 PE를 할당해야한다. 그러나 루트가 아닌 디스크의 논리 볼륨의 LE에 대응되는 PE는 물리 볼륨에서 연속적이지 않거나 전혀 다른 디스크에 상주할 수 있다. 결과적으로 한 논리 볼륨에 속한 파일 시스템이 둘 이상의 디스크에 상주할 수 있다.

     

     

    Mirroring (two way mirroring, three way mirroring이 있다.)

     

    미러링되거나 스트라이프된 논리 볼륨을 제외하고 각 LE 하나의 PE에 매핑된다. 그러나 미러링된 논리 볼륨의 경우, 단일 또는 이중 미러링을 사용하는지에 따라 각 LE는 두 개 또는 세 개의 PE와 매핑된다. 예를 들어, 미러 사본이 하나인 경우에는 각 LE가 두 개의 PE에 매핑되는데 하나의 확장 영역은 원본에 대한 것이고 다른 하나는 미러 사본에 대한 것이다.

     

     

     

    LVM 구성실습

     

     

    LVM 1 / LVM 2

    LVM 1 - RHEL 3(Redhat Enterprise Linux 3)/CentOS 3.X

    LVM 2 - RHEL 4(Redhat Enterprise Linux 4)/CentOS 4.X

     

    LVM 최대 크기 지원(64-bits CPU) - 8 Exa Bytes 까지 지원

    (B -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB)

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

     

     

    [EX1] 4장의 디스크 추가 후 파티션 설정

     

    ------ VMWare 환경 -----

    () 서버 전원 OFF

    # poweroff

    () 4장의 디스크 추가(용량: 1G)

    VMWare > VM > Setting > Add > Hard Disk

    > Create a new virtual disk > SCSI > 1G > .... > FINISH

    4장의 디스크 추가(/dev/sdc, /dev/sdd, /dev/sde, /dev/sdf)

    () 서버 전원 ON

    -> 시스템이 부팅되고 로그인 후 확인

    -> # ls -l /dev/sd?

     

    디스크 확인

    # ls -l /dev/sd?

    brw-r----- 1 root disk 8, 0 Apr 24 17:41 /dev/sda /* OS 디스크 */

    brw-r----- 1 root disk 8, 16 Apr 24 17:41 /dev/sdb /* /testmount 디스크 */

    brw-r----- 1 root disk 8, 32 Apr 24 17:41 /dev/sdc /* 새로 장착된 디스크 */

    brw-r----- 1 root disk 8, 48 Apr 24 17:41 /dev/sdd /* 새로 장착된 디스크 */

    brw-r----- 1 root disk 8, 64 Apr 24 17:41 /dev/sde /* 새로 장착된 디스크 */

    brw-r----- 1 root disk 8, 80 Apr 24 17:41 /dev/sdf /* 새로 장착된 디스크 */

     

    디스크 파티션 설정(EX: /dev/sdc1, System Partition ID: 8e)

    한장의 디스크를 하나의 파티션(EX: /dev/sdc1)으로 설정 한다.

    LVM 설정을 위해 시스템 아이디(System Partition ID)8e로 설정한다.

     

    # fdisk /dev/sdc

    Command (m for help): m

    Command action

    a toggle a bootable flag

    b edit bsd disklabel

    c toggle the dos compatibility flag

    d delete a partition

    l list known partition types

    m print this menu

    n add a new partition

    o create a new empty DOS partition table

    p print the partition table

    q quit without saving changes

    s create a new empty Sun disklabel

    t change a partition's system id

    u change display/entry units

    v verify the partition table

    w write table to disk and exit

    x extra functionality (experts only)

     

    Command (m for help): p

     

    Disk /dev/sdc: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

     

    Command (m for help): n

    Command action

    e extended

    p primary partition (1-4)

    p

    Partition number (1-4): 1

    First cylinder (1-130, default 1): <ENTER>

    Using default value 1

    Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): <ENTER>

    Using default value 130

     

    Command (m for help): p

     

    Disk /dev/sdc: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sdc1 1 130 1044193+ 83 Linux

     

    Command (m for help): t

    Selected partition 1

    Hex code (type L to list codes): L

     

    0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris

    1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-

    2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-

    3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-

    4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx

    5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data

    6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .

    7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility

    8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt

    9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access

    a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O

    b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor

    c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs

    e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT

    f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/

    10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b

    11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor

    12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor

    14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary

    16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS

    17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE

    18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto

    1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep

    1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT

    Hex code (type L to list codes): 8e

    Changed system type of partition 1 to 8e (Linux LVM)

     

    Command (m for help): p

     

    Disk /dev/sdc: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sdc1 1 130 1044193+ 8e Linux LVM

     

    Command (m for help): w

    The partition table has been altered!

     

    Calling ioctl() to re-read partition table.

    Syncing disks

     

    # fdisk /dev/sdd

    -> disk를 하나의 주 파티션으로 생성(/dev/sdd1, System ID : 8e)

     

    # fdisk /dev/sde

    -> disk를 하나의 주 파티션으로 생성(/dev/sde1, System ID : 8e)

    # fdisk /dev/sdf

    -> disk를 하나의 주 파티션으로 생성(/dev/sdf1, System ID : 8e)

     

    # fdisk -l /dev/sd[cdef] (# fdisk -l | grep LVM)

    Disk /dev/sdc: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sdc1 1 130 1044193+ 8e Linux LVM

     

    Disk /dev/sdd: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sdd1 1 130 1044193+ 8e Linux LVM

     

    Disk /dev/sde: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sde1 1 130 1044193+ 8e Linux LVM

     

    Disk /dev/sdf: 1073 MB, 1073741824 bytes

    255 heads, 63 sectors/track, 130 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Device Boot Start End Blocks Id System

    /dev/sdf1 1 130 1044193+ 8e Linux LVM

     

     

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

    (1) 물리적인 볼륨 생성(PV: Physical Volume)

     

    생성한 디스크를 LVM으로 사용하기 위한 선처리 작업으로 물리적인 볼륨으로 생성해 준다.

     

    (명령어 형식)

    PV 생성

    # pvcreate /dev/sda1

    # pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1

    # pvcreate /dev/sd[abc]1

    # pvcreate /dev/sda /dev/sdb /dev/sdc

     

    PV 삭제

    # pvremove /dev/sda1

    # pvremove /dev/sda1 /dev/sdb1 /dev/sdc1

    # pvremove /dev/sd[abc]1

     

    PV 정보 확인

    # pvs

    # pvscan

    # pvdisplay (# pvdisplay /dev/sdc1)

    # lvmdiskscan

     

     

     

    [EX] PV 생성 및 삭제 실습

    PV 생성 및 확인

    # pvcreate /dev/sdc1 (# pvcreate /dev/sd[cde]1)

    Writing physical volume data to disk "/dev/sdc1"

    Physical volume "/dev/sdc1" successfully created

     

    [참고] 에러메세지

    # pvcreate /dev/sdc1

    pvcreate /dev/sdc1

    Can't open /dev/sdc1 exclusively. Mounted filesystem?

    # df h

    -> /oracle 마운트 확인

    # umount /oracle

    # vi /etc/fstab

    # pvcreate /dev/sdc1

     

    # pvcreate /dev/sdd1

    Writing physical volume data to disk "/dev/sdd1"

    Physical volume "/dev/sdd1" successfully created

     

    # pvcreate /dev/sde1

    Writing physical volume data to disk "/dev/sde1"

    Physical volume "/dev/sde1" successfully created

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 lvm2 -- 1019.72M 1019.72M

    /dev/sdd1 lvm2 -- 1019.72M 1019.72M

    /dev/sde1 lvm2 -- 1019.72M 1019.72M

     

    # pvscan

    PV /dev/sdc1 lvm2 [1019.72 MB]

    PV /dev/sdd1 lvm2 [1019.72 MB]

    PV /dev/sde1 lvm2 [1019.72 MB]

    Total: 3 [2.99 GB] / in use: 0 [0 ] / in no VG: 3 [2.99 GB]

     

     

    # pvdisplay /dev/sdc1 (# pvdisplay)

    "/dev/sdc1" is a new physical volume of "1019.72 MB"

    --- NEW Physical volume ---

    PV Name /dev/sdc1

    VG Name

    PV Size 1019.72 MB

    Allocatable NO

    PE Size (KByte) 0

    Total PE 0

    Free PE 0

    Allocated PE 0

    PV UUID 75kFvq-OwJC-rAAj-lCet-XBpL-M0JS-30xqZa

     

    # lvmdiskscan

    /dev/ramdisk [ 16.00 MB]

    /dev/ram [ 16.00 MB]

    /dev/root [ 16.54 GB]

    /dev/ram2 [ 16.00 MB]

    /dev/sda2 [ 1.00 GB]

    /dev/ram3 [ 16.00 MB]

    /dev/sda3 [ 502.03 MB]

    /dev/ram4 [ 16.00 MB]

    /dev/ram5 [ 16.00 MB]

    /dev/sda5 [ 502.00 MB]

    /dev/ram6 [ 16.00 MB]

    /dev/sda6 [ 502.00 MB]

    /dev/ram7 [ 16.00 MB]

    /dev/sda7 [ 502.00 MB]

    /dev/ram8 [ 16.00 MB]

    /dev/sda8 [ 502.00 MB]

    /dev/ram9 [ 16.00 MB]

    /dev/ram10 [ 16.00 MB]

    /dev/ram11 [ 16.00 MB]

    /dev/ram12 [ 16.00 MB]

    /dev/ram13 [ 16.00 MB]

    /dev/ram14 [ 16.00 MB]

    /dev/ram15 [ 16.00 MB]

    /dev/sdb1 [ 1019.72 MB]

    /dev/sdc1 [ 1019.72 MB] LVM physical volume

    /dev/sdd1 [ 1019.72 MB] LVM physical volume

    /dev/sde1 [ 1019.72 MB] LVM physical volume

    /dev/sdf1 [ 1019.72 MB]

    3 disks

    22 partitions

    0 LVM physical volume whole disks

    3 LVM physical volumes

     

    PV 삭제 및 확인

    # pvremove /dev/sdc1 /dev/sdd1 /dev/sde1 (# pvremove /dev/sd[cde]1)

    Labels on physical volume "/dev/sdc1" successfully wiped

    Labels on physical volume "/dev/sdd1" successfully wiped

    Labels on physical volume "/dev/sde1" successfully wiped

     

    # pvs

    #

    -> 구성된 정보가 없다.

     

    PV 다시 생성

    # pvcreate /dev/sd[cde]1 (# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1)

    Writing physical volume data to disk "/dev/sdc1"

    Physical volume "/dev/sdc1" successfully created

    Writing physical volume data to disk "/dev/sdd1"

    Physical volume "/dev/sdd1" successfully created

    Writing physical volume data to disk "/dev/sde1"

    Physical volume "/dev/sde1" successfully created

     

    [참고] PV 생성시 PV 개수가 많은 경우의 예

    # pvcreate /dev/sd[abcde][12]

    or

    # pvcreate /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 .....

     

     

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

    (2) 물리적인 볼륨 그룹생성(VG: Volume Group)

     

    물리적인 볼륨을 생성하였으면 각각의 물리적인 볼륨을 하나의 그룹으로 생성해 준다.

     

    (명령어 형식)

    VG 생성

    # vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1

    # vgcreate vg1 /dev/sd[cde]1

     

    VG 삭제

    # vgremove vg1

    # vgremove /dev/vg1

     

    VG에 디스크 추가/제거

    # vgextend vg1 /dev/sdf1

    # vgreduce vg1 /dev/sdf1

     

    VG 이름 변경

    # vgrename /dev/vg1 /dev/vg1_backup

    # vgrename vg1 vg1_backup

     

    VG 정보 확인

    # vgs

    # vgscan

    # vgdisplay (# vgdisplay vg1)

     

     

     

    [EX] VG 생성 및 삭제 실습

    VG(EX: vg1) 생성 및 확인

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 lvm2 a-- 1016.00M 1016.00M

    /dev/sdd1 lvm2 a-- 1016.00M 1016.00M

    /dev/sde1 lvm2 a-- 1016.00M 1016.00M

     

    # vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1 (# vgcreate vg1 /dev/sd[cde]1)

    Volume group "vg1" successfully created

     

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M

     

    # vgs

    VG #PV #LV #SN Attr VSize VFree

    vg1 3 0 0 wz--n- 2.98G 2.98G

     

    # vgscan

    Reading all physical volumes. This may take a while...

    Found volume group "vg1" using metadata type lvm2

     

     

    # vgdisplay (# vgdisplay vg1)

    --- Volume group ---

    VG Name vg1

    System ID

    Format lvm2

    Metadata Areas 3

    Metadata Sequence No 1

    VG Access read/write

    VG Status resizable

    MAX LV 0

    Cur LV 0

    Open LV 0

    Max PV 0

    Cur PV 3

    Act PV 3

    VG Size 2.98 GB

    PE Size 4.00 MB

    Total PE 762 /* 762 X 4M = 2.98GB */

    Alloc PE / Size 0 / 0

    Free PE / Size 762 / 2.98 GB

    VG UUID y0kBYP-Txeh-a2J0-WjgK-EN3f-0027-MEEhU7

     

    생성된 VG(EX: vg1) 삭제 및 확인

    # vgremove vg1 (# vgremove /dev/vg1)

    Volume group "vg1" successfully removed

     

    # vgs

    No volume groups found

    -> 구성된 정보가 없다.

     

    VG(EX: vg1) 다시 생성

    # vgcreate vg1 /dev/sd[cde]1

    Volume group "vg1" successfully created

     

    # vgs

    VG #PV #LV #SN Attr VSize VFree

    vg1 3 0 0 wz--n- 2.98G 2.98G

     

    현재 디스크 구성

    /dev/sdc1 - PV ------+

    /dev/sdd1 - PV +-----> vg1

    /dev/sde1 - PV ------+

    /dev/sdf1 - ?

     

    새로운 PV(EX: /dev/sdf1) 생성후 VG(EX: vg1)에 추가 및 확인

    # fdisk -l | grep LVM

    /dev/sdc1 1 130 1044193+ 8e Linux LVM

    /dev/sdd1 1 130 1044193+ 8e Linux LVM

    /dev/sde1 1 130 1044193+ 8e Linux LVM

    /dev/sdf1 1 130 1044193+ 8e Linux LVM

     

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 vg1 lvm2 a-- 1016.00M 1016.00M

    /dev/sdd1 vg1 lvm2 a-- 1016.00M 1016.00M

    /dev/sde1 vg1 lvm2 a-- 1016.00M 1016.00M

     

    # pvcreate /dev/sdf1

    Writing physical volume data to disk "/dev/sdf1"

    Physical volume "/dev/sdf1" successfully created

     

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdf1 lvm2 -- 1019.72M 1019.72M

     

    # vgextend vg1 /dev/sdf1

    Volume group "vg1" successfully extended

     

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdf1 vg1 lvm2 a- 1016.00M 1016.00M

     

    # vgdisplay vg1

    --- Volume group ---

    VG Name vg1

    System ID

    Format lvm2

    Metadata Areas 4

    Metadata Sequence No 2

    VG Access read/write

    VG Status resizable

    MAX LV 0

    Cur LV 0

    Open LV 0

    Max PV 0

    Cur PV 4

    Act PV 4

    VG Size 3.97 GB

    PE Size 4.00 MB

    Total PE 1016

    Alloc PE / Size 0 / 0

    Free PE / Size 1016 / 3.97 GB

    VG UUID NHG3Mo-boPO-5z8j-XBYb-K5zJ-vtuy-6wnejz

     

    VG(EX: vg1)에서 PV(EX: /dev/sdf1) 삭제 및 확인

    # vgreduce vg1 /dev/sdf1

    Removed "/dev/sdf1" from volume group "vg1"

     

    # pvs

    PV VG Fmt Attr PSize PFree

    /dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M

    /dev/sdf1 lvm2 -- 1019.72M 1019.72M

     

    VG 이름 변경 및 확인

    # vgrename vg1 vg2

    Volume group "vg1" successfully renamed to "vg2"

     

    # vgs

    VG #PV #LV #SN Attr VSize VFree

    vg2 3 0 0 wz--n- 2.98G 2.98G

     

    # vgrename /dev/vg2 /dev/vg1

    Volume group "vg2" successfully renamed to "vg1"

     

    # vgs

    Volume group "vg2" successfully renamed to "vg1"

     

     

     

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

    (3) 논리 볼륨 생성(LV: Logical Volume)

     

    논리 볼륨은 LVM에서 생성하는 파티션이므로 단일 파티션 또는 다중 파티션으로 나눌 수 있는데, 이때 논리 볼륨을 생성하는 방법은 용량 단위 또는 PE수를 통해 생성해 줄 수 있다.

     

     

    (명령어 형식)

    LV 생성

    # lvcreate -L 10G vg1 /* LV 이름 자동 생성 : lvol#(용량 10G) */

    # lvcreate -L 1500M -n lv1 vg1

    # lvcreate -L 1500 -n lv1 vg1 /* 용량 단위가 없으면 MB */

    # lvcreate -l 60%VG -n lv1 vg1

    # lvcreate -l 100%FREE -n lv1 vg1

     

    LV 삭제

    # lvremove /dev/vg1/lv1

     

    LV 이름 변경

    # lvrename /dev/vg1/lv1 /dev/vg1/lv2

    # lvrename vg1 lv1 lv2 /* vg1(lv1 -> lv2) */

     

    LV 공간 늘리기/줄이기

    # lvextend -L 12G /dev/vg1/lv1 /* lv1 용량을 12G로 맞춤 */

    # lvextend -L +1G /dev/vg1/lv1 /* lv1 용량을 1G 만큼 추가 */

    # lvextend -l +100%FREE /dev/vg1/lv1

     

    # lvreduce -L -3G /dev/vg1/lv1

    # lvreduce -l -3 /dev/vg1/lv1 /* lv1 용량을 3 LE(Logical Extend)만큼 감소 */

     

    LV 정보 확인

    # lvs

    # lvscan

    # lvdisplay

     

     

    [EX] LV 생성 및 삭제

    LV 생성 및 확인

    # vgdisplay (# vgs)

    --- Volume group ---

    VG Name vg1

    System ID

    Format lvm2

    Metadata Areas 3

    Metadata Sequence No 5

    VG Access read/write

    VG Status resizable

    MAX LV 0

    Cur LV 0

    Open LV 0

    Max PV 0

    Cur PV 3

    Act PV 3

    VG Size 2.98 GB

    PE Size 4.00 MB

    Total PE 762

    Alloc PE / Size 0 / 0

    Free PE / Size 762 / 2.98 GB

    VG UUID NHG3Mo-boPO-5z8j-XBYb-K5zJ-vtuy-6wnejz

     

    # lvcreate -L 1G -n lv1 vg1

    Logical volume "lv1" created

     

    # lvcreate -L 1G -n lv2 vg1

    Logical volume "lv2" created

     

    # lvcreate -l 100%FREE -n lv3 vg1

    Logical volume "lv3" created

     

    [참고] -L 옵션으로 잘못 사용하는 경우

    # lvcreate -L 100%FREE -n lv3 vg3

    Invalid argument 100%FREE

    Error during parsing of command line.

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.00G

    lv2 vg1 -wi-a- 1.00G

    lv3 vg1 -wi-a- 1000.00M

     

    # lvscan

    ACTIVE '/dev/vg1/lv1' [1.00 GB] inherit

    ACTIVE '/dev/vg1/lv2' [1.00 GB] inherit

    ACTIVE '/dev/vg1/lv3' [1000.00 MB] inherit

     

    # lvdisplay /dev/vg1/lv3 (# lvdisplay)

    --- Logical volume ---

    LV Name /dev/vg1/lv3

    VG Name vg1

    LV UUID CgQVDH-bxfR-qI21-RHd4-WJYz-CTsx-YVWr27

    LV Write Access read/write

    LV Status available

    # open 0

    LV Size 1000.00 MB

    Current LE 250

    Segments 1

    Allocation inherit

    Read ahead sectors auto

    - currently set to 256

    Block device 253:2

     

    LV 삭제 및 확인

    # lvremove /dev/vg1/lv3

    Do you really want to remove active logical volume lv3? [y/n]: y

    Logical volume "lv3" successfully removed

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.00G

    lv2 vg1 -wi-a- 1.00G

     

    -> lv3 삭제

     

    LV 이름 변경

    # lvrename /dev/vg1/lv2 /dev/vg1/lv2_backup

    Renamed "lv2" to "lv2_backup" in volume group "vg1"

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.00G

    lv2_backup vg1 -wi-a- 1.00G

     

    # lvrename vg1 lv2_backup lv2 (# lvrename --help)

    Renamed "lv2_backup" to "lv2" in volume group "vg1"

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.00G

    lv2 vg1 -wi-a- 1.00G

     

     

     

    LV 용량 늘리기 및 확인

    # vgs (# vgdisplay | grep PE)

    VG #PV #LV #SN Attr VSize VFree

    vg1 3 2 0 wz--n- 2.98G 1000.00M

     

    -> vg1 남은 공간 확인

     

    # lvextend -L +500M /dev/vg1/lv1 (# lvextend -L 1500M /dev/vg1/lv1)

    Extending logical volume lv1 to 1.49 GB

    Logical volume lv1 successfully resized

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.49G

    lv2 vg1 -wi-a- 1.00G

     

    LV 크기 줄이기

     

    (주의) LV 크기를 줄이기 위해서는 백업 과정을 거친다.

     

    # lvreduce -L -500M /dev/vg1/lv2

    WARNING: Reducing active logical volume to 524.00 MB

    THIS MAY DESTROY YOUR DATA (filesystem etc.)

    Do you really want to reduce lv2? [y/n]: y

    Reducing logical volume lv2 to 524.00 MB

    Logical volume lv2 successfully resized

     

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.49G

    lv2 vg1 -wi-a- 524.00M

     

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

    (4) 논리 볼륨 ext3으로 파일시스템 생성

     

    논리 볼륨에 대해 ext3파일 시스템을 갖도록 mkfs.ext3로 포맷한다.

     

     

    [EX] 파일시스템 생성 실습

    # lvs

    LV VG Attr LSize Origin Snap% Move Log Copy% Convert

    lv1 vg1 -wi-a- 1.49G

    lv2 vg1 -wi-a- 524.00M

     

    # mkfs.ext3 /dev/vg1/lv1 (# mkfs -t ext3 /dev/vg1/lv1)

    mke2fs 1.39 (29-May-2006)

    Filesystem label=

    OS type: Linux

    Block size=4096 (log=2)

    Fragment size=4096 (log=2)

    195072 inodes, 390144 blocks

    19507 blocks (5.00%) reserved for the super user

    First data block=0

    Maximum filesystem blocks=402653184

    12 block groups

    32768 blocks per group, 32768 fragments per group

    16256 inodes per group

    Superblock backups stored on blocks:

    32768, 98304, 163840, 229376, 294912

     

    Writing inode tables: done

    Creating journal (8192 blocks): done

    Writing superblocks and filesystem accounting information: done

     

    This filesystem will be automatically checked every 31 mounts or

    180 days, whichever comes first. Use tune2fs -c or -i to override.

     

    # mkfs -t ext3 /dev/vg1/lv2

    mke2fs 1.39 (29-May-2006)

    Filesystem label=

    OS type: Linux

    Block size=4096 (log=2)

    Fragment size=4096 (log=2)

    67200 inodes, 134144 blocks

    6707 blocks (5.00%) reserved for the super user

    First data block=0

    Maximum filesystem blocks=138412032

    5 block groups

    32768 blocks per group, 32768 fragments per group

    13440 inodes per group

    Superblock backups stored on blocks:

    32768, 98304

     

    Writing inode tables: done

    Creating journal (4096 blocks): done

    Writing superblocks and filesystem accounting information: done

     

    This filesystem will be automatically checked every 31 mounts or

    180 days, whichever comes first. Use tune2fs -c or -i to override.

     

     

     

     

    LVM 작업 순서

    System Partition ID 변경(fdisk CMD)
    -> PV 생성(pvcreate CMD)
    -> VG 생성(vgcreate CMD)
    -> LV 생성(lvcreate CMD)
    -> F/S 생성(mkfs CMD)
    -> 마운트(mount CMD, /etc/fstab)

     

    (5) 마운트 작업

    생성된 LV를 마운트 한다.

     

    [EX] 마운트 실습

    # mkdir /lv1 /lv2

    # mount /dev/vg1/lv1 /lv1

    # mount /dev/vg1/lv2 /lv2

    # df -h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda1 17G 3.4G 12G 22% /

    /dev/sda8 487M 11M 451M 3% /data1

    /dev/sda7 487M 11M 451M 3% /data2

    /dev/sda6 487M 11M 451M 3% /data3

    /dev/sda5 487M 11M 451M 3% /data4

    /dev/sda3 487M 11M 451M 3% /home

    tmpfs 506M 0 506M 0% /dev/shm

    /dev/sdb1 1004M 49M 904M 6% /testmount

    /dev/mapper/vg1-lv1 1.5G 35M 1.4G 3% /lv1

    /dev/mapper/vg1-lv2 516M 17M 474M 4% /lv2

     

    # vi /etc/fstab

    LABEL=/ / ext3 defaults 1 1

    LABEL=/data1 /data1 ext3 defaults 1 2

    LABEL=/data2 /data2 ext3 defaults 1 2

    LABEL=/data3 /data3 ext3 defaults 1 2

    LABEL=/data4 /data4 ext3 defaults 1 2

    LABEL=/home /home ext3 defaults 1 2

    tmpfs /dev/shm tmpfs defaults 0 0

    devpts /dev/pts devpts gid=5,mode=620 0 0

    sysfs /sys sysfs defaults 0 0

    proc /proc proc defaults 0 0

    LABEL=SWAP-sda2 swap swap defaults 0 0

    #

    # (1) DISK Configuration

    #

    #/dev/sdb1 /testmount ext3 defaults 1 3

    #LABEL=/testmount /testmount ext3 defaults 1 3

    #

    # (2) LVM Configuration

    #

    /dev/mapper/vg1-lv1 /lv1 ext3 defaults 1 3

    /dev/vg1/lv2 /lv2 ext3 defaults 1 3

     

    # umount /lv1

    # umount /lv2

    # mount /lv1

    # mount /lv2

     

    # mount

    /dev/sda1 on / type ext3 (rw)

    proc on /proc type proc (rw)

    sysfs on /sys type sysfs (rw)

    devpts on /dev/pts type devpts (rw,gid=5,mode=620)

    ..... (중략) .....

    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

    none on /proc/fs/vmblock/mountPoint type vmblock (rw)

    sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

    /dev/mapper/vg1-lv1 on /lv1 type ext3 (rw)

    /dev/mapper/vg1-lv2 on /lv2 type ext3 (rw)

     

    # df h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda1 17G 3.4G 12G 22% /

    /dev/sda8 487M 11M 451M 3% /data1

    ..... (중략) .....

    /dev/mapper/vg1-lv1 1.5G 35M 1.4G 3% /lv1

    /dev/mapper/vg1-lv2 516M 17M 474M 4% /lv2

     

    물리적인 파티션 작업과 LVM 작업 비교

    [이전 작업 방식]

    [ LVM 작업 방식]

    () 파티션 작업

    # fdisk /dev/sdc

     

     

     

     

    () 파일시스템 작업

    # mkfs.ext3 /dev/sdc1

     

    () 마운트 작업

    # vi /etc/fstab

    # mkdir /oracle

    # mount /oracle

    () 파티션 작업(Partition ID (83 -> 8e))

    # fdisk /dev/sdc

    # pvcreate /dev/sdc1

    # vgcreate vg1 /dev/sdc1

    # lvcreate -l 100%FREE -n lv1 vg1

     

    () 파일시스템 작업

    # mkfs.ext3 /dev/vg1/lv1

     

    () 마운트 작업

    # vi /etc/fstab

    # mkdir /oracle

    # mount /oracle

     

     

     

    ☆ LVM 관리

     

    (1) LVM 설정 방법 종류

     

    (GUI) # system-config-lvm

    (TUI) pvcreate CMD, vgcreate CMD, lvcreate CMD

     

    [EX] LVM 관리를 위한 관리 툴 및 명령어 확인

    (GUI) system-config-lvm

     

    (필요하면 명령어 수행)

    # yum install system-config-lvm

     

     

    (2) 정보를 자세히 보는 방법

     

    () -v, -vv, -vvv, -vvvv 옵션 사용

    # lvcreate -L 50MB new_vg

    # lvcreate -v -L 50MB new_vg

    # lvcreate -vvvv -L 50MB new_vg

     

    () command --help

    # pvcreate --help

    # vgcreate --help

    # lvcreate --help

     

    () manual page

    # man pvcreate

    # man vgcreate

    # man lvcreate

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    'linux > centOS' 카테고리의 다른 글

    SWAP 관리  (0) 2018.06.27
    RAID 관리  (0) 2018.06.26
    마운트 관리  (0) 2018.06.21
    파일 시스템 작업  (1) 2018.06.20
    장치 인식과 파티션 작업  (0) 2018.06.19

    댓글

Designed by Tistory.