磁盘空间的动态管理<Lvm>

来源:互联网 发布:薛之谦的服装品牌淘宝 编辑:程序博客网 时间:2024/06/06 10:35

一.lvm(逻辑卷管理器)

1.基本概念

   pv(物理卷):  一般一块硬盘对应一个系统中的物理卷,指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备

   vg(卷组)    :  一个或多个物理卷组成一个卷组

   lvm(逻辑卷) : 拿出的卷组的一部分,只依赖于卷组,相当于一个硬盘分区,在此上才可建立文件系统

解决的问题与联系:一个人想分到两个橘子的0.3%,一个人想要0.65%,先得把两个橘子各榨成汁(这个汁便可看成pv)然后需要把这两杯汁倒在一个大容器里(混合在一起的汁便可看成vg),最后取出每人所需要的(所拿出的便是lvm).lvm可以进行拉伸、缩减和删除,这样就实现了一个对磁盘空间的动态管理。

2.lvm的建立

在上一博客中我们知道了怎么划分物理分区并掌握了修改分区的标签,现在先建立一个标签为lvm的分区。

   pvcreate  /dev/vdb1                                       ##创建物理卷

   vgcreate  vg0  /dev/vdb1                               ##创建物理卷组

   lvcreate -L  100M  -n  lv0  vg0                       ##创建逻辑卷  -L:Lvm的大小  -n:所创建lvm的名字

   mkfs.xfs  /dev/vg0/lv0                                    ##格式化所创建的设备

   mount  /dev/vg0/lv0    /mnt                            ##设备挂载投入使用



注意:在做以上命令之前,可以 watch -n 1 'pvs;echo===;vgs;echo===;lvs;echo===;df -h /mnt '来进行监控,这样有便于观察所创建lvm的过程


3.扩展lvm 

a. vg中容量足够的情况下(直接从vg中取得)

    lvextend   -L  300M  /dev/vg0/lv0                 ##拉升设备(只拉升系统设备)

    xfs_growfs  /dev/vg0/lv0                              ##拉升文件系统(只适合xfs类型)






b. vg中容量不足的情况下(先扩展vg容量)


   1)重新建立分区----/dev/vdb2


   2)再重新执行一次上面所写的lvm的建立


   3)执行完后,vg中的容量就会变得足够

以上所看到的分区的文件系统都是xfs,这种文件系统只能拉升,不能缩减,所以为了用户自由的使用设备出现了可以缩减的ext文件系统。

4.缩减lvm

  1)mkfs.ext4   /dev/vg0/lv0                          ##把文件系统先格式化成ext4类型


  2)umount    /mnt                                        ##进行卸载

  3)e2fsck  -f  /dev/vg0/lv0                           ##扫描设备,对之前的数据进行一个保护

  4)resize2fs   /dev/vg0/lv0   200M              ##文件系统的缩减

  5)mount  /dev/vg0/lv0    /mnt                     ##投入使用设备

  6)lvreduce  -L  200M  /dev/vg0/lv0            ##lvm的缩减



注意:扩增lvm时先扩增的是设备再是文件系统,缩减时先缩减的是文件系统再是设备

5.lvm的块照

目的:保护原始设备数据不被篡改


  1)lvcreate  -L  100M  -n  lv0backup   -s  /dev/vg0/lv0   ##照块照


  2)mount  /dev/vg0/lv0backup   /mnt                              ##直接挂载不需要格式化,因为读取的是母本设备

  3)测试

        rm  -fr   /mnt/file


        如果想要再看见删除的file

        umount  /mnt                                                             ##进行块照的卸载

        lvremove  /dev/vg0/lv0backup                                  ##删除块照


        再如上述步骤重新块照并挂载,便可以看到所删除的file

6.lvm的删除

  1)umount   /mnt                                                           ##先卸载


  2)lvremove  /dev/vg0/lv0                                             ##删除逻辑卷


  3)vgremove  vg0   /dev/vdb{1,2}                                  ##删除物理卷组


  4)pvremove  /dev/vdb{1,2}                                          ##删除物理卷  




二.卷组(vg)

1.移除存在数据的分区

   pvmove  /dev/vdb1   /dev/vdb2                  ##转移分区/dev/vdb1的数据到分区/dev/vdb2


   vgreduce  vg0  /dev/vdb1                          ##从vg中拿走分区/dev/vdb1



   pvremove  /dev/vdb1                                 ##从pv中删除分区/dev/vdb1



注意:一定要把有数据的分区进行转移再删除。