美文网首页
LVM-逻辑卷管理

LVM-逻辑卷管理

作者: 小白要成砖家 | 来源:发表于2017-07-21 22:11 被阅读0次

    相关概念

    物理卷:PV

    物理卷就是 底层 真正存储数据的设备,这个设备可以是 整个磁盘也可以是 磁盘的某一个分区。

    卷组:VG

    顾名思义是组,是物理卷的组,建立在物理卷之上,由一个或多个物理卷组成;就是 将多个物理卷融合在一起来提供容量。

    逻辑卷:LV

    逻辑卷就是建立在卷组之上,创建逻辑卷就是在 卷组中 『切』下一部分空间来使用。

    物理区域:PE

    每个物理卷 被 划分的最小单位,也是寻址的最小单位,默认是4M,也可以通过选项进行修改。

    逻辑区域:LE

    逻辑卷被划分的 最小单位,也是寻址的最小单位,在同卷组中,PE和LE 的大小是一一对应的。

    使用逻辑卷的优点:

    灵活管理、动态扩容、在线扩容、离线裁剪、数据条带化、数据镜像

    总结:

    真实的物理设备——>逻辑上做成物理卷(pv)——>卷组(vg)——>逻辑卷(lv)


    实例部分:

    Demo A . 创建 一个 1G的 逻辑卷,并且挂载使用。(必须挂载到挂载点才可以使用)

    (实现环境:已经存在可用磁盘而且已经分好区,用第一个主分区进行实现)

    1. 查看磁盘分区情况:lsblk 命令


    1. 创建物理卷

    # pvcreate /dev/sdb1

    创建成功会有成功信息

    查看 PV 信息 命令:

    # pvs  简单查看

    #  pvdisplay 查看PV的详细信息

    2. 创建卷组

    命令:vgcreate VG名字 物理卷

    # vgcreate  vg1  /dev/sdb1

    创建 卷组 vg1 ,并且把物理卷 sdb1 加入卷组,卷组中可以加入多个 物理卷

    查看 VG 信息命令:

    # vgs 

    # vgdisplay

    命令 vgcreate 的常用选项

    -s:卷组中物理卷的PE大小设置,默认下是 4M

    -p:卷组中允许添加的最大物理卷数

    -l :卷组上允许创建的最大逻辑卷数

    注意: 创建 卷组的命令中,可以直接使用 /dev/sdb1 , 不用先创建物理卷,这个命令会把/dev/sdb1 自动创建为物理卷再添加到 卷组 中。

    3. 创建逻辑卷

    命令:lvcreate -n  LV名字 -L 容量 卷组名

    #  lvcreate -n lv1 -L 2G vg1 

    在 卷组 vg1 中 切下 2G 的容量 来创建 逻辑卷 lv1 

    注意: 创建好 逻辑卷 后,会映射到以下两个路径:

    #  ll /dev/vg1/lv1

    lrwxrwxrwx. 1 root root 7 7月21 19:41/dev/vg1/lv1->../dm-0

    #  ll /dev/mapper/vg1-lv1

    lrwxrwxrwx. 1 root root 7 7月21 19:41/dev/mapper/vg1-lv1->../dm-0

    这两个路径指的同一个文件。

    详细内容查看:Linux中/dev/mapper目录浅谈

    4. 格式化逻辑卷

    格式化的作用:

    格式化后才能挂载使用

    命令:mkfs.ext4 /dev/vg1/lv1 或者   mkfs.ext4  /dev/mapper/vg1-lv1

    对逻辑卷进行格式化,将文件系统格式化为 ext4

    5. 挂载使用

    mount   /dev/vg1/lv1  /test 

    (/test 目录 已经存在,如果不存在,创建 mkdir  /test 


    Demo B . 在线扩容逻辑卷

    扩容逻辑卷 分为两种情况:

    (a)卷组的容量足够扩容逻辑卷:

    1. 查看vg 的信息 :# vgs

    VG   #PV  #LV   #SN     Attr      VSize         VFree

    vg1   1      1          0   wz--n-       1.86g         880.00m

    2. 其中 VFree 就是 还可用容量,如果这个 容量 大于 LV 需要扩展的容量 ,那么直接对 LV 扩容:

    #  lvextend -L +0.5G  /dev/vg1/lv1  在原来的基础上 增加 0.5G 

    或者: 

    #  lvextend -L  1.5G   /dev/vg1/lv1  将 LV 扩容 到 1.5G 

    3. 将扩容的LV  同步文件系统

    #  resize2fs  /dev/vg1/lv1 

    (b)卷组的容量不够扩容逻辑卷

    1. 卷组(VG)的容量不够 直接给  逻辑卷(LV)扩容的情况下,那么首先需要进行扩容的 是 卷组(VG)。

    命令: vgextend  VG名  物理卷(或直接是 设备)

    #  vgextend  vg1  /dev/sdb3 

    %卷组是由 物理卷 组成,如果直接将设备 加入卷组,那么系统会自动的把设备 创建为 物理卷(PV),然后再加入卷组%

    2. 再查看VG的可用容量是否满足 LV 所需大小

    #  vgs 

    如果不够,继续扩容 VG 的 容量,如果足够,那么就是跟 a 情况 步骤一样

    注意点: 扩容逻辑卷后,一定要 进行 文件系统的扩容,就是同步文件系统。不管是扩容还裁剪,都要进行 同步文件系统。


    Demo C . 离线裁剪逻辑卷容量

    > 做好数据备份 通过一些 备份方法对数据进行备份

    > 卸载逻辑卷

    # umount  /root/stu1

    > 先裁剪文件系统(同步文件系统)

    %区别 扩容 操作中,先扩容再同步文件系统,裁剪逻辑卷是先 裁剪文件系统%

    # resize2fs  /dev/vg1/lv1 1G    ---裁剪到 1G 的容量

    #  e2fsck  -f  /dev/vg1/lv1        ---检查 磁盘

    > 裁剪逻辑卷

    #  lvreduce -L 1G  /dev/vg1/lv1

    或者

    # lvreduce -L 1G  /dev/mapper/vg1-lv1

    lvs 对 逻辑卷信息查看,如果没有问题的话

    > 重新挂载使用

    #  mount  /dev/vg1/lv1  /root/stu1 

    裁剪的注意点:

    1. 裁剪前 最好 做个数据备份

    2. 裁剪 后的容量大小 一定要 大于 数据的容量大小


    Demo D . 逻辑卷实现条带化

    概念:把保存在逻辑卷上的数据分成 n 等分,分别同时写入 到不同的物理卷中,简单理解为:条带化就是,在卷组中 有多个 物理卷,在卷组的基础上创建一个逻辑卷,这个逻辑卷的容量 是 由 卷组中所有的 物理卷 平均提供同等的容量给逻辑卷,所以 逻辑卷存储的数据 是 分成 多个 等分,存入 卷组的 物理卷中。

    优缺点:可以提高数据的读写速率;如果任何一个 涉及到 的 物理卷损坏,数据都将无法恢复。

    > 创建条带化的逻辑卷

    # lvcreate -n lv1  -L 1G  -i 2 vg1 /dev/sdb[12]

    选项 :i  ------ 指定条带化的个数(指定条带化的个数为2 ,那么表示lv1 的1G 的容量 分别 来自 物理卷 /dev/sdb1 的 0.5G 和 /dev/sdb2 的0.5G)。

    > 格式化文件系统

    #  mkfs.ext4  /dev/vg1/lv1

    > 挂载使用

    #  mount /dev/vg1/lv1  /root/stu1

    > 测试

    #  iostat  -d  -m  /dev/sdb[12]  2  

    :-d   ------查看磁盘

        -m  -------以什么速度显示信息,表示Mb/s

         2   -------每隔2s 显示一次 *  如果 2 后面还接有数字,代表总共显示多少次


    Demo D . 逻辑卷实现镜像

    概念:对某个逻辑卷做数据镜像,实现数据备份作用

    > 创建一个互为镜像的逻辑卷

    # lvcreate  -n lv2  -L 0.7G  -m  1 vg2  dev/sdb[34]

    选项:-m       ---------指定镜像的个数

    > 查看镜像数据的完成

    #  lvs   

    > 格式化文件系统,挂载使用

    mkfs.ext4  /dev/vg2/lv2

    mkdir  /root/stu2

    mount  /dev/vg2/lv2  /root/stu2

    > 测试验证

    #  dd  if = /dev/zero  of = /dev/sdb3  bs = 1M count = 300

    #  vgredue  --removemissing  -f  vg2 ----强制从卷组中移除损坏的盘

    > 再次将 逻辑卷 挂载使用,我们需要将坏的盘 修好换成 健康的 盘 让它 再次互为镜像

    #  lvconvert   -m  1 /dev/vg2/lv2  /dev/sdb[34]


    练习:

    1、添加一块新的10g硬盘到你的linux系统中,并将其分为2个分区(大小自己决定),如sdb1和sdb2

    答: lsblk -----查看磁盘情况

            df -h  ------查看所有分区的挂载情况

            fdisk    /dev/sdb    -------对指定的 硬盘(dev/sdb) 进行分区

    分区详情:

    2、创建大小为2G的逻辑卷lv01挂载到系统中的/u01目录下面,并且在/u01目录下面创建file1~file5 5个文件

    答: # vgcreate  vgName  /dev/sdb1           -----创建卷组

            # lvcreate  -n  lv01  -L 2G vgName       -----创建逻辑卷

            # mkfs   -t ext4  /dev/vgName/lv01 或者  mkfs.ext4  /dev/vgName/lv01   ---格式化

            # mkdir  /u01                                         ------创建 目录 /u01

           #  mount   /dev/vgName/lv01  /u01         -----挂载到 目录 /u01

           # cd /u01                                                  ------切换到 /u01目录

           #  touch file{1..5}                                      -------创建文件file1...file5

           #  ll                                                           -------查看

    3、假设sdb1分区有坏块,现在需要将sdb1分区上的数据快速移动到另外的硬盘sdb2上,怎么做?

    答: #  vgextend  vg01 /dev/sdb2                   -----------把/dev/sdb2添加到卷组

            #  pvmove   /dev/sdb1  /dev/sdb2           -----------把/dev/sdb1的数据移动/dev/sdb2

    *  pvmove 命令 通过 man pvmove 来查看详情。

    4、由于业务需要,/u01目录需要扩大到9G,怎么做?

    答: #  vgs                          -------------------查看vg的剩余容量

    如果不够的话:

            #  vgextend  vg01  /dev/sdb3(/dev/sdc1....4) --------扩展VG容量  

            #  lvextend   -L 9G /dev/vg01/lv01      ------------------扩展LV容量

            #  resize2fs  /dev/vg01/lv01              -------------------同步文件系统

    5、新建一个卷组vg02,PEsize为8M,在卷组中创建一个名为lv02的逻辑卷,大小为50个pe,格式化成ext3的文件系统挂载使用.

    答:  #  vgcreate  -s 8M vg03  /dv/sdc1

             #   lvcreate  -n lv02  -l 50  vg02 

             #   mkfs.ext3  /dev/vg02/lv02  

             #   mount  /dev/vg02/lv02  /root/stu2

    扩展:

    1、测试验证已有逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取到原来的数据?需要怎么做?

    答: 不能正常的读取原来的数据,要  激活 卷组,才可以挂载使用

    vgchange  命令 激活卷组

    2、测试验证已有互为镜像的逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取数据?怎么做?

    答: 

    #  lvmdiskscan     ------扫描块设备,查看逻辑卷

    源端Server:

    #  umount  /root/stu2    -------------------------卸载

    # lvchange  -an  /dev/vg02/lv01   ------------激活逻辑卷

    # vgchange  -an  vg01  -------------------------激活卷组

    # vgexport    vg01         -------------------------导出卷组

    目标段Server:

    #  vgimport  vg01        ---------------------------导入卷组

    #  vgchange  -an  vg01          ------------------激活卷组

    #  mount  /root/test       --------------------------挂载使用

    相关文章

      网友评论

          本文标题:LVM-逻辑卷管理

          本文链接:https://www.haomeiwen.com/subject/aogekxtx.html