티스토리 뷰

Update : 2019-03-15

CentOS 강좌 PART 1. 7 스토리지 관리와 LVM


[LVM 의 개요 ]
LVM은 Logical Volume Manager 의 약어로, CentOS에서 기본으로 제공되는 강력한 볼륨 매니져 이다.
LVM에서는 볼륨을 유연하게 구성할 수 있도록 물리적으로 제공되는 디스크들을 논리적으로 구성하여 , 논리적인 그룹들을 묶거나 유연하게 확장 또는 제거 할 수 있도록 도와 준다.
다소 복잡하게 느껴질 수도 있기 때문에 아래와 같이 논리적인 도식도를 만들어 보았고, 이 구성 예제에 맞추어서 랩을 구성했다.


실제 LVM으로 구성되는 것은 3번 단계 부터 이며, 1번 단계는 물리적 또는 가상화 기반의 디스크 추가, 2번 단계는 운영체제 레벨의 파티셔닝이다.
위의 구성을 따라서 아래 6단계를 구성해서 파티션 구성과 PV, VG, LV, 파일시스템의 구성과 마운트까지 진행하는 예제이다.


[1. 디스크 추가 및 LVM 구성을 위한 사전 점검] 


[whchoi@centos151 ~]$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk
sda1            8:1    0    1G  0 part /boot
sda2            8:2    0   99G  0 part
  centos-root 253:0    0   50G  0 lvm  /
  centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  centos-home 253:2    0 41.1G  0 lvm  /home

# lsblk 를 통해 현재 블록디스크 구성 현황을 살펴 볼수 있다.
# 100G의 물리적인 디스크는 2개의 디스크로 파티셔닝이 자동으로 된다.
# boot 섹터의 sda1과 구동이후 사용하게 될 공간 sda2 이다.
# sda2는 다시 LVM으로 SWAP용도로 메모리 공간 만큼 자동 할당되고, 나머지 공간은 /root와 /home에 절반 정도씩 할당된다. 
CentOS 최초 설치시에 자동 파티셔닝을 설정하게 되면 ,아래와 같이 자동으로 LVM이 설정된다.
이후 사용자가 디스크 공간을 추가로 할당하기 위해 물리적 디스크를 추가하게 되면 아래와 같이 변경된다.
아래 예제는 vCenter에서 3개의 디스크를 추가로 할당한 것이다.
50GB 디스크 3개를 Thin Provisioning으로 할당하였다.




[whchoi@centos151 ~]$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk
sda1            8:1    0    1G  0 part /boot
sda2            8:2    0   99G  0 part
  centos-root 253:0    0   50G  0 lvm  /
  centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  centos-home 253:2    0 41.1G  0 lvm  /home
sdb               8:16   0   50G  0 disk
sdc               8:32   0   50G  0 disk
sdd               8:48   0   50G  0 disk
sr0              11:0    1 1024M  0 rom  

# 50GB 디스크 3개가 차례대로 /dev/sdb, /dev/sdc, /dev/sdd 에 할당된 것을 확인 할 수 있다.
# 파티셔닝을 하지 않았기 때문에, 물리적인 디스크로만 확인된다.

[root@centos151 whchoi]# fdisk -l /dev/sda

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bbf58

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

# 현재 /dev/sda 의 파티셔닝 현황을 “ fdisk -l “ 명령을 통해 확인한다.

[[whchoi@centos151 ~]$ df -k
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  52403200 1596640  50806560   4% /
devtmpfs                  3992856       0   3992856   0% /dev
tmpfs                     4004752       0   4004752   0% /dev/shm
tmpfs                     4004752    8992   3995760   1% /run
tmpfs                     4004752       0   4004752   0% /sys/fs/cgroup
/dev/sda1                 1038336  148108    890228  15% /boot
/dev/mapper/centos-home  43093444   33008  43060436   1% /home
tmpfs                      800952       0    800952   0% /run/user/1000

[root@centos151 whchoi]# lvmdiskscan
  /dev/centos/root [      50.00 GiB]
  /dev/sda1        [       1.00 GiB]
  /dev/centos/swap [      <7.88 GiB]
  /dev/sda2        [     <99.00 GiB] LVM physical volume
  /dev/centos/home [     <41.12 GiB]
  /dev/sdb         [      50.00 GiB]
  /dev/sdc         [      50.00 GiB]
  /dev/sdd         [      50.00 GiB]
  6 disks
  1 partition
  0 LVM physical volume whole disks
  1 LVM physical volume




[ 1.Patitioning - 디스크 파티셔닝]

현재 블록디스크의 Type에 대해 “lsblk” 먼저 살펴본다. 
[root@centos151 whchoi]# lsblk -f
NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                      
├─sda1          xfs               d935273d-4df1-42b6-a9df-2f30f35f1440   /boot
└─sda2          LVM2_member       k7ygFn-VQEz-WoX7-JLO7-w8il-1493-lnZCPU
  ├─centos-root xfs               f3e5fdfc-2a97-4256-a235-c2fd4ce35e6b   /
  ├─centos-swap swap              fb9b757a-e3a5-41ab-a3d8-b836772bc49e   [SWAP]
  └─centos-home xfs               99e15ffd-522b-4b9b-a832-6ba4583d888e   /home
sdb                                                                      
sdc                                                                      
sdd                                                                      
sr0                                                                       

# lsblk를 통해 조회를 해 보면, 현재 type은 sda 는 2개의 파티셔닝으로 나누어져 있다.
# sda1은 기본 리눅스 파일시스템으로, sda2는 lvm 으로 구성되어 있다.
# 새롭게 추가된 /dev/sdb, /dev/sdc, /dev/sdd 3개의 디스크는 파디셔닝 되어 있지 않았다.
fdisk 명령어를 통해 Partition을 수행한다.
[root@centos151 whchoi]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbba9c6be.

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
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xbba9c6be

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
# 새로운 파티션을 추가한다.
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-104857599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599):
Using default value 104857599
# 물리적인 디스크를 원하는 용량만큼 파티셔닝 할 수 있다.
Partition 1 of type Linux and of size 50 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e

# 파티션 타입을 LVM으로 구성
# Hex code 8e”가 LVM 파티션이며, “83”은 리눅스 파티션이다. 이것은 모두 구성한 이후에도 변경이 가능하다.

Command (m for help): w
# 파티셔닝을 수행한다.
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.                                                               

# fdisk 명령을 통해 Partition을 수행할 수 있다.
# fdisk 유용한 옵션
# m : 메뉴들에 대한 설명
# n : 새로운 파티션 추가
# w : 디스크에 파티셔닝 수행

[root@centos151 whchoi]# lsblk -p       
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda                      8:0    0  100G  0 disk
├─/dev/sda1                   8:1    0    1G  0 part /boot
└─/dev/sda2                   8:2    0   99G  0 part
  ├─/dev/mapper/centos-root 253:0    0   50G  0 lvm  /
  ├─/dev/mapper/centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  └─/dev/mapper/centos-home 253:2    0 41.1G  0 lvm  /home
/dev/sdb                      8:16   0   50G  0 disk
└─/dev/sdb1                   8:17   0   50G  0 part

# 추가된 /dev/sdb 전체 디스크를 파티셔닝을 수행하고 lsblk로 확인해 보면 파티셔닝이 추가된 것을 확인 할수 있다.

[root@centos151 whchoi]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).
# 중략...
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-104857599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +25G
Partition 1 of type Linux and of size 25 GiB is set
# +25G 로 사이즈를 할당하여, /dev/sdd1에는 25GB를 설정한다.

[root@centos151 whchoi]# fdisk /dev/sdd
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2):
# 이미 1번을 /dev/sdd1이 소유했으므로, 2번 부터 시작한다.

First sector (52430848-104857599, default 52430848):
Using default value 52430848
Last sector, +sectors or +size{K,M,G} (52430848-104857599, default 104857599):
Using default value 104857599
Partition 2 of type Linux and of size 25 GiB is set
# 나머지 25GB를 할당한다.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e

# 파티션 타입을 LVM으로 구성
# Hex code 8e”가 LVM 파티션이며, “83”은 리눅스 파티션이다. 이것은 모두 구성한 이후에도 변경이 가능하다.

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

[root@centos151 whchoi]# lsblk -p
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda                      8:0    0  100G  0 disk
├─/dev/sda1                   8:1    0    1G  0 part /boot
└─/dev/sda2                   8:2    0   99G  0 part
  ├─/dev/mapper/centos-root 253:0    0   50G  0 lvm  /
  ├─/dev/mapper/centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  └─/dev/mapper/centos-home 253:2    0 41.1G  0 lvm  /home
/dev/sdb                      8:16   0   50G  0 disk
└─/dev/sdb1                   8:17   0   50G  0 part
/dev/sdc                      8:32   0   50G  0 disk
└─/dev/sdc1                   8:33   0   50G  0 part
/dev/sdd                      8:48   0   50G  0 disk
├─/dev/sdd1                   8:49   0   25G  0 part
└─/dev/sdd2                   8:50   0   25G  0 part
/dev/sr0                     11:0    1 1024M  0 rom  

# 파티셔닝이 완료된 후의 모습을 볼 수 있다. 디스크는 전체 4개이지만, /dev/sda 와 /dev/sdd에는 2개의 파티셔닝으로 분할하였다.



[ PV (Physical Volumes) 구성]
사용되는 명령어
pvscan, pvs, pvdisplay : 현재 PV에 대한 현황을 조회한다.
pvcreat “파티션 디바이스” : 파티셔닝된 디스크에 PV를 생성한다.

먼저 pvscan 명령을 통해 현재 PV에 대한 현황을 조회한다.
[root@centos151 whchoi]# pvscan
  PV /dev/sda2   VG centos          lvm2 [<99.00 GiB / 4.00 MiB free]
  Total: 1 [<99.00 GiB] / in use: 1 [<99.00 GiB] / in no VG: 0 [0   ]

#  최초 설치시 자동파티셔닝 한 이외에 PV(Physical Volume)을 생성하지 않았기 때문에, 당연히 보이지 않는다.
#  또한 sda는 LVM이 아닌 xfs로 파티셔닝을 구현했다.

생성한 파티셔닝에 따라 PV를 생성한다.
[root@centos151 whchoi]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@centos151 whchoi]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
[root@centos151 whchoi]# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created.
[root@centos151 whchoi]# pvcreate /dev/sdd2
  Physical volume "/dev/sdd2" successfully created.

#  새로 생성된 4개의 파티셔닝에 PV를 생성한다.

[root@centos151 whchoi]# pvscan
  PV /dev/sda2   VG centos          lvm2 [<99.00 GiB / 4.00 MiB free]
  PV /dev/sdd1                      lvm2 [25.00 GiB]
  PV /dev/sdb1                      lvm2 [<50.00 GiB]
  PV /dev/sdc1                      lvm2 [<50.00 GiB]
  PV /dev/sdd2                      lvm2 [<25.00 GiB]
  Total: 5 [248.99 GiB] / in use: 1 [<99.00 GiB] / in no VG: 4 [<150.00 GiB]

[root@centos151 whchoi]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <99.00g   4.00m
  /dev/sdb1         lvm2 ---  <50.00g <50.00g
  /dev/sdc1         lvm2 ---  <50.00g <50.00g
  /dev/sdd1         lvm2 ---   25.00g  25.00g
  /dev/sdd2         lvm2 ---  <25.00g <25.00g
#  다시 pvscan, pvdisplay 명령을 통해 PV가 정상적으로 수행되었는지 확인한다.


[ VG (Volume Group) 구성]

LVM에서 구성이 가능하도록 PV에서 생성된 볼륨을 그룹화 하는 단계이다.
VG 그룹은 PV 그룹들을 용도에 적합하도록 생성하여 할당 할 수 있다.
먼저 기존의 VG에 새로 생성된 PV를 확장하는 예제를 보도록 하자.

사용되는 명령어
vgdisplay, vgs , vgscan : 현재 VG 에 대한 정보를 출력한다.
pvdisplay : 현재 VG/PV에 할당된 정보를 출력한다.
vgextended “vggroup” “pv name” : 기존 생성된 VG에 신규 PV를 추가한다.
vgcreate addvg /dev/sdd1 /dev/sdd2 : 새롭게 VG를 생성한다. (e.g addvg : vg 이름, /dev/sdd1, /dev/sdd2 : PG 이름)
vgchange -a y addvg : 생성된 VG를 적용하여 활성화 한다. (e.g addvg : vg 이름)

[root@centos151 whchoi]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   3   0 wz--n- <99.00g 4.00m

#  vgdisplay 명령을 통해 현재 구성된 볼륨 그룹을 확인한다.
# centos VG에는 1개의 PV가 할당되어 있다.

[root@centos151 whchoi]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <99.00g   4.00m
  /dev/sdb1         lvm2 ---  <50.00g <50.00g
  /dev/sdc1         lvm2 ---  <50.00g <50.00g
  /dev/sdd1         lvm2 ---   25.00g  25.00g
  /dev/sdd2         lvm2 ---  <25.00g <25.00g

#  centos VG에는 1개의 PV만 할당되어 있다.

[root@centos151 whchoi]# vgextend centos /dev/sdb1
  Volume group "centos" successfully extended
[root@centos151 whchoi]# vgextend centos /dev/sdc1
  Volume group "centos" successfully extended

# 2개의 PV를 “vgextend” 명령을 통해 추가한다.

[root@centos151 whchoi]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize    VFree   
  centos   3   3   0 wz--n- <198.99g <100.00g

# VG centos에 정상적으로 2개의 PV가 추가되어 3개로 되고, 용량도 99G에서 2개의 50G PV가 추가되어 199G가 되었다.

[root@centos151 whchoi]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <99.00g   4.00m
  /dev/sdb1  centos lvm2 a--  <50.00g <50.00g
  /dev/sdc1  centos lvm2 a--  <50.00g <50.00g
  /dev/sdd1         lvm2 ---   25.00g  25.00g
  /dev/sdd2         lvm2 ---  <25.00g <25.00g

#  2개의 PV /dev/sdb1, /dev/sdc1 모두 정상적으로 centos  볼륨에 추가되었다.
이제 새로운 VG를 만들고 남은 2개의 PV를 추가해 보겠다. 

[root@centos151 whchoi]# vgcreate addvg /dev/sdd1 /dev/sdd2
[root@centos151 whchoi]# vgchange -a y addvg
  0 logical volume(s) in volume group "addvg" now active

#  vgcreate 명령을 통해서 2개의 PV를 추가한다.
# vgchange -a y 명령을 통해서 새롭게 추가한 VG를 활성화한다.

[[root@centos151 whchoi]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize    VFree   
  addvg    2   0   0 wz--n-   49.99g   49.99g
  centos   3   3   0 wz--n- <198.99g <100.00g

[root@centos151 whchoi]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <99.00g   4.00m
  /dev/sdb1  centos lvm2 a--  <50.00g <50.00g
  /dev/sdc1  centos lvm2 a--  <50.00g <50.00g
  /dev/sdd1  addvg  lvm2 a--  <25.00g <25.00g
  /dev/sdd2  addvg  lvm2 a--  <25.00g <25.00g

#  VG 2개에 모두 정상적으로 할당된 것을 확인 할 수 있다.

[root@centos151 whchoi]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize    VFree   
  addvg    2   0   0 wz--n-   49.99g   49.99g
  centos   3   3   0 wz--n- <198.99g <100.00g





[LV (Logical Volume ) 구성 ]

생성된 VG 그룹에 Logical Volume을 할당하거나 이미 할당된 LV의 크기를 조절한다.
먼저 설치때 자동으로 구성된 centos VG에 할당이 된 LV 가운데 /home 을 40G에서 90G로 확장한다.
사용되는 명령어
lvdisplay , lvscan, las : 현재 VG 에 대한 정보를 출력한다.
pvdisplay : 현재 VG/PV에 할당된 정보를 출력한다.
lvextend -L+48.99G /dev/centos/home: 기존 생성된 lv에 디스크 용량을 확장한다. (e.g 48.99 용량 확장 크기, /dve/centos/home : LV path)
lvcreate centos -L 50G -n home2 : 새롭게 lv를 생성하고 용량을 구성한다. (e.g centos -VG이름, home2 - LV 이름)

[root@centos151 whchoi]# lvscan
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<41.12 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

# 현재 구성되어 있는 lv를 lvscan 명령을 통해  확인한다.

[root@centos151 whchoi]# lvdisplay -a
--- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                e18x0O-tQMq-cQwr-MRaH-2MCB-goO9-h7IDCu
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-03-12 01:10:25 +0900
  LV Status              available
  # open                 1
  LV Size                <41.12 GiB
  Current LE             10526
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
.. 생략

# 현재 구성되어 있는 lv를 lvdisplay 명령을 통해 상세하게 조회할 수 있다.
# /dev/centos/home 의 현재 디스크 사이즈와 구성을 확인 할 수 있다.

[root@centos151 /]# lvextend -L+48.99G /dev/centos/home
  Rounding size to boundary between physical extents: 48.99 GiB.
  Size of logical volume centos/home changed from <41.12 GiB (10526 extents) to <90.11 GiB (23068 extents).
  Logical volume centos/home successfully resized.

# 90GB로 확장하기 때문에 lvextend 명령을 통해 디스크 용량을 확장해 준다.

[root@centos151 /]# lvscan
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<90.11 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

[root@centos151 whchoi]# lvdisplay -a
 생략
  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                e18x0O-tQMq-cQwr-MRaH-2MCB-goO9-h7IDCu
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-03-12 01:10:25 +0900
  LV Status              available
  # open                 1
  LV Size                <90.11 GiB
  Current LE             23068
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
 이하 생략

# 정상적으로 디스크 용량이 확장되었는지 lvscan , lvdisplay 명령을 통해 LV를 확인한다.

[root@centos151 whchoi]# xfs_growfs /dev/centos/home

# 파일시스템에서 실제 볼륨을 확장하기 위해서는 기존 볼륨의 파일시스템 사이즈 확장 명령을 통해 볼륨 실제 크기를 확장한다.

신규 LV를 추가하고 사이즈를 할당 할 수 있다.

[root@centos151 /]# lvscan
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<90.11 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

# 현재 LV 구성 정보를 lvs, lvdisplay, lvscan 명령을 통해 확인한다.

[root@centos151 /]# lvcreate centos -L 50G -n home2
  Logical volume "home2" created.

# lvcreate 명령을 통해 새롭게 centos VG에 home2라는 LV를 생성한다.
# -L 옵션을 통해서 특정 VG에 필요한 디스크 사이즈를 할당한다.

[root@centos151 /]# lvscan
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<90.11 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
  ACTIVE            '/dev/centos/home2' [50.00 GiB] inherit
[root@centos151 /]# lvs
  LV    VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home  centos -wi-ao---- <90.11g                                                    
  home2 centos -wi-a-----  50.00g                                                    
  root  centos -wi-ao----  50.00g                                                    
  swap  centos -wi-ao----  <7.88g    

# 정상적으로 LV가 생성된 것을 확인한다.

[root@centos151 /]# lvcreate addvg -l 100%FREE -n userdata
  Logical volume "userdata" created.

# lvcreate 명령을 통해 새롭게 addvg VG에 userdata라는 LV를 생성한다.
# -l 옵션을 통해서 현재 vg 여유공간의 %로 디스크 사이즈를 할당한다.

[root@centos151 /]# lvscan
  ACTIVE            '/dev/addvg/userdata' [49.99 GiB] inherit
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<90.11 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
  ACTIVE            '/dev/centos/home2' [50.00 GiB] inherit
[root@centos151 /]# lvs
  LV       VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  userdata addvg  -wi-a-----  49.99g                                                    
  home     centos -wi-ao---- <90.11g                                                    
  home2    centos -wi-a-----  50.00g                                                    
  root     centos -wi-ao----  50.00g                                                    
  swap     centos -wi-ao----  <7.88g                      

# 정상적으로 LV가 생성된 것을 확인한다.


[ File System 구성 ]
파티셔닝과 LVM에서 물리적 볼륨으로 인식하는 PV, PV를 그룹핑하는 VG, 그리고 VG를 논리적으로 할당하는 LV가 구성이 완료되었으면 디스크 구성은 모두 완료되었다.
이제 해당 논리적 디스크에 파일시스템을 적용하고, 마운트를 하면 사용할 수 있다.
파일시스템은 CentOS 7  부터는 ext4 기본에서 많은 장점을 가지고 있는 xfs 으로 변경이 되었다.
본 예제에서는 새롭게 추가된 LV에 모두 xfs로 구성을 한다.
사용되는 명령어
mkfs -f “filesystem type” : ext4 또는 xfs 파일시스템으로 LV를 구성한다.
lsblk -f : 파일시스템 구성 현황 
mount : LV를 시스템에 마운트
df -h : : 마운트 구성현황
[root@centos151 /]# mkfs -t xfs /dev/centos/home2
meta-data=/dev/centos/home2      isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

# mkfs -t 명령을 통해 CentOS7에서 기본 사용되는 xfs 파일시스템으로 구성한다.

[root@centos151 /]# mkfs -t xfs /dev/addvg/userdata
meta-data=/dev/addvg/userdata    isize=512    agcount=4, agsize=3276288 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=13105152, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

# mkfs -t 명령을 통해 CentOS7에서 기본 사용되는 xfs 파일시스템으로 구성한다.

[root@centos151 /]# lsblk -f
NAME               FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                         
├─sda1             xfs               d935273d-4df1-42b6-a9df-2f30f35f1440   /boot
└─sda2             LVM2_member       k7ygFn-VQEz-WoX7-JLO7-w8il-1493-lnZCPU
  ├─centos-root    xfs               f3e5fdfc-2a97-4256-a235-c2fd4ce35e6b   /
  ├─centos-swap    swap              fb9b757a-e3a5-41ab-a3d8-b836772bc49e   [SWAP]
  └─centos-home    xfs               99e15ffd-522b-4b9b-a832-6ba4583d888e   /home
sdb                                                                         
└─sdb1             LVM2_member       xV0oOk-33aw-VgxC-GC23-ACGS-DcKf-cQqOF7
  ├─centos-home    xfs               99e15ffd-522b-4b9b-a832-6ba4583d888e   /home
  └─centos-home2   xfs               4f48004f-27b8-4bd9-bce5-6b69d4d2b8dc   /home2
sdc                                                                         
└─sdc1             LVM2_member       dOalQg-A08b-TN3Q-Mal2-cs1a-4dn7-YWducr
  └─centos-home2   xfs               4f48004f-27b8-4bd9-bce5-6b69d4d2b8dc   /home2
sdd                                                                         
├─sdd1             LVM2_member       xNliHe-zUP0-TsaA-qcdN-dIGc-iX19-B1wiKE
│ └─addvg-userdata xfs               c97b40a3-28f3-4087-a829-681dd4b37a5e   
└─sdd2             LVM2_member       0I73zn-deni-nfq8-MROS-pD2a-1Ysm-eYCdxn
  └─addvg-userdata xfs               c97b40a3-28f3-4087-a829-681dd4b37a5e   


# xfs 파일시스템 구성 후에 정상적으로 LV이 파일시스템 구성이 완료되었는지 확인한다.

[root@centos151 /]# mkdir /home2
[root@centos151 /]# mount /dev/centos/home2 /home2

# /dev/centos/home2 LV를 마운트 시킬 디렉토리를 만들고 마운트 시킨다.

[root@centos151 /]# vi /home/whchoi/lvm_test.txt
[root@centos151 /]# cp /home/whchoi/lvm_test.txt /home2
[root@centos151 /]# cat /home2/lvm_test.txt
lvmtest

# test 파일을 만들어서, 정상적으로 Read/Write가 되는지 확인한다.

[root@centos151 /]# mkdir /userdata
[root@centos151 /]# mount /dev/addvg/userdata /userdata/

# /dev/addvg/userdat LV를 마운트 시킬 디렉토리를 만들고 마운트 시킨다.

[root@centos151 /]# cat /userdata/lvm_test2.txt
lvm filesystem and mount

# test 파일을 만들어서, 정상적으로 Read/Write가 되는지 확인한다.

[root@centos151 /]# lsblk -f
NAME               FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                         
├─sda1             xfs               d935273d-4df1-42b6-a9df-2f30f35f1440   /boot
└─sda2             LVM2_member       k7ygFn-VQEz-WoX7-JLO7-w8il-1493-lnZCPU
  ├─centos-root    xfs               f3e5fdfc-2a97-4256-a235-c2fd4ce35e6b   /
  ├─centos-swap    swap              fb9b757a-e3a5-41ab-a3d8-b836772bc49e   [SWAP]
  └─centos-home    xfs               99e15ffd-522b-4b9b-a832-6ba4583d888e   /home
sdb                                                                         
└─sdb1             LVM2_member       xV0oOk-33aw-VgxC-GC23-ACGS-DcKf-cQqOF7
  ├─centos-home    xfs               99e15ffd-522b-4b9b-a832-6ba4583d888e   /home
  └─centos-home2   xfs               4f48004f-27b8-4bd9-bce5-6b69d4d2b8dc   /home2
sdc                                                                         
└─sdc1             LVM2_member       dOalQg-A08b-TN3Q-Mal2-cs1a-4dn7-YWducr
  └─centos-home2   xfs               4f48004f-27b8-4bd9-bce5-6b69d4d2b8dc   /home2
sdd                                                                         
├─sdd1             LVM2_member       xNliHe-zUP0-TsaA-qcdN-dIGc-iX19-B1wiKE
│ └─addvg-userdata xfs               c97b40a3-28f3-4087-a829-681dd4b37a5e   /userdata
└─sdd2             LVM2_member       0I73zn-deni-nfq8-MROS-pD2a-1Ysm-eYCdxn
  └─addvg-userdata xfs               c97b40a3-28f3-4087-a829-681dd4b37a5e   /userdata

# /home2 , /userdata2 가 모두 정상적으로 마운트 되고, 파일시스템도 정상적으로 구성된 것을 확인할 수 있다.

[root@centos151 /]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <99.00g    0
  /dev/sdb1  centos lvm2 a--  <50.00g 1.00g
  /dev/sdc1  centos lvm2 a--  <50.00g    0
  /dev/sdd1  addvg  lvm2 a--  <25.00g    0
  /dev/sdd2  addvg  lvm2 a--  <25.00g    0
[root@centos151 /]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree
  addvg    2   1   0 wz--n-   49.99g    0
  centos   3   4   0 wz--n- <198.99g 1.00g
[root@centos151 /]# lvs
  LV       VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  userdata addvg  -wi-ao----  49.99g                                                    
  home     centos -wi-ao---- <90.11g                                                    
  home2    centos -wi-ao----  50.00g                                                    
  root     centos -wi-ao----  50.00g                                                    
  swap     centos -wi-ao----  <7.88g                                                    
[root@centos151 /]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/centos-root      50G  1.6G   49G   4% /
devtmpfs                    3.9G     0  3.9G   0% /dev
tmpfs                       3.9G     0  3.9G   0% /dev/shm
tmpfs                       3.9G  8.9M  3.9G   1% /run
tmpfs                       3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                  1014M  145M  870M  15% /boot
/dev/mapper/centos-home      42G   33M   42G   1% /home
tmpfs                       783M     0  783M   0% /run/user/1000
/dev/mapper/centos-home2     50G   33M   50G   1% /home2
/dev/mapper/addvg-userdata   50G   33M   50G   1% /userdata


# pvs , vgs. lvs , df -h 명령을 통해 정상적으로 파일시스템 구성과 마운트가 되었는지 확인한다.


마지막으로 리부팅 이후에도 마운트 된 디스크들을 정상적으로 사용할 수 있도록, /etc/fstab 에 등록해 준다.
[root@centos151 /]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Mar 12 01:10:26 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=d935273d-4df1-42b6-a9df-2f30f35f1440 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/centos-home2 /home2                 xfs     defaults        0 0
/dev/mapper/addvg-userdata /userdata            xfs     defaults        0 0

# 재구동 이후에도 사용할 수 있도록 /etc/fstab에 LVM에서 생성되어 마운트 시킨 정보를 등록한다.


공지사항