【linux命令】linux磁盘管理-LVM的创建与扩容管理

内容摘要

二、 LVM基本术语
首先是将物理存储介质分区,将分区使用pvcreate创建物理卷,然后创建vgcreate,将之前的物理卷放到一个卷组,最后采用lvcreate从卷组里边分配一个指定大小的逻
文章正文

 

二、 LVM基本术语

首先是将物理存储介质分区,将分区使用pvcreate创建物理卷,然后创建vgcreate,将之前的物理卷放到一个卷组,最后采用lvcreate从卷组里边分配一个指定大小的逻辑卷

1,PV  物理卷( Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

2,VG  卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

3,LV 逻辑卷(Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。

 

三,创建LVM过程。

1,分区。

新添加一块磁盘,比如/dev/sdb(20G大小),这里我们设置三个分区/dev/sdb1,/dev/sdb2,/dev/sdb3 分别设置1G。使用命令你fdisk 直接操作主分区。

2,制作pv

[[email protected] ~]# pvcreate  /dev/sdb{1,2}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

3,制作vg

[[email protected] ~]# vgcreate  Vg1   /dev/sdb1   /dev/sdb2
  Volume group "Vg1" successfully created

这里是将之前创建的两个物理卷都加入到了Vg1这个卷组里边。

4,制作lv

[[email protected] ~]# lvcreate  -n LV1  -L 1.5G Vg1
  Logical volume "LV1" created.

其中-n 为指定逻辑卷名字,-L指定大小,最后一个为卷组名,指从哪个卷组分配逻辑卷出来。

lv创建完毕,下边就可以直接进行格式化、挂载了。比如创建一个/log目录,将刚才的LV1进行格式化挂载:

[[email protected] ~]# mkfs.ext4   /dev/Vg1/LV1 
省略。。
Writing superblocks and filesystem accounting information: done 

[[email protected] ~]# mkdir  /log
[[email protected] ~]# mount  /dev/Vg1/LV1    /log/
[[email protected] ~]# df  -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G  1.2G   36G   4% /
devtmpfs                 901M     0  901M   0% /dev
tmpfs                    912M     0  912M   0% /dev/shm
tmpfs                    912M  8.6M  904M   1% /run
tmpfs                    912M     0  912M   0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M  15% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/mapper/Vg1-LV1      1.5G  4.5M  1.4G   1% /log

挂载完成,可以根据需要将其写入分区表/etc/fstab。

四,查看各种卷(各种查看)

 

查看PE:

[[email protected] ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               Vg1
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              255
  Free PE               0
  Allocated PE          255
  PV UUID               4yREkJ-yQyt-Szq3-KADc-ppoJ-y1G6-rYp37w
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               Vg1
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               126
  Allocated PE          129
  PV UUID               pG9wCX-rcWM-EBC3-4Cmb-VUTB-QDbM-LTCW1H

这里我们可以看到PE为默认的4MB。 当然,这个值也可以在创建vg时直接指定,比如:

vgcreate  -s  16M vg1  /dev/sdb1 /dev/sdb2

 

五,LVM的动态扩容
LVM的最大好处就是支持动态扩容,这里测试下。
我们查看当前的卷组大小以及已经分配的逻辑卷(之前创建了一个Vg1卷组2G,分了一个逻辑卷1.5G):

[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  Vg1      2   1   0 wz--n-   1.99g 504.00m
  centos   1   2   0 wz--n- <39.00g   4.00m
[[email protected] ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV1  Vg1    -wi-ao----  1.50g                                                    
  root centos -wi-ao---- 36.99g                                                    
  swap centos -wi-ao----  2.00g 

1,逻辑卷扩展:

[[email protected] ~]# lvextend  -L +300M  /dev/Vg1/LV1 
  Size of logical volume Vg1/LV1 changed from 1.50 GiB (384 extents) to 1.79 GiB (459 extents).
  Logical volume Vg1/LV1 successfully resized.
[[email protected] ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV1  Vg1    -wi-ao----  1.79g                                                    
  root centos -wi-ao---- 36.99g                                                    
  swap centos -wi-ao----  2.00g 
[[email protected] ~]# resize2fs  /dev/Vg1/LV1   #这里比如要冲洗刷新大小,否则磁盘大小变了但是文件系统不会实际分配大小。
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/Vg1/LV1 is mounted on /log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/Vg1/LV1 is now 470016 blocks long.

最新查看:

[[email protected] ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G  1.2G   36G   4% /
devtmpfs                 901M     0  901M   0% /dev
tmpfs                    912M     0  912M   0% /dev/shm
tmpfs                    912M  8.6M  904M   1% /run
tmpfs                    912M     0  912M   0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M  15% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/mapper/Vg1-LV1      1.8G  4.5M  1.7G   1% /log

2,卷组扩展
之前只将物理卷/dev/sdb1 /dev/sdb2加入到了卷组Vg1,现在我们再将/dev/sdb3增加到卷组Vg1

[[email protected] ~]# vgextend  Vg1  /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
  Volume group "Vg1" successfully extended
[[email protected] ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <39.00g    4.00m
  /dev/sdb1  Vg1    lvm2 a--  1020.00m       0 
  /dev/sdb2  Vg1    lvm2 a--  1020.00m  204.00m
  /dev/sdb3  Vg1    lvm2 a--  1020.00m 1020.00m
[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  Vg1      3   1   0 wz--n-  <2.99g <1.20g
  centos   1   2   0 wz--n- <39.00g  4.00m

最新查看,现在Vg1卷组已经到了3G大小。

六,LVM的缩减
LV缩减:将逻辑卷LV1,从刚才的1.8G缩小到1G。 原理是缩小文件系统大小,后操作逻辑卷大小。
说明:lvm支持在线缩小,但是ext4文件系统不支持在线缩小,btrfs支持在线缩小。目前ext4也只是一个过渡系统,以后必将被新的系统所替代,比如centos7默认的文件系统xfs。
btrfs特性:
1,扩展性。btrfs最重要的设计目标是应对大型机器对文件系统的扩展性要求。其整体性能不会随着系统容量的增加而降低。
2,数据一致性。
3,和多设备管理相关的特性。btrfs支持创建快照(snapshot)和科隆(clone)
总结:这些特性都是比较先进的技术,能够显著提高文件系统的时间/空间性能,包括延迟分配,小文件的存储优化,目录索引等。

缩减步骤:
1,取消lv卷挂载。

[[email protected] ~]# umount  /log/

2,检查并缩减大小。

[[email protected] ~]# e2fsck   -f  /dev/Vg1/LV1 
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/Vg1/LV1: 11/122880 files (9.1% non-contiguous), 17066/470016 blocks
[[email protected] ~]# resize2fs   /dev/Vg1/LV1   1000M   #这里针对文件系统
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/Vg1/LV1 to 256000 (4k) blocks.
The filesystem on /dev/Vg1/LV1 is now 256000 blocks long.

[[email protected] ~]# lvreduce  -L 1000M   /dev/Vg1/LV1  #针对逻辑卷
  WARNING: Reducing active logical volume to 1000.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce Vg1/LV1? [y/n]: y
  Size of logical volume Vg1/LV1 changed from 1.79 GiB (459 extents) to 1000.00 MiB (250 extents).
  Logical volume Vg1/LV1 successfully resized.

查看大小:

[[email protected] ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G  1.2G   36G   4% /
devtmpfs                 901M     0  901M   0% /dev
tmpfs                    912M     0  912M   0% /dev/shm
tmpfs                    912M  8.6M  904M   1% /run
tmpfs                    912M     0  912M   0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M  15% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/mapper/Vg1-LV1      952M  3.8M  884M   1% /log

注意:
如果要缩减的空间有数据,比如1.8G缩小到1000M,而里边本身已经存储了1.6G数据,那么会导致其中的0.6G数据丢失,更有可能会导致缩减后剩下的1000M数据不完整。

七,VG卷组的缩减
vg缩减:缩减时,可以不卸载正在使用中的LV。另外,只能缩减没有被使用的pv,如果被使用将无法缩减。如果缩减被使用的pv,会报错:

[[email protected] ~]# vgreduce   Vg1  /dev/sdb1
  Physical volume "/dev/sdb1" still in use

这里我们以缩减Vg1,其中的pv 物理卷/dev/sdb3为例:

[[email protected] ~]# vgreduce   Vg1  /dev/sdb3
  Removed "/dev/sdb3" from volume group "Vg1
[[email protected] ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <39.00g    4.00m
  /dev/sdb1  Vg1    lvm2 a--  1020.00m   20.00m
  /dev/sdb2  Vg1    lvm2 a--  1020.00m 1020.00m
  /dev/sdb3         lvm2 ---     1.00g    1.00g
[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  Vg1      2   1   0 wz--n-   1.99g <1.02g
  centos   1   2   0 wz--n- <39.00g  4.00m

通过pvs查看pv卷/dev/sdb3已经不在Vg1卷组里边了,而且通过vgs查看卷组大小,已经发生了变化。

八,LVM删除
步骤大概如下:
1,umount卸载。 比如:umount /dev/Vg1/LV1
2,删除逻辑卷 lvremove /dev/Vg1/LV1
3,删除卷组 vgremoce Vg1
4,删除物理卷 pvremove /dev/sdb1 …

参考文章:

Linux逻辑卷管理LVM详解

https://blog.csdn.net/ikikik2002/article/details/5187276

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!