您的位置:首页 > 其它

逻辑卷管理器(LVM)

2018-08-18 15:27 363 查看

LVM

 逻辑卷允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,其实是对磁盘空间、可以是硬盘、也可以是分区,而且可以有多个分区和磁盘,并且不要求大小一样,跟raid不一样,然后我们把普通的磁盘或者分区称为linux的块设备
  注意:在生产中逻辑卷需要配合硬件raid来使用

逻辑卷怎么管理和创建呢

  1、把块设备,普通的硬盘设备变成物理卷 Physical Volumes 简称PV
 如何创建物理卷用到的命令是pvcreate
   2、接着把创建好的物理卷加入到大的逻辑概念组中,叫作卷组 Volumes Group 简称VG
 创建卷组的命令 vgcreate
  3、逻辑卷 就是在卷组的基础上创建的逻辑的分区, 叫做logical volumes 简称 LV
 创建逻辑卷的命令 lvcreate

LVM: Logical Volume Manager,Version: 2

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
逻辑卷的核心就是dm
  设备名:/dev/dm-#
软链接:
  /dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/vol0-root
  /dev/VG_NAME/LV_NAME
    /dev/vol0/root
        PV:物理卷
        VG:卷组
        LV:逻辑卷
        PE:物理盘区
        LE:逻辑盘区
 功能:
    用来扩展或者缩减逻辑卷的时候一个单位,它把逻辑卷的总空间切割成一个一个的PE,它的增长或者缩减都是以PE的整数倍来实现的

pv管理工具;

  pvs;简要pv信息显示
  pvdisplay;显示pv的详细信息
  pvcreate /path/device  #创建pv

vg管理工具:

 1、显示卷组
   vgs
   vgdisplay
 2、创建卷组
  vgcreate[-s #[kKmMgGtTpPeE]] VolumeGroupNamePhysicalDevicePath[PhysicalDevicePath...]
 3、管理卷组
  vgextendVolumeGroupNamePhysicalDevicePath [PhysicalDevicePath...]
  vgreduceVolumeGroupNamePhysicalDevicePath [PhysicalDevicePath...]
 4、删除卷组
  先做pvmove,再做vgremove

lv管理工具

 1、显示逻辑卷
  lvs
  lvdisplay
  2、创建逻辑卷
  lvcreate-L #[mMgGtT] -n NAME VolumeGroup
  lvcreate-l 60%VG -n mylvtestvg
  lvcreate-l 100%FREE -n yourlvtestvg
  3、删除逻辑卷
  lvremove/dev/VG_NAME/LV_NAME
  4、重设文件系统大小
  fsadm[options] resize device [new_size[BKMGTEP]]
  resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

扩展和缩减逻辑卷

注意缩减逻辑卷只能在ext系列上进行,xfs只能扩容,不支持缩减、尤其注意缩减时要先做备份以免数据损坏
 1、扩展逻辑卷:
   lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
   resize2fs /dev/VG_NAME/LV_NAME
   lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
  2、缩减逻辑卷:
   umount/dev/VG_NAME/LV_NAME
   e2fsck -f /dev/VG_NAME/LV_NAME
   resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
   lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
   mount

实验操作

1、创建pv
[root@centos7 ~]# pvcreate /dev/sdb1 /dev/sdg

2、创建vg 指定PE大小为8M
[root@centos7 ~]# vgcreate vg0 -s 8M /dev/sd{b1,g}

3、创建逻辑卷
[root@centos7 ~]# lvcreate -n lv0 -L 2G vg0
[root@centos7 ~]# lvcreate -n mysql -l 100%FREE vg0

4、创建文件系统
mkfs.ext4 /dev/vg0/lv0
mkfs.xfs /dev/vg0/mysql

5、挂载逻辑卷
[root@centos7 ~]# mkdir /mnt/lv0
[root@centos7 ~]# mkdir /mnt/mysql
[root@centos7 ~]# mount /dev/vg0/lv0 /mnt/lv0/
[root@centos7 ~]# mount /dev/vg0/mysql /mnt/mysql/

6、扩容现有的逻辑卷
a、先扩容pv
[root@centos7 ~]# pvcreate /dev/sdc
b、再把pv新添加的硬盘/dev/sdc加到vg里
[root@centos7 ~]# vgextend vg0 /dev/sdc
c、扩展/dev/vg0/lv0
[root@centos7 ~]# lvextend -L +2G /dev/vg0/lv0
d、扩展之后空间没有同步还是原来的空间需要同步,同步前先确定是哪种的文件系统,比如说ext和xfs同步方法不同需要用df -hT看已挂载的文件系统
[root@centos7 ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        50G  4.0G   47G   8% /
........
/dev/mapper/vg0-lv0     ext4      2.0G  6.0M  1.8G   1% /mnt/lv0
/dev/mapper/vg0-mysql   xfs       2.0G   33M  2.0G   2% /mnt/mysql

e、同步/dev/vg0/lv0 ext系列同步resize2fs 后面跟的是设备名
[root@centos7 ~]# resize2fs /dev/vg0/lv0

f、扩展xfs文件系统的/dev/vg0/mysql
[root@centos7 ~]# lvextend -L +1G /dev/vg0/mysql
g、扩展完之
5ae
后也需要同步,不过xfs文件系统同步跟ext系列不一样 xfs_growfs 跟上挂载点即可
[root@centos7 ~]# xfs_growfs /mnt/mysql/

h、扩展空间+自动同步文件系统,ext和xfs通用,一步到位
[root@centos7 ~]# lvextend -r -L +1G /dev/vg0/mysql

7、缩减空间,xfs缩减不了、只有ext系列可以缩减,注意:缩减一定要先做备份
1、缩减不支持在线缩减必须要先取消挂载
[root@centos7 ~]# umount /mnt/lv0/
2、检查文件系统的完整性,这步是必不可少的,没有这步不能进行下一步的操作
[root@centos7 ~]# fsck -f /dev/vg0/lv0
3、缩减先缩减文件系统、跟创建时相反
[root@centos7 ~]# resize2fs /dev/vg0/lv0 2G
4、缩减逻辑卷,大小要和缩减文件系统统一,查看缩减后的大小
[root@centos7 ~]# lvreduce -L 2G /dev/vg0/lv0
[root@centos7 ~]# lvdisplay /dev/vg0/lv0
5、操作完之后再挂载
mount /dev/vg0/lv0 /mnt/lv0

跨主机迁移卷组

## 为了不出现意外,万一对方服务器已有了相同的逻辑卷名称,需要先改名
1、改名,只要改vg名即可,逻辑卷名也可以改
[root@centos7 mysql]# vgrename vg0 newvg0

60dc
[root@centos7 mysql]# lvrename /dev/newvg0/lv0 newlv0
2、取消挂载,因为这里另外一个逻辑卷也在同一个磁盘上都得取消挂载
[root@centos7 mysql]# umount /mnt/lv0/
[root@centos7 ~]# umount /mnt/mysql/
3、设置卷组为非活动状态,查看是否为非活动状态
[root@centos7 ~]# vgchange -an newvg0
0 logical volume(s) in volume group "newvg0" now active
[root@centos7 ~]# lvdisplay
4、把卷组设置成导出状态
[root@centos7 ~]# vgexport newvg0
Volume group "newvg0" successfully exported
[root@centos7 ~]# lvdisplay
Volume group newvg0 is exported
5、把硬盘拔出接到另外一台上去
6、导入新加的,要倒整体导入
[root@centos7 ~]# vgimport newvg0
7、激活
[root@centos7 ~]# vgchange -ay newvg0
8、挂载
mount /dev/newvg0/newlv0 /mnt/newlv0

逻辑卷管理器快照

1、快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
2、对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
3、快照只有在它们和原来的逻辑卷不同时才会消耗空间
  a、在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  b、当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
  c、快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
  d、建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照

4、快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享



5、由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量

快照实例

逻辑卷做快照
[root@centos7 ~]# lvcreate -n lv0-snapshot -s -L 1G /dev/newvg0/lv0
Logical volume "lv0-snapshot" created.
查看
[root@centos7 ~]# lvdisplay

为快照创建一个挂载点,再挂载
[root@centos7 ~]# mkdir /mnt/lv0-snapshot
[root@centos7 ~]# mount /dev/newvg0/lv0-snapshot /mnt/lv0-snapshot/

恢复快照
1、先取消挂载,逻辑卷和逻辑卷的快照都要取消挂载
[root@centos7 ~]# umount /mnt/lv0
[root@centos7 ~]# umount /mnt/lv0-snapshot/
2、还原
[root@centos7 ~]# lvconvert --merge /dev/newvg0/lv0-snapshot

xfs文件系统做快照
1、创建快照
lvcreate -n mysql-snapshot -s -L 1G /dev/newvg0/mysql
2、创建挂载点,并挂载
mkdir /mnt/mysql-sn
mount /dev/newvg0/mysql-snapshot /mnt/mysql-sn/
# 如果挂载的时候报错用下面这条命令挂载
mount -o nouuid /dev/newvg0/mysql-snapshot /mnt/mysql-sn/
3、恢复
[root@centos7 ~]# umount /mnt/mysql-sn/
[root@centos7 ~]# lvconvert --merge /dev/newvg0/mysql-snapshot
设置为只读状态
[root@centos7 ~]# lvcreate -n lv0-snapshot -p r -s -L 1G /dev/newvg0/lv0

删除快照
lvremove /dev/newvg0/lv0-snapshot
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  逻辑卷 管理器 LVM