LVM-逻辑卷管理

一、LVM简介

LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
简单来说,屏蔽底层磁盘布局,便于动态管理磁盘容量

二、一些术语

(1)物理存储设备(The physical media):指系统的存储设备文件,如:/dev/hda1、/dev/sda等等。
(2)物理卷(physical volume):简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
(3)卷组(Volume Group):简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义。
(4)PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。
(5) 逻辑卷(logical volume):简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组。
(6)LE(logical extent)逻辑区域:逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域大小。LE的大小和PE的大小一样。
(7)VGDA(Volume Group Descriptor Area)卷组描述符区域:和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的卷组描述符区域中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符和一些PE描述符。

三、常用命令

任务PVVGLV
创建pvcreatevgcreatelvcreate
删除pvremovevgremovelvremove
扫描列表pvscanvgscanlvscan
显示属性pvdisplayvgdisplaylvdisplay
显示相关信息pvsvgslvs
扩展vgextendlvextend
缩减vgreducelvreduce

创建逻辑卷三步骤
1.创建pv
2.创建vg
3.创建lv
删除逻辑卷三步骤
1.删除lv
2.删除vg
3.删除pv

四、创建逻辑卷

在这里插入图片描述
以此图说明
1.添加三块硬盘大小分别为3G,2G,1G
[root@server ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0   20G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP]
sdb      8:16   0    3G  0 disk
sdc      8:32   0    2G  0 disk
sdd      8:48   0    1G  0 disk

2.将sdb划分为三个分区,打标签8e,sdc划分为两个分区,打标签8e,sdd不变
[root@server ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0   20G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP]
sdb      8:16   0    3G  0 disk
├─sdb1   8:17   0    1G  0 part
├─sdb2   8:18   0    1G  0 part
└─sdb3   8:19   0 1023M  0 part
sdc      8:32   0    2G  0 disk
├─sdc1   8:33   0    1G  0 part
└─sdc2   8:34   0 1023M  0 part
sdd      8:48   0    1G  0 disk

3.按图示创建pv
[root@server ~]# pvcreate /dev/sdb2 /dev/sdb3 /dev/sdc1 /dev/sdc2 /dev/sdd

  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdc2" successfully created
  Physical volume "/dev/sdd" successfully created

[root@server ~]# pvs

  PV         VG   Fmt  Attr PSize    PFree
  /dev/sdb2       lvm2 ---     1.00g    1.00g
  /dev/sdb3       lvm2 ---  1023.00m 1023.00m
  /dev/sdc1       lvm2 ---     1.00g    1.00g
  /dev/sdc2       lvm2 ---  1023.00m 1023.00m
  /dev/sdd        lvm2 ---     1.00g    1.00g

4.创建vg
[root@server ~]# vgcreate vg0 /dev/sdb2 /dev/sdb3 /dev/sdc1
Volume group “vg0” successfully created
[root@server ~]# vgcreate vg1 /dev/sdc2 /dev/sdd
Volume group “vg1” successfully created
[root@server ~]# vgs

  VG   #PV #LV #SN Attr   VSize VFree
  vg0    3   0   0 wz--n- 2.99g 2.99g
  vg1    2   0   0 wz--n- 1.99g 1.99g

注:使用 -s 可指定pe大小,默认为4MB
比如[root@server ~]# vgcreate -s 8M vg1 /dev/sdc2 /dev/sdd
5.创建lv
[root@server ~]# lvcreate -n lv1 -L 1G vg0
Logical volume “lv1” created.
[root@server ~]# lvcreate -n lv2 -L 1G vg0
Logical volume “lv2” created.
[root@server ~]# lvcreate -n lv3 -L 1G vg1
Logical volume “lv3” created.
[root@server ~]# lvs

  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg0  -wi-a----- 1.00g
  lv2  vg0  -wi-a----- 1.00g
  lv3  vg1  -wi-a----- 1.00g

注:-l 可指定pe的个数的大小
比如[root@server ~]# lvcreate -n lv3 -l 100 vg1
使用100个pe(默认4MB),即大小为400MB

6.分区情况
[root@server ~]# lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   30G  0 disk
├─sda1        8:1    0  200M  0 part /boot
├─sda2        8:2    0   20G  0 part /
└─sda3        8:3    0    2G  0 part [SWAP]
sdb           8:16   0    3G  0 disk
├─sdb1        8:17   0    1G  0 part
├─sdb2        8:18   0    1G  0 part
│ └─vg0-lv1 253:0    0    1G  0 lvm
└─sdb3        8:19   0 1023M  0 part
  ├─vg0-lv1 253:0    0    1G  0 lvm
  └─vg0-lv2 253:1    0    1G  0 lvm
sdc           8:32   0    2G  0 disk
├─sdc1        8:33   0    1G  0 part
│ └─vg0-lv2 253:1    0    1G  0 lvm
└─sdc2        8:34   0 1023M  0 part
  └─vg1-lv3 253:2    0    1G  0 lvm
sdd           8:48   0    1G  0 disk
└─vg1-lv3   253:2    0    1G  0 lvm
sr0          11:0    1  3.8G  0 rom  /mnt

7.格式化
[root@server ~]# mkfs.ext4 /dev/vg0/lv1
[root@server ~]# mkfs.ext4 /dev/vg0/lv2
[root@server ~]# mkfs.ext4 /dev/vg1/lv3
8.挂载
[root@server ~]# mkdir /lv{1,2,3}
[root@server ~]# mount /dev/vg0/lv1 /lv1/
[root@server ~]# mount /dev/vg0/lv2 /lv2/
[root@server ~]# mount /dev/vg1/lv3 /lv3/
[root@server ~]# df -h | grep lv

/dev/mapper/vg0-lv1  976M  2.6M  907M   1% /lv1
/dev/mapper/vg0-lv2  976M  2.6M  907M   1% /lv2
/dev/mapper/vg1-lv3  976M  2.6M  907M   1% /lv3

9.测试
[root@server ~]# touch /lv1/test
[root@server ~]# touch /lv2/test
[root@server ~]# touch /lv3/test
[root@server ~]# ls /lv1 /lv2 /lv3

/lv1:
lost+found  test

/lv2:
lost+found  test

/lv3:
lost+found  test

五、修改逻辑卷大小

这里只以ext4格式的文件系统为例,xfs的文件系统只支持扩大逻辑卷,ext4支持扩大和缩减
操作之前需要先卸载(扩大不需要卸载),这里以lv1为实例
1.扩大
需保证vg容量足够使用,这里lv1使用的vg0还剩余1012MB
[root@server ~]# vgs

  VG   #PV #LV #SN Attr   VSize VFree
  vg0    3   2   0 wz--n- 2.99g 1012.00m
  vg1    2   1   0 wz--n- 1.99g 1016.00m

扩大100个pe大小,即400MB
[root@server ~]# lvextend -l +100 /dev/vg0/lv1
再扩大100M大小
[root@server ~]# lvextend -L +100M /dev/vg0/lv1
重新读取
[root@server ~]# resize2fs /dev/vg0/lv1
此时大小应该为1.5G,最开始的1G+400MB+100MB=1.5G
[root@server ~]# df -h /dev/vg0/lv1

Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv1  1.5G  3.0M  1.4G   1% /lv1

指定大小1.8G
[root@server ~]# lvextend -L 1.8G /dev/vg0/lv1
重新读取
[root@server ~]# resize2fs /dev/vg0/lv1
再次查看大小
[root@server ~]# df -h /dev/vg0/lv1

Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv1  1.8G  3.0M  1.7G   1% /lv1

2.缩减
减小逻辑卷可能造成数据损坏!
需先卸载
[root@server ~]# umount /lv1
使用e2fsck工具检查逻辑卷lv1
[root@server ~]# e2fsck -f /dev/vg0/lv1
确认缩小
[root@server ~]# resize2fs /dev/vg0/lv1 1G
[root@server ~]# lvreduce -L 1G /dev/vg0/lv1
重新挂载
[root@server ~]# mount /dev/vg0/lv1 /lv1
再次查看大小
[root@server ~]# df -h /dev/vg0/lv1

Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv1  976M  2.6M  912M   1% /lv1

3.扩大和缩减逻辑卷
可以使用lvresize -r的命令实现扩大或缩小,-r表示一并执行resize2fs
[root@server ~]# lvresize -r -L 1.5G /dev/vg0/lv1
[root@server ~]# lvs vg0/lv1

  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg0  -wi-ao---- 1.50g

[root@server ~]# lvresize -r -L 1.1G /dev/vg0/lv1
[root@server ~]# lvs vg0/lv1

  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg0  -wi-ao---- 1.10g

六、移除逻辑卷

1.卸载
[root@server ~]# umount /lv1/ /lv2/ /lv3/
2.移除lv
[root@server ~]# lvremove vg0/lv1 vg0/lv2 vg1/lv3
3.移除vg
[root@server ~]# vgremove vg0 vg1
4.移除pv
[root@server ~]# pvremove /dev/sdb2 /dev/sdb3 /dev/sdc1 /dev/sdc2 /dev/sdd
5.分区标签改回83或格式化硬盘
[root@server ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0   20G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP]
sdb      8:16   0    3G  0 disk
sdc      8:32   0    2G  0 disk
sdd      8:48   0    1G  0 disk

注:
扩大卷组vg时需要有新的分区或硬盘,使用vgextend命令
缩小vg时使用vgremove命令

如:给vg0扩大
vgextend vg0 /dev/sde
缩小
vgreduce vg0 /dev/sdd

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值