linux-存储管理_LVM

linux-存储管理_LVM

1. 为何要用LVM

	我们在对磁盘分区的大小进行规划时,往往不能确定每个分区使用的空间大小,只能凭经验分配一个大小,而我们通常使用的fdisk、gdisk等工具对磁盘分区后,每个分区的大小就固定死了,这么做的问题是
   (1)如果分区设置的过大,就白白浪费磁盘空间
   (2)如果磁盘设置的过小,就会导致磁盘空间不够用的情况
     方法一:重新对磁盘进行分区,
     方法二:通过软连接的方式将此分区的目录链接到另外一个分区。这样做虽然能够临时解决问题,但是给管理带来了麻烦。

2. 什么是LVM

	逻辑卷管理LVM是硬盘的一个系统工具,无论是linux系统还是类似的其他系统,都是非常好用。传统的分区使用固定大小分区,重新调整大小十分麻烦。LVM可以创建和管理逻辑卷,而不是直接使用物理磁盘。可以弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。
	
	通过lvm技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。
	
下面是LVM中主要涉及的一些概念。
    1、物理卷PV:
    	(physical volume),把常规的磁盘设备通过PVcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区(面粉)
    2、卷组VG:
    	(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小是多个硬盘之和。或者理解为由一个或者多个PV组成的一个整体(面团)
    3、逻辑卷LV
    	(logical volume),从卷组中划分需要的空间大小出来,用户仅需要对其格式化然后即可挂载使用,从VG中切割的空间用于创建文件系统。(切成馒头)
    4、基本单元PE
    	(physical extend),分配的逻辑大小的最小单元,默认为4M的基本块(假设分配100M逻辑空间,则需要创建25个PE)

3. LVM优缺点总结:

优点:
    1、可以在系统运行的状态下动态的扩展文件系统的大小,
    2、文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制,
    3、可以增加新的磁盘到LVM的存储中
    4、可以以镜像的方式冗余重要的数据到多个物理磁盘。
    5、可以方便的导出整个卷组到另外一台机器。
    
缺点:
    1、加入额外的操作,存取性能受到影响
    2、当卷组中的一个磁盘损坏时,整个卷组都会受影响
    
# 解释:LVM如果一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
    方案:底层用RAID+ 上层LVM=既有冗余又有动态扩展
        在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令只能在root权限下使用,并不允许快照卷组的使用)

4. LVM的基本使用

(1)下载安装包:
	yum install -y lvm2
    
(2)制作PV:可以对分区做,也可以对整块盘做
      1、制作PV
        [root@egon ~]# pvcreate /dev/sdb1 
        [root@egon ~]# pvcreate /dev/sdb2
      2、查看
    	[root@egon ~]# pvs
        PV VG Fmt Attr PSize PFree
        /dev/sdb1 lvm2 --- 1.00g 1.00g
        /dev/sdb2 lvm2 --- 1.00g 1.00g
        
(3)制作VG:将pv划入到vg中
    	[root@egon ~]# vgcreate vg1 /dev/sdb1 /dev/sdc 				
        Volume group "vg1" successfully created
        
        [root@egon ~]# vgs      查看
        VG #PV #LV #SN Attr VSize VFree
        vg1 2 0 0 wz--n- 20.99g 20.99g

(4)创建逻辑攒LVM 
    	从vg1中分出逻辑卷lv1_from_vg1、lv2_from_vg1
    	[root@egon ~]# lvcreate -L 100M -n lv1_from_vg1 vg1 #选项-L 逻辑卷的大小  -n 逻辑卷名字
        [root@egon ~]# lvcreate -L 200M -n lv2_from_vg1 vg1
        
        [root@egon ~]# lvs   查看
        LV VG Attr LSize Pool Origin Data% Meta% Move Log
        Cpy%Sync Convert
        lv1_from_vg1 vg1 -wi-a----- 100.00m
        lv2_from_vg1 vg1 -wi-a----- 200.00m
        
(5)格式与挂载
   	    [root@egon ~]# mkfs.xfs /dev/vg1/lv1_from_vg1
        [root@egon ~]# mkfs.xfs /dev/vg1/lv2_from_vg1
        
        [root@egon ~]# mount /dev/vg1/lv1_from_vg1 /test1/
		[root@egon ~]# mount /dev/vg1/lv2_from_vg1 /test2/
        df #查看设备内存及挂载信息

5. 在线动态扩容

在线动态扩容的意思就是:
	再不用卸载的情况下完成扩容。
	
命令如下:
    lvextend -L [+]MGT /dev/VG_NAME/VL_NAME # 注意:-L 100M与 —L+100M不是一个意思,或者是在原有的基础上扩容。
    
# 示例
    (1)新增一块盘或者一个分区
    	fdisk /dev/sdb ......
        partprobe
        ls /dev/sdb4	
        
    (2)新增一个PV
    	[root@egon ~]# pvcreate /dev/sdb4
        
    (3)把新增的PV扩到vg1里
        [root@egon ~]# vgextend vg1 /dev/sdb4
        [root@egon ~]# vgs #可以看到已经扩到VG1
        
    (4)接下来对lv1_from_vg1扩容
        [root@egon ~]# lvextend -L +1000M /dev/vg1/lv1_from_vg1
        [root@egon ~]# xfs_growfs /dev/vg1/lv1_from_vg1 #扩展逻辑卷后需要更新fs文件系统

6. 在线动态缩容与删除

(1)xfs不支持缩容 #实际结果也可以进行缩容
      	lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME 缩减逻辑卷
        
(2)删除
      1、删除lv之前需要先卸载挂载点
        [root@egon ~]# umount /test3
		[root@egon ~]# lvremove /dev/vg1/lv1_from_vg1
      
      2、删除vg
        [root@egon ~]# vgremove vg2
        
      3、删pv:只能删掉哪些不属于任何vg的pv
    	[root@egon ~]# pvremove /dev/sdb2
		[root@egon ~]# pvremove /dev/sdb3

7. 快照

1. 简介
	LVM机制提供了对lv做快照的功能,也就是可以给文件系统做一个备份,lvm的快照采用复制技术(copy-on-write,cow)这比传统的备份技术的效率要高很多。
    LVM采用的写时复制,是指当LVM快照创建的时候,仅创建实际数据的inode的硬链接(hard-link)。只要实际的数据没有改变,快照就只包含指向数据的inode指针,而非数据本身。快照会跟踪原始卷中的块的改变,一旦你更改了快照对应的文件或目录,这个时候原试卷上将要改变的数据就会改变之前拷贝到快照预留的空间。

	创建快照实际上也是创建一个逻辑卷,只不过改卷的属性与普通逻辑卷的属性有点不一样,我们可以通过上图来理解快砸数据卷(图中的实线框表示快照区域,虚线框表示文件系统)

强调:
	由于快照区与LV共享很多的PE区块,因此快照区与被快照的LV必须是同一个VG上头
	1、VG中需要预留放快照本身的空间,不能全部占满
    2、快照所在的VG需要与被备份的LV相同,不然会导致创建快照失败

总结:
	快照的本质是一个特殊的LV,创建快照后,如果源数据中的文件被更新了,会将老数据给快照的空间,这就要求快照的空间也是够用的。一般设置生与开始的LV的空间大小相同即可。
2. 利用快照恢复单个文件
(1)准备好初始数据
   	  [root@egon ~]# echo "hello egon" > /test1/1.txt
       
(2)查看vg1容量是够充足
       lv1_from_vg1 属于卷组vg1,而vg1有足够的容量来分配给快照卷
       vgs #查看卷组的数据
        
(3)在vg1卷组里创建一个lv1_from_vg1的逻辑卷 《-L 指定拍照的分区的大小》 《-s 将文件设置成snapshot》
    	[root@egon ~]# lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1 
	 
(4)查看
    	lvs 可以查看新建的逻辑卷及快照lv
        
(5)修改文件/test/1.txt 
    	[root@egon ~]# echo "egon say ladygaga" >> /test1/1.txt
		[root@egon ~]# cat /test1/1.txt
        
(6)恢复数据
    挂载快照:注意:快照在挂载的时候由于和原来的lvm是同一个uuid,而xfs是不允许相同uuid的文件系统挂载,所以需要加选项-o nouuid
    	[root@egon ~]# mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
        [root@egon ~]# cat /opt/1.txt
        hello egon
        [root@egon ~]# cp /opt/1.txt /test1/1.txt
        cp:是否覆盖"/test1/1.txt"? y
        [root@egon ~]# cat /test1/1.txt
        hello egon
        
fp: 如果要恢复的文件个数过多,可以直接合并
        mount /dev/vg1/lv1_from_vg1  /test1/ 
        echo hello egon > /test1/1.txt                                  # 在文件夹test1中添加数据1.txt
        lvcreate -L 1G -s -n lv1_from_vg1_snap  /dev/vg1/lv1_from_vg1   # 创建快照文件
        
        touch /test1/2.txt                                              # 在test1文件夹下面新建2.txt
        echo longge >>/test1/1.txt                                      # 在1.txt文件中添加数据
        
        mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/       # 因为快照的uuid与源文件的相同,使用nouuid
        [root@egon ~]# cat /opt/1.txt
		hello egon
        
        # 先卸载数据源与快照,再进行合并,快照会自动删除,一次性的
        [root@egon ~]# umount /test1 
        [root@egon ~]# umount /opt
        
        [root@egon ~]# lvconvert --mergesnapshot /dev/vg1/lv1_from_vg1_snap  # 将原始卷恢复到之前的状态
         merge 合并   convert 转变转换
        
        [root@egon ~]# mount /dev/vg1/lv1_from_vg1  /test1/            # 重现mount lv分区的数据
        [root@egon ~]# cat /test1/1.txt                                # 发现数据还原回来了
        hello egon
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I believe I can fly~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值