这章我们学习了解一下逻辑卷管理器的相关概念以及实际操作。
一.概念简介
逻辑卷管理器是允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小;是允许在多个物理设备间重新组织文件系统 。
在此,我们先了解一下物理卷的概念, 物理卷是用固定大小的物理区域来定义的 ,表示为PE。
当我们将设备指定为物理卷时,用一个或者多个物理卷来创建一个卷组。
所以可以知道,PE便是逻辑卷的最小单位。
在物理卷上创建逻辑卷之后可以在逻辑卷上创建文件系统。
那么学习逻辑卷,可以应用在哪些方面,又或者说,逻辑卷的用处体现在什么方面?
由逻辑卷的概念我们可以知道很明显的用处,便是重新设定文件系统大小。
随着对磁盘的使用,块设备以及文件系统的剩余空间不够,此时就需要使用逻辑卷对文件系统进行在线拉伸,
这样既能确保文件系统大小扩展,又可以保证业务正常运行以及保留数据。
二.创建LVM过程
1.新增分区或增加新的硬盘
如果新增硬盘,注意在VMware添加后,需要在终端输入 echo '- - -' > /sys/class/scsi_host/host0/scan,识别新磁盘。
如果是分区,则需要注意分区的ID设置为8e,fdisk 选项t来修改分区ID 2.创建物理卷pv pvcreate /dev/sdX /dev/sdXn /dev/md1:创建sdX,sdXn为md1物理卷pv1 [root@mmmm(mei) ~]# pvcreate /dev/sdd /dev/sde /dev/sdf2 Physical volume "/dev/sdd" successfully created3 Physical volume "/dev/sde" successfully created4 Physical volume "/dev/sdf" successfully created
查看pv相关命令:
pvs:查看所有pv物理卷
1 [root@mmmm(mei) ~]# pvs2 PV VG Fmt Attr PSize PFree3 /dev/sdd lvm2 ---- 1.00g 1.00g4 /dev/sde lvm2 ---- 1.00g 1.00g5 /dev/sdf lvm2 ---- 1.00g 1.00g
pvdisplay [/dev/sdX]:查看某物理卷详细信息
1 [root@mmmm(mei) ~]# pvdisplay /dev/sdd 2 "/dev/sdd" is a new physical volume of "1.00 GiB" #描述 3 --- NEW Physical volume --- 4 PV Name /dev/sdd 5 VG Name #由于第一步创建pv,并没有创建vg,所以此处为空 6 PV Size 1.00 GiB 7 Allocatable NO 8 PE Size 0 9 Total PE 010 Free PE 011 Allocated PE 012 PV UUID gUwnnl-CZO1-hidM-0cAz-ijeE-mL2R-9t2dEK
3.创建卷组vg vgcreate [-s xM] vgName /dev/sdX …… :选项-s指定PE大小,创建卷组,组名+成员
1 [root@mmmm(mei) ~]# vgcreate -s 16M testvg /dev/sdd /dev/sde /dev/sdf2 Volume group "testvg" successfully created
1 [root@mmmm(mei) ~]# vgs2 VG #PV #LV #SN Attr VSize VFree3 testvg 3 0 0 wz--n- 2.95g 2.95g #三个1G的pv组成,可查看是否正确组成卷组vg
vgdisplay [vgname]:查看某卷组详细信息
1 [root@mmmm(mei) ~]# vgdisplay testvg 2 --- Volume group --- 3 VG Name testvg 4 System ID 5 Format lvm2 6 Metadata Areas 3 7 Metadata Sequence No 1 8 VG Access read/write 9 VG Status resizable10 MAX LV 011 Cur LV 012 Open LV 013 Max PV 014 Cur PV 315 Act PV 316 VG Size 2.95 GiB17 PE Size 16.00 MiB # -s 指定PE大小18 Total PE 18919 Alloc PE / Size 0 / 0 20 Free PE / Size 189 / 2.95 GiB21 VG UUID o1lhj2-SnLl-4kVa-jDPn-jHXF-0Bcd-gfqThl
4.创建逻辑卷lv lvcreate -l pe num /-L size -n lvname vgname:创建逻辑卷 -l指定PE数量,-L指定大小
1 [root@mmmm(mei) ~]# lvcreate -L 1G -n testlv testvg2 Logical volume "testlv" created.
1 [root@mmmm(mei) ~]# lvs2 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert3 testlv testvg -wi-a----- 1.00g
lvdisplay [/dev/vgname/lvname]:查看某逻辑卷详细信息
1 [root@mmmm(mei) ~]# lvdisplay /dev/testvg/testlv 2 --- Logical volume --- 3 LV Path /dev/testvg/testlv 4 LV Name testlv 5 VG Name testvg 6 LV UUID 3DA5wa-GIUg-qtJt-0wY4-j8uT-8LEd-vzSnid 7 LV Write Access read/write 8 LV Creation host, time mmmm, 2018-08-11 21:31:27 +0800 9 LV Status available # 有时候可以禁用逻辑卷10 # open 011 LV Size 1.00 GiB12 Current LE 6413 Segments 214 Allocation inherit15 Read ahead sectors auto16 - currently set to 25617 Block device 253:0
5.挂载,在这里需要注意的是,在挂载前需要对逻辑卷进行格式化,也可以对pv格式化再进行创建vg、lv
1 [root@mmmm(mei) ~]# mount /dev/testvg/testlv /testlv2 mount: you must specify the filesystem type3 [root@mmmm(mei) ~]# mkfs.ext4 /dev/testvg/testlv 4 mke2fs 1.41.12 (17-May-2010)5 Filesystem label=6 OS type: Linux.......
1 [root@mmmm(mei) ~]# mount /dev/testvg/testlv /testlv2 [root@mmmm(mei) ~]# df /testlv/3 Filesystem 1K-blocks Used Available Use% Mounted on4 /dev/mapper/testvg-testlv5 999320 1284 945608 1% /testlv
三.删除过程
1.卸载umont
2.lvremove
1 [root@mmmm(mei) ~]# lvremove /dev/testvg/testlv 2 Do you really want to remove active logical volume testlv? [y/n]: y3 Logical volume "testlv" successfully removed
3.vgremove vgmage
1 [root@mmmm(mei) ~]# vgs2 VG #PV #LV #SN Attr VSize VFree3 testvg 2 0 0 wz--n- 1.97g 1.97g4 [root@mmmm(mei) ~]# vgremove testvg5 Volume group "testvg" successfully removed
4.使用pvremove 命令:pvremove + pvname即可
1 [root@mmmm(mei) ~]# pvremove /dev/sdd2 Labels on physical volume "/dev/sdd" successfully wiped
四.拓展已存在逻辑卷
第一种情况,需要扩展的pe数量
vg可以提供 lvextend -L +500M /dev/testvg/testlv
resize2fs /dev/testvg/testlv或者lvextend中指定 -r 选项,即:lvextend -L +500M -r /dv/testvg/testlv
1 [root@mmmm(mei) ~]# lvextend -L +1G /dev/testvg/testlv # -L 选项注意:+表示在原有大小基础上增加,直接跟数字表示变成该数字大小2 Size of logical volume testvg/testlv changed from 1.00 GiB (64 extents) to 2.00 GiB (128 extents).3 Logical volume testlv successfully resized.4 [root@mmmm(mei) ~]# resize2fs /dev/testvg/testlv 5 resize2fs 1.41.12 (17-May-2010)6 Filesystem at /dev/testvg/testlv is mounted on /testlv; on-line resizing required7 old desc_blocks = 1, new_desc_blocks = 18 Performing an on-line resize of /dev/testvg/testlv to 524288 (4k) blocks.9 The filesystem on /dev/testvg/testlv is now 524288 blocks long.
1 [root@mmmm(mei) ~]# lvs2 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert3 testlv testvg -wi-ao---- 2.00g
第二种情况,vg空间不够,需先扩展vg
扩展vg就是往vg中加pv,这里命令使用结合上面所使用的,便不多介绍。
1.加硬盘,或创建分区等来增加block device
2.创建pv pvcreate /dev/sdb 3.扩展vg vgextend vgmage /dev/sdb 4.lvextend -L 4G -r /dev/vgmage/lv01第三种,减小逻辑卷
在这里需要注意的是,减小逻辑卷一定要特别注意,不能减小有数据的区,防止损坏数据。
那我们如何知道哪些块设备是空闲的呢?
这里就需要用到文件格式化的命令——e2fsck,对块设备
另一方面我们需要知道,一切皆文件,即需要保证文件系统永远小于块设备,所以需要
先减少文件系统大小。具体步骤如下:
1 [root@mmmm(mei) ~]# umount /testlv/ 2 [root@mmmm(mei) ~]# e2fsck -f /dev/testvg/testlv 3 e2fsck 1.41.12 (17-May-2010) 4 Pass 1: Checking inodes, blocks, and sizes 5 Pass 2: Checking directory structure 6 Pass 3: Checking directory connectivity 7 Pass 4: Checking reference counts 8 Pass 5: Checking group summary information 9 /dev/testvg/testlv: 11/131072 files (0.0% non-contiguous), 16812/524288 blocks10 [root@mmmm(mei) ~]# resize2fs /dev/testvg/testlv 1000M11 resize2fs 1.41.12 (17-May-2010)12 Resizing the filesystem on /dev/testvg/testlv to 256000 (4k) blocks.13 The filesystem on /dev/testvg/testlv is now 256000 blocks long.14 15 [root@mmmm(mei) ~]# lvreduce -L 1000M /dev/testvg/testlv 16 Rounding size to boundary between physical extents: 1008.00 MiB.17 WARNING: Reducing active logical volume to 1008.00 MiB.18 THIS MAY DESTROY YOUR DATA (filesystem etc.)19 Do you really want to reduce testvg/testlv? [y/n]: y20 Size of logical volume testvg/testlv changed from 2.00 GiB (128 extents) to 1008.00 MiB (63 extents).21 Logical volume testlv successfully resized.22 [root@mmmm(mei) ~]# mount -a23 [root@mmmm(mei) ~]# lvs24 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert25 testlv testvg -wi-a----- 1008.00m
五.XFS文件系统的在线扩展
xfs文件系统创建逻辑卷步骤同ext一样,不一样的xfs文件系统的在拓展
在这里多加注意的是,xfs文件系统不支持减小逻辑卷。
1 root@localhost(mei) ~]# pvcreate /dev/sdc /dev/sdd /dev/sde 2 Physical volume "/dev/sdc" successfully created. 3 Physical volume "/dev/sdd" successfully created. 4 Physical volume "/dev/sde" successfully created. 5 [root@localhost(mei) ~]# vgcreate testvg /dev/sdc /dev/sdd /dev/sde -s 16M #指定PE大小 6 Volume group "testvg" successfully created 7 [root@localhost(mei) ~]# lvcreate -l 2 -n testlv testvg #指定PE个数, 8 Logical volume "testlv" created. 9 [root@localhost(mei) ~]# lvdisplay /dev/testvg/testlv 10 --- Logical volume ---11 LV Path /dev/testvg/testlv12 LV Name testlv13 VG Name testvg14 LV UUID fBiNq7-tp3F-C5gy-37u9-t7bU-fXkL-PyYAZG15 LV Write Access read/write16 LV Creation host, time localhost.localdomain, 2018-08-12 19:38:01 +080017 LV Status available18 # open 019 LV Size 32.00 MiB #即两个PE大小20 Current LE 221 Segments 122 Allocation inherit23 Read ahead sectors auto24 - currently set to 819225 Block device 253:3
第一种情况,需要扩展的pe数量,vg可以提供
lvextend -L +500M /dev/vgmage/lv01
xfs_growfs /dev/vgmage/lv01 或 lvextend中指定-r1 [root@localhost(mei) ~]# lvextend -L 1600M -r /dev/testvg/testlv 2 Size of logical volume testvg/testlv changed from <1.47 GiB (94 extents) to 1.56 GiB (100 extents). 3 Logical volume testvg/testlv successfully resized. 4 meta-data=/dev/mapper/testvg-testlv isize=512 agcount=2, agsize=4096 blks 5 = sectsz=512 attr=2, projid32bit=1 6 = crc=1 finobt=0 spinodes=0 7 data = bsize=4096 blocks=8192, imaxpct=25 8 = sunit=0 swidth=0 blks 9 naming =version 2 bsize=4096 ascii-ci=0 ftype=110 log =internal bsize=4096 blocks=855, version=211 = sectsz=512 sunit=0 blks, lazy-count=112 realtime =none extsz=4096 blocks=0, rtextents=013 data blocks changed from 8192 to 409600
第二种情况,vg空间不够,需先扩展vg,扩展vg就是往vg中加pv
1.加硬盘,或创建分区等来增加block device
2.创建pv pvcreate /dev/sdb 3.扩展vg vgextend vgmage /dev/sdb 4.lvextend -L 4G -r /dev/vgmage/lv01