Friday, April 13, 2018

CentOS 6.6 리눅스 관리] 5.3 LVM (Linux Volume Manager) - LV (Logical Volume)


안녕하세요. 썬구루입니다. 이번 이 게시물에서는 리눅스 LVM의 LV (Logical Volume) 생성, 수정, 확인, 삭제에 대해 알아보도록 하겠습니다.

LV (Logical Volume)는 앞 게시물에서 VG (Volume Group)의 일정 공간을 분할하여 만들어진 공간을 뜻합니다. LV는 실제 파일시스템이 만들어지며 데이터가 저장되는 공간입니다.

데이터 저장을 위해 사용되고 있는 즉 온라인 된 LV 개체에 대해 용량 증설 및 파일시스템 리사이징이 가능합니다. 온라인 중에요. 이것이 볼륨의 가장 큰 장점이죠. Flexible Capacity ^^



관리자는 LV에 대한 이름을 정의할 수 있습니다. 목적에 맞는 의미 있는 이름을 부여하는 것이 좋습니다.

■ LV (Logical Volume) 생성, 확인, 제거

LV에 관련된 여러 명령들이 있지만 여기서는 lvscan, lvdisplay, lvcreate, lvextend, lvremove 명령만 언급할 것이다.

1). lvscan

존재하는 LV를 확인하기 위해 사용되는 명령이다.

▶ 명령 형식

lvscan

아직 생성한 LV (Logical Volume)가 없기 때문에 어떠한 LV도 찾을 수 없다고 출력된다.

[root@sunguru ~]# lvscan
  No volume groups found
[root@sunguru ~]#

2). lvdisplay

존재하는 LV의 세부 정보를 확인하기 위해 사용되는 명령이다.

▶ 명령 형식

lvdisplay [LV_NAME]

아직 생성한 LV (Logical Volume)가 없기 때문에 어떠한 볼륨도 찾을 수 없다고 출력된다.

[root@sunguru ~]# lvdisplay
  No volume groups found
[root@sunguru ~]# 

3). lvcreate

존재하는 VG로부터 용량을 분할하여 볼륨을 생성하기 확인하기 위해 사용되는 명령이다.

▶ 명령 형식

lvcreate [옵션] VG_NAME

▶ 옵션

옵 션
내 용
-L LV_SIZE
 볼륨 용량을 설정하기 위해 사용한다. 숫자 뒤 kmgtpe 가능
-n LV_NAME
 볼륨 이름을 설정하기 위해 사용한다.

아래는 vg_db VG의 용량을 사용하여 oradata01과 oradata02 이름을 가지는 LV를 만드는 것을 보여준다. 그리고 파일시스템을 생성한 후 /etc/fstab 파일에 내용을 추가한 후에 리부팅 후에도 자동으로 파일시스템이 마운트 되는지를 보여준다.

[root@sunguru ~]# pvscan
  PV /dev/sdd         lvm2 [10.00 GiB]
  PV /dev/sde         lvm2 [10.00 GiB]
  PV /dev/sdf         lvm2 [10.00 GiB]
  PV /dev/sdh         lvm2 [10.00 GiB]
  Total: 4 [40.00 GiB] / in use: 0 [0   ] / in no VG: 4 [40.00 GiB]
[root@sunguru ~]#
[root@sunguru ~]# vgcreate vg_db /dev/sdd /dev/sde
  Volume group "vg_db" successfully created
[root@sunguru ~]#
[root@sunguru ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_db" using metadata type lvm2
[root@sunguru ~]#
[root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size"
    DEGRADED MODE. Incomplete RAID LVs will be processed.
    Using volume group(s) on command line
    Finding volume group "vg_db"
  VG Size               19.99 GiB
  PV Name               /dev/sdd     
  PV Name               /dev/sde   
[root@sunguru ~]#
[root@sunguru ~]# lvcreate -L 9g -n oradata01 vg_db
  Logical volume "oradata01" created
[root@sunguru ~]# lvcreate -L 9g -n oradata02 vg_db
  Logical volume "oradata02" created
[root@sunguru ~]#
[root@sunguru ~]# lvscan
  ACTIVE            '/dev/vg_db/oradata01' [9.00 GiB] inherit
  ACTIVE            '/dev/vg_db/oradata02' [9.00 GiB] inherit
[root@sunguru ~]#
[root@sunguru ~]# lvdisplay vg_db/oradata01
  --- Logical volume ---
  LV Path                /dev/vg_db/oradata01
  LV Name                oradata01
  VG Name                vg_db
  LV UUID                0mAnvr-k460-4UYt-OQvE-uof6-ujec-d3sLI2
  LV Write Access        read/write
  LV Creation host, time centos01, 2016-07-07 17:28:39 +0900
  LV Status              available
  # open                 0
  LV Size                9.00 GiB
  Current LE             2304
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

[root@sunguru ~]# vgdisplay vg_db
  --- Volume group ---
  VG Name               vg_db
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       4608 / 18.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3

[root@sunguru ~]#
[root@sunguru ~]# mkfs -t ext4 /dev/vg_db/oradata01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
589824 inodes, 2359296 blocks
117964 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2415919104
72 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done               
Creating journal (32768 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.
[root@sunguru ~]#
[root@sunguru ~]# mkdir /oradata01
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/vg_db/oradata01 /oradata01
[root@sunguru ~]#
[root@sunguru ~]# df -h /oradata01
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_db-oradata01     8.8G   21M  8.3G   1% /oradata01
[root@sunguru ~]#
[root@sunguru ~]# vi /etc/fstab

/dev/vg_db/oradata01 /oradata01  ext4 defaults 1 2  <== 추가

[root@sunguru ~]#
[root@sunguru ~]# shutdown - r now
[root@sunguru ~]#
[root@sunguru ~]# df -h /oradata01
Filesystem                                                  Size  Used Avail Use% Mounted on
/dev/mapper/vg_db-oradata01                      8.8G   21M  8.3G   1% /oradata01
[root@sunguru ~]#  




4). lvextend

존재하는 LV에 용량을 추가하기 위해 사용되는 명령이다.

▶ 명령 형식

lvextend [옵션]

▶ 옵션

옵 션
내 용
-L +LV_SIZE
 존재하는 볼륨에 용량을 추가하기 위해 사용한다. +숫자 뒤 kmgtpe 가능
-n LV_NAME
 존재하는 볼륨 이름을 지정하기 위해 사용한다.

아래는 vg_db VG에 10GB 용량의 PV를 하나 추가한 후 oradata01과 oradata02 LV의 용량을 추가하는 것을 보여준다. 리부팅 후에도 파일시스템이 잘 마운트 되는지 확인한다.

[root@sunguru ~]# mkdir /oradata02
[root@sunguru ~]#
[root@sunguru ~]# mkfs -t ext4 /dev/vg_db/oradata02
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
589824 inodes, 2359296 blocks
117964 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2415919104
72 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                   
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@sunguru ~]#
[root@sunguru ~]# blkid | grep ora
/dev/mapper/vg_db-oradata01: UUID="0f5e66cd-cce0-49e8-ae89-beb89878c8b9" TYPE="ext4"
/dev/mapper/vg_db-oradata02: UUID="91935f1a-e4ec-4740-969a-45baf4a864c6" TYPE="ext4"
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/vg_db/oradata02 /oradata02
[root@sunguru ~]#
[root@sunguru ~]# vi /etc/fstab 

/dev/vg_db/oradata01 /oradata01  ext4 defaults 1 2
/dev/vg_db/oradata02 /oradata02  ext4 defaults 1 2  <== 추가

[root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size"
    DEGRADED MODE. Incomplete RAID LVs will be processed.
    Using volume group(s) on command line
    Finding volume group "vg_db"
  VG Size               19.99 GiB
  PV Name               /dev/sdd
  PV Name               /dev/sde
[root@sunguru ~]#
[root@sunguru ~]# lvdisplay vg_db/oradata01 | grep "LV Size"
  LV Size                9.00 GiB
[root@sunguru ~]# lvdisplay vg_db/oradata02 | grep "LV Size"
  LV Size                9.00 GiB
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                     8.8G   21M  8.3G   1% /oradata01
/dev/mapper/vg_db-oradata02                     8.8G   21M  8.3G   1% /oradata02
[root@sunguru ~]#
[root@sunguru ~]# vgextend vg_db /dev/sdf
  Volume group "vg_db" successfully extended
[root@sunguru ~]#
[root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size"
    DEGRADED MODE. Incomplete RAID LVs will be processed.
    Using volume group(s) on command line
    Finding volume group "vg_db"
  VG Size               29.99 GiB
  PV Name               /dev/sdd
  PV Name               /dev/sde
  PV Name               /dev/sdf
[root@sunguru ~]#
[root@sunguru ~]# lvextend -L +3g -n /dev/vg_db/oradata01
  Size of logical volume vg_db/oradata01 changed from 9.00 GiB (2304 extents) to 12.00 GiB (3072 extents).
  Logical volume oradata01 successfully resized
[root@sunguru ~]#
[root@sunguru ~]# lvextend -L +3g -n /dev/vg_db/oradata02
  Size of logical volume vg_db/oradata02 changed from 9.00 GiB (2304 extents) to 12.00 GiB (3072 extents).
  Logical volume oradata02 successfully resized
[root@sunguru ~]#
[root@sunguru ~]# lvdisplay vg_db/oradata01 | grep "LV Size"
  LV Size                12.00 GiB
[root@sunguru ~]# lvdisplay vg_db/oradata02 | grep "LV Size"
  LV Size                12.00 GiB
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                    8.8G   21M  8.3G   1% /oradata01
/dev/mapper/vg_db-oradata02                    8.8G   21M  8.3G   1% /oradata02
[root@sunguru ~]#
[root@sunguru ~]# resize2fs /dev/mapper/vg_db-oradata01
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_db-oradata01 is mounted on /oradata01; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_db-oradata01 to 3145728 (4k) blocks.
The filesystem on /dev/mapper/vg_db-oradata01 is now 3145728 blocks long.
[root@sunguru ~]#
[root@sunguru ~]# resize2fs /dev/mapper/vg_db-oradata02
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_db-oradata02 is mounted on /oradata02; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_db-oradata02 to 3145728 (4k) blocks.
The filesystem on /dev/mapper/vg_db-oradata02 is now 3145728 blocks long.
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                     12G   23M   12G   1% /oradata01
/dev/mapper/vg_db-oradata02                     12G   23M   12G   1% /oradata02
[root@sunguru ~]#
[root@sunguru ~]# shutdown -r now
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                     12G   23M   12G   1% /oradata01
/dev/mapper/vg_db-oradata02                     12G   23M   12G   1% /oradata02
[root@sunguru ~]# 

5). lvremove

존재하는 LV에 제거하기 위해 사용되는 명령이다. 제거하기 전 마운트 된 파일시스템을 언마운트하고 관련된 내용은 /etc/fstab 파일에 지우도록 한다.

▶ 명령 형식

lvremove LV_NAME

[root@sunguru ~]# lvscan
  ACTIVE            '/dev/vg_db/oradata01' [12.00 GiB] inherit
  ACTIVE            '/dev/vg_db/oradata02' [12.00 GiB] inherit
[root@sunguru ~]#
[root@sunguru ~]# vgdisplay vg_db
  --- Volume group ---
  VG Name               vg_db
  System ID   
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       6144 / 24.00 GiB
  Free  PE / Size       1533 / 5.99 GiB
  VG UUID               H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3

[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                     12G   23M   12G   1% /oradata01
/dev/mapper/vg_db-oradata02                     12G   23M   12G   1% /oradata02
[root@sunguru ~]#
[root@sunguru ~]# umount /oradata02
[root@sunguru ~]#
[root@sunguru ~]# lvremove vg_db/oradata02
Do you really want to remove active logical volume oradata02? [y/n]: y
  Logical volume "oradata02" successfully removed
[root@sunguru ~]#
[root@sunguru ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_db" using metadata type lvm2
[root@sunguru ~]#
[root@sunguru ~]# vgdisplay vg_db
  --- Volume group ---
  VG Name               vg_db
  System ID   
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       3072 / 12.00 GiB
  Free  PE / Size       4605 / 17.99 GiB
  VG UUID               H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3

[root@sunguru ~]#
[root@sunguru ~]# vi /etc/fstab

/dev/vg_db/oradata01 /oradata01  ext4 defaults 1 2
/dev/vg_db/oradata02 /oradata02  ext4 defaults 1 2  <== 제거

[root@sunguru ~]# shutdown -r now
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep oradata
/dev/mapper/vg_db-oradata01                      12G   23M   12G   1% /oradata01
[root@sunguru ~]#
[root@sunguru ~]# lvscan
  ACTIVE            '/dev/vg_db/oradata01' [12.00 GiB] inherit
[root@sunguru ~]# 

여기까지 간단하게 Linux LVM에 대해 알아보았습니다. 한대의 시스템에 대해 적용될 수 있지만 여러 시스템이 같은 볼륨을 바라보도록 만들 수도 있습니다. 보통 클러스터 환경에서 많이 사용하는데 그것은 리눅스 클러스터 다룰 때 알아보도록 하겠습니다. 다음 게시물에서 소프트웨어 패키지를 관리하기 위해 rpm 명령에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment