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
  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9022685.html
Copyright © 2011-2022 走看看