zoukankan      html  css  js  c++  java
  • LVM

    LVM——Logical Volume Manager(逻辑卷管理)

    LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。

    LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!

    概念

    ①PE(Physical Extend) 物理拓展

    ②PV(Physical Volume) 物理卷

    ③VG(Volume Group) 卷组

    ④LV(Logical Volume) 逻辑卷

    原理

    (1)物理磁盘被格式化为PV,空间被划分为一个个的PE

    (2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

    (3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

    (4)LV现在就直接可以格式化后挂载使用了

    (5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

     

    PV(物理卷)操作

      创建:pvcreate + 物理设备/分区/raid

    [root@localhost ~]# pvcreate /dev/hda{6,7,8,9}
      Physical volume "/dev/hda6" successfully created
      Physical volume "/dev/hda7" successfully created
      Physical volume "/dev/hda8" successfully created
      Physical volume "/dev/hda9" successfully created

      删除pv:pvremove + 物理设备/分区/raid

    [root@localhost ~]# pvremove /dev/sdb2
    Labels on physical volume "/dev/sdb2" successfully wiped

      扫描:pvscan

    [root@localhost ~]# pvscan
    No matching physical volumes found    #找不到任何的 PV 存在!

      查看:pvdisplay

    [root@localhost ~]# pvdisplay
      "/dev/hda6" is a new physical volume of "1.40 GB"
      --- NEW Physical volume ---
      PV Name               /dev/hda6  #实际的 partition 分区名称
      VG Name                          #因为尚未分配出去,所以空白!
      PV Size               1.40 GB    #就是容量说明
      Allocatable           NO         #是否已被分配,结果是 NO
      PE Size (KByte)       0          #在此 PV 內的 PE 大小
      Total PE              0          #共分割出几个 PE
      free PE               0          #沒被 LV 用掉的 PE
      Allocated PE          0          #尚可分配出去的 PE 数量
      PV UUID               Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN

      移动:pvmove(数据搬迁)

     [root@redhat6 ~]# pvmove /dev/sdb/dev/sdb: Moved: 0.8%
      /dev/sdb: Moved: 28.3%
      /dev/sdb: Moved: 42.5%
      /dev/sdb: Moved: 57.2%
      /dev/sdb: Moved: 72.8%
      /dev/sdb: Moved: 92.6%
      /dev/sdb: Moved: 100.0%

      列出所有pv:pvs

    root@ubuntu:/# pvs
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      PV         VG   Fmt  Attr PSize PFree
      /dev/sda3  myVG lvm2 a--  7.45g 7.45g
      /dev/sda4  myVG lvm2 a--  4.66g 4.66g

    VG(卷组)操作

      创建:vgcreate + 卷组名(自定义) + 物理卷(pv)

    root@ubuntu:/# vgcreate myVG /dev/sda{3,4}
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Volume group "myVG" successfully created

      删除:vgremove  

    [root@www ~]# vgremove vg1000   #删除卷组"vg1000"
    Volume group "vg1000" successfully removed

      扩展:vgextend(新增一个pv到卷组)

    root@ubuntu:/# vgextend myVG /dev/sda4
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Volume group "myVG" successfully extended

      缩小:vgreduce(将一个pv从卷组中拿走,在执行之前一定要执行pvmove将该pv数据挪到其他pv)

    root@ubuntu:/# vgreduce myVG /dev/sda4
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Removed "/dev/sda4" from volume group "myVG"

      扫描:vgscan

      显示:vgdisplay

    root@ubuntu:/# vgdisplay 
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      --- Volume group ---
      VG Name               myVG
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               12.11 GiB
      PE Size               4.00 MiB  //可以修改,在创建时加选项 -s(+单位)
      Total PE              3099
      Alloc PE / Size       0 / 0   
      Free  PE / Size       3099 / 12.11 GiB
      VG UUID               LhGoo2-IZIb-330C-0MQu-HEz1-J97y-BlP7AE

      列出所有vg:vgs

    root@ubuntu:/# vgs
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      VG   #PV #LV #SN Attr   VSize  VFree 
      myVG   2   0   0 wz--n- 12.11g 12.11g

    LV(逻辑卷)操作

      创建:lvcreate  -L (大小) -n(指定名称) VG组名

       1. 同一个卷组上可以创建多个逻辑卷

    root@ubuntu:/# lvcreate -L 50M -n myLV myVG
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Rounding up size to full physical extent 52.00 MiB
      Logical volume "myLV" created.

      删除:lvremove  ( 删除前需要先卸载 )

    root@ubuntu:/# lvremove /dev/myVG/myLV 
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
    Do you really want to remove and DISCARD active logical volume myLV? [y/n]: y
      Logical volume "myLV" successfully removed

      扩展:lvextend

      缩小:lvreduce

      列出:lvs

    root@ubuntu:/#  lvs
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      myLV myVG -wi-a----- 52.00m  

      展示:lvdisplay

    root@ubuntu:/# lvdisplay 
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      --- Logical volume ---
      LV Path                /dev/myVG/myLV
      LV Name                myLV
      VG Name                myVG
      LV UUID                arp8Y1-ThlO-oCas-5XGP-juPF-tB9x-5v2hyS
      LV Write Access        read/write
      LV Creation host, time ubuntu, 2018-05-10 10:20:30 -0700
      LV Status              available
      # open                 0
      LV Size                52.00 MiB
      Current LE             13
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0

    挂载

     挂载前先创建文件系统

    root@ubuntu:/# mke2fs -j /dev/myVG/myLV 
    mke2fs用于快速格式化,选项

    ‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

    ‘-i’ 设定inode的大小

    ‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

    ‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

    ‘-L’ 预设该分区的标签label

    ‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

    ‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4.

    resize2fs重新调整文件系统大小

      -p 当前分区有多大则调整到多大

    扩展逻辑卷

       可以在线进行,不需要卸载

       顺序:扩展物理边界 --> 扩展逻辑边界  

        扩展物理边界  lvextend  -L [+]大小  /逻辑卷路径

    root@ubuntu:/# lvextend -L 100M /dev/myVG/myLV 
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Size of logical volume myVG/myLV changed from 52.00 MiB (13 extents) to 100.00 MiB (25 extents).
      Logical volume myLV successfully resized.

       扩展逻辑边界  resize2fs  /逻辑卷路径  大小(扩展到多大)

    root@ubuntu:/mnt# resize2fs -p /dev/myVG/myLV 
    resize2fs 1.42.13 (17-May-2015)
    Filesystem at /dev/myVG/myLV is mounted on /mnt/test; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/myVG/myLV is now 155648 (1k) blocks long.

    缩小逻辑卷

      顺序:缩小逻辑边界 --> 缩小物理边界

       注意

       1. 不能在线缩减,需要先卸载

    root@ubuntu:/mnt# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    udev                   481M     0  481M   0% /dev
    tmpfs                  100M  6.5M   94M   7% /run
    /dev/sda1               19G  4.8G   13G  27% /
    tmpfs                  500M  252K  500M   1% /dev/shm
    tmpfs                  5.0M  4.0K  5.0M   1% /run/lock
    tmpfs                  500M     0  500M   0% /sys/fs/cgroup
    tmpfs                  100M   44K  100M   1% /run/user/1000
    /dev/mapper/myVG-myLV  144M  1.6M  135M   2% /mnt/test
    root@ubuntu:/# umount /mnt/test 

       2. 确保缩减后的空间依然能够存下当前数据

       3. 在缩减之前应该先强行检查文件,确保文件系统处于一致性状态

    root@ubuntu:/# e2fsck -f  #强行检查

      缩小逻辑边界

        resize2fs  /逻辑卷路径  大小(扩展到多大)

    root@ubuntu:/# resize2fs /dev/myVG//myLV 100M
    resize2fs 1.42.13 (17-May-2015)
    Resizing the filesystem on /dev/myVG//myLV to 102400 (1k) blocks.
    The filesystem on /dev/myVG//myLV is now 102400 (1k) blocks long.

      缩小物理边界

        lvreduce 

    root@ubuntu:/# lvreduce -L 100M /dev/myVG/myLV 
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      WARNING: Reducing active logical volume to 100.00 MiB
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce myLV? [y/n]: y
      Size of logical volume myVG/myLV changed from 152.00 MiB (38 extents) to 100.00 MiB (25 extents).
      Logical volume myLV successfully resized.
    重新挂载
    root@ubuntu:/# mount /dev/myVG/myLV /mnt/test
    检查磁盘情况
    root@ubuntu:/# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    udev                   481M     0  481M   0% /dev
    tmpfs                  100M  6.5M   94M   7% /run
    /dev/sda1               19G  4.8G   13G  27% /
    tmpfs                  500M  252K  500M   1% /dev/shm
    tmpfs                  5.0M  4.0K  5.0M   1% /run/lock
    tmpfs                  500M     0  500M   0% /sys/fs/cgroup
    tmpfs                  100M   44K  100M   1% /run/user/1000
    /dev/mapper/myVG-myLV   93M  1.6M   87M   2% /mnt/test

       

    现实快照卷

    注意:

      1. 声明周期为整个数据时长,在这段时间内,增长数据不能超过快照卷大小

      2. 快照卷是只读

      3. 和原卷在同一卷组内

    eg:对 / dev / myVG / myLV 创建快照卷 

    root@ubuntu:/# lvcreate -L 50M -n myLV_snap -s -p r /dev/myVG/myLV
      /run/lvm/lvmetad.socket: connect failed: No such file or directory
      WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
      Rounding up size to full physical extent 52.00 MiB
      Logical volume "myLV_snap" created.

    然后挂载就可以使用

    root@ubuntu:/# mount /dev/myVG/myLV_snap /mnt/test2

    最后对test2目录进行备份即可

    #备份完成后进行卸载,然后删除快照卷
    root@ubuntu:/mnt# umount /mnt/test2
    root@ubuntu:/mnt# lvremove /dev/myVG/myLV_snap
  • 相关阅读:
    AutoMapper用法
    这些基础却重要的面向对象概念,你还记得多少
    Ajax工作原理
    CSS中的绝对定位与相对定位
    NET中的Memcached.ClientLibrary使用详解
    经典Linq实例语句
    软件工程的意义
    C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
    属性与字段的区别
    SQL 递归树 子父节点相互查询
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9022685.html
Copyright © 2011-2022 走看看