Linux lvm2 정리.

OS: CentOS7
Storage: EMC CX-300

아래와 같이 sdb, sdc, sdd를 사용.

# lsscsi
[1:0:0:0]    disk    HP       LOGICAL VOLUME   3.52  /dev/sda
[1:3:0:0]    storage HP       P410i            3.52  -
[3:0:0:0]    disk    DGC      RAID 5           0219  /dev/sdb
[3:0:0:1]    disk    DGC      RAID 5           0219  /dev/sdc
[3:0:0:2]    disk    DGC      RAID 5           0219  /dev/sdd

1. pvcreate : lvm이 사용하기 위해 디스크나 파티션을 초기화(physical volume으로 만든다).

pvscan으로 lvm이 사용중인 pv를 확인하면, 아래처럼 OS가 사용하는 pv를 확인 할 수 있다.

# pvscan
  PV /dev/sda2   VG centos   lvm2 [67.84 GiB / 0    free]
  Total: 1 [67.84 GiB] / in use: 1 [67.84 GiB] / in no VG: 0 [0   ]

sdb, sdc, sdd를 lvm pv로 만든다.

# ls -al /dev/sd* | grep -v sda | cut -f 11 -d ' ' | xargs -n1 -t pvcreate
pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created
pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created

pv가 잘 만들어졌는지 확인한다.

# pvscan
  PV /dev/sda2   VG centos          lvm2 [67.84 GiB / 0    free]
  PV /dev/sdd                       lvm2 [50.00 GiB]
  PV /dev/sdc                       lvm2 [50.00 GiB]
  PV /dev/sdb                       lvm2 [100.00 GiB]
  Total: 4 [267.84 GiB] / in use: 1 [67.84 GiB] / in no VG: 3 [200.00 GiB]

2. vgcreate : volume group 만들기
위에서 만든 pv로 vg를 만든다. 여기서 vg00라는 이름으로 volume group을 만든다.
vg를 만들기 전상태는 아래와 같다.

# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   3   0 wz--n- 67.84g    0
# vgcreate vg00 /dev/sdc
  Volume group "vg00" successfully created

vg를 만들고 vgs를 실행하면 vg00가 잘 만들어졌음을 확인 할 수 있다.

# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   3   0 wz--n- 67.84g     0
  vg00     1   0   0 wz--n- 50.00g 50.00g

3. vgdisplay : vg의 속성(attribute)를 보여준다.

이전에 만든 vg00의 속성(attribute)을 vgdisplay 로 확인한다.

# vgdisplay vg00
  --- Volume group ---
  VG Name               vg00
  System ID
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               50.00 GiB
  PE Size               4.00 MiB
  Total PE              12799
  Alloc PE / Size       0 / 0
  Free  PE / Size       12799 / 50.00 GiB
  VG UUID               2bFGcL-FJXg-Kawt-5cfN-UTsP-F4lY-dm3YFh

위에서, PE 크기와, 사용가능한 PE개수를 잘 확인해야 한다.
Total PE(phyical extent) 12799 x PE size 4 = 51196 MB / 1024 = 49.99GB

4. lvcreate : 존재하고 있는 vg(volume group)에 logical volume을 만든다.
위에서 만든 vg00에 lvol01 이라는 lv를 만든다.
10GB 크기 lv를 만들려면, 10GB x 1024MB / 4MB(PE size) = 2560 , 즉 2560개의 PE를 lv에 할당하면 된다.

# lvcreate -l 2560 -n lvol01 vg00
  Logical volume "lvol01" created
# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  home   centos -wi-ao---- 20.32g
  root   centos -wi-ao---- 41.62g
  swap   centos -wi-ao----  5.89g
  lvol01 vg00   -wi-a----- 10.00g

5. lvdisplay : logical volume의 속성(attribute)을 보여준다.

lv가 속한 vg 이름, 할당된 크기 등의 속성을 확인 할 수 있다.

# lvdisplay /dev/vg00/lvol01
  --- Logical volume ---
  LV Path                /dev/vg00/lvol01
  LV Name                lvol01
  VG Name                vg00
  LV UUID                bC38NS-KHVW-Ok9K-CPdi-zNBl-tSAh-o1U0OZ
  LV Write Access        read/write
  LV Creation host, time centos, 2014-11-06 14:17:02 +0900
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

6. 화일시스템 생성, 마운트

위에서 만든 lvol01에 화일시스템을 만들고, /mnt 에 마운트한다. 화일시스템을 만들때, 옵션을 주지 않으면, ext2 타입으로 만들어 진다.

# mkfs /dev/vg00/lvol01
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

# mount /dev/vg00/lvol01 /mnt

7. lvextend : logical volume의 크기를 증가시킴.
lvol01의 크기를 1GB 증가 시킨다.

# lvextend -l +256 vg00/lvol01
  Extending logical volume lvol01 to 11.00 GiB
  Logical volume lvol01 successfully resized

화일시스템을 umount하고, resize2fs로 ext2/ext3/ext4 화일시스템을 증가시킨다. 아래는, fsck를 먼저 실행하라는 메시지가 나온다.

# umount /mnt
# resize2fs /dev/vg00/lvol01
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/vg00/lvol01' first.
# e2fsck -f /dev/vg00/lvol01
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg00/lvol01: 14/655360 files (0.0% non-contiguous), 703809/2621440 blocks
# resize2fs /dev/vg00/lvol01
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg00/lvol01 to 2883584 (4k) blocks.
The filesystem on /dev/vg00/lvol01 is now 2883584 blocks long.

mount 하면 크기가 1GB 증가했음을 볼 수 있다.

# mount /dev/vg00/lvol01 /mnt
# df -h
Filesystem               Size  Used Avail Use% Mounted on
...
/dev/mapper/vg00-lvol01   11G  2.6G  7.8G  25% /mnt

8. xfs_growfs : XFS 화일시스템을 확장한다.

vg00에 lvol02를 만들고, XFS로 포맷한 후 크기를 늘이려면, 아래와 같은 과정을 거친다.

# lvcreate -L 10G -n lvol02 vg00
WARNING: xfs signature detected on /dev/vg00/lvol02 at offset 0. Wipe it? [y/n] y
  Wiping xfs signature on /dev/vg00/lvol02.
  Logical volume "lvol02" created
# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  home   centos -wi-ao---- 20.32g
  root   centos -wi-ao---- 41.62g
  swap   centos -wi-ao----  5.89g
  lvol01 vg00   -wi-ao---- 11.00g
  lvol02 vg00   -wi-a----- 10.00g
# mkfs -t xfs /dev/vg00/lvol02
meta-data=/dev/vg00/lvol02       isize=256    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mount /dev/vg00/lvol02 /oracle
# df -h
Filesystem               Size  Used Avail Use% Mounted on
...
/dev/mapper/vg00-lvol01   11G  2.6G  7.8G  25% /mnt
/dev/mapper/vg00-lvol02   10G   33M   10G   1% /oracle

xfs는 umount 없이 바로 resize가 가능하다. 먼저, lv크기를 1GB늘이고 xfs_growfs로 늘인다.

# lvextend -L +1G vg00/lvol02
  Extending logical volume lvol02 to 11.00 GiB
  Logical volume lvol02 successfully resized
# xfs_growfs /oracle
meta-data=/dev/mapper/vg00-lvol02 isize=256    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 2883584

확인하면 /oracle에 마운트된 lvol02가 1GB 늘어난 것을 볼 수 있다.

# df -h
Filesystem               Size  Used Avail Use% Mounted on
...
/dev/mapper/vg00-lvol01   11G  2.6G  7.8G  25% /mnt
/dev/mapper/vg00-lvol02   11G   33M   11G   1% /oracle

답글 남기기

Your email address will not be published.