zoukankan      html  css  js  c++  java
  • LVM逻辑卷的配置和挂载使用

    LVM逻辑卷的配置和挂载使用

    为什么使用LVM?

    ①硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间

    ②用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去

    名词解释:

    PV: 物理

    VG:卷组

    LV :逻辑卷

    LVM配置步骤:

    1. 将磁盘加入pv # pvcreate /dev/sdb /dev/sdc /dev/sdd

    2. 将pv加入到vg卷组 # vgcreate datavg /dev/sdb /dev/sdc /dev/sdd

    3. 分配lv使用 # lvcreate -L 100M -n lv1 datavg

    4. 查看命令:pvs、vgs、lvs

    一、例如有三块硬盘: sdb、sdc、sdd

    先使用两块,sdd稍后用来示范VG扩展和移除

    [root@localhost ~]# lsblk |grep "sd[bcd]"
    sdb             8:16   0  204M  0 disk 
    sdc             8:32   0  204M  0 disk 
    sdd             8:48   0  204M  0 disk 
    [root@localhost ~]# lsblk
    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda             8:0    0   30G  0 disk 
    ├─sda1          8:1    0  200M  0 part /boot
    ├─sda2          8:2    0 25.8G  0 part 
    │ ├─rhel-root 253:0    0 23.8G  0 lvm  /
    │ └─rhel-home 253:1    0    2G  0 lvm  /home
    └─sda3          8:3    0    4G  0 part [SWAP]
    sdb             8:16   0  204M  0 disk 
    sdc             8:32   0  204M  0 disk 
    sdd             8:48   0  204M  0 disk 
    sr0            11:0    1  3.8G  0 rom  
    [root@localhost ~]#

    将sdb磁盘加入pv
    [root@localhost ~]# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]# pvs
      PV         VG   Fmt  Attr PSize   PFree  
      /dev/sda2  rhel lvm2 a--   25.80g      0 
      /dev/sdb        lvm2 ---  204.00m 204.00m
    [root@localhost ~]#

    如果加入失败可以先将磁盘格式化:mkfs.etx4 /dev/sdb 格式化成什么格式自己选,这里是ext4

    1. 查看pv创建情况:
    [root@localhost ~]# pvs
      PV         VG   Fmt  Attr PSize   PFree  
      /dev/sda2  rhel lvm2 a--   25.80g      0 
      /dev/sdb        lvm2 ---  204.00m 204.00m
    [root@localhost ~]#
    1. 再将sdc磁盘加入pv
    [root@localhost ~]# pvcreate /dev/sdc
      Physical volume "/dev/sdc" successfully created
    [root@localhost ~]# pvs
      PV         VG   Fmt  Attr PSize   PFree  
      /dev/sda2  rhel lvm2 a--   25.80g      0 
      /dev/sdb        lvm2 ---  204.00m 204.00m
      /dev/sdc        lvm2 ---  204.00m 204.00m
    [root@localhost ~]#
    • 思考:现在有两个PV物理卷了,我们需要将这两个物理卷加入卷组,所以需要创建一个卷组VG

    • 注意:在某个物理卷在加入卷组时,会将物理卷的最小存储单元设定为一个固定的值,这个值称为PE(physical extent)。这个值的创建,是为了保证用统一的最小分配单元来创建逻辑卷,不至于因为分配单元大小不同而造成空间浪费。举个例子:用于远洋运输的集装箱的设计是是有着统一标准的,最重要一点是集装箱大小完全相同,这样做的好处是集装箱相互堆叠在一起不会留下多余的空隙,完全利用了空间,且便于管理。设定PE的原因也与此相同。LVM以最小分配单元来创建逻辑卷,该最小分配单元的值称为LE(logical extent)。一般来说PE=LE,且大小为2^n。

      1. 创建名为datavg的卷组,并将sdb和sdc这两个物理卷加入到卷组datavg
    [root@localhost ~]# vgcreate datavg /dev/sdb /dev/sdc
      Volume group "datavg" successfully created
    [root@localhost ~]# vds
    bash: vds: command not found...

    通过以下两个命令可以看出sdb和sdc物理卷都已加入名为datavg的卷组中了

    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree  
      datavg   2   0   0 wz--n- 400.00m 400.00m
      rhel     1   2   0 wz--n-  25.80g      0 
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree  
      /dev/sda2  rhel   lvm2 a--   25.80g      0 
      /dev/sdb   datavg lvm2 a--  200.00m 200.00m
      /dev/sdc   datavg lvm2 a--  200.00m 200.00m
    [root@localhost ~]#

    datavg卷组还可以扩展新的pv ,这里我们暂时不扩展

    1. 分配LV逻辑卷使用(利用datavg卷组创建一个名为lv1的逻辑卷,大小为100M)
    [root@localhost ~]# lvcreate -L 100M -n lv1 datavg 
      Logical volume "lv1" created.
    [root@localhost ~]# 

    查看下逻辑卷的配置情况:

    [root@localhost ~]# lvs
      LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  datavg -wi-a----- 100.00m                                                    
      home rhel   -wi-ao----   2.00g                                                    
      root rhel   -wi-ao----  23.80g                                                    
    [root@localhost ~]# lvscan 
      ACTIVE            '/dev/datavg/lv1' [100.00 MiB] inherit
      ACTIVE            '/dev/rhel/home' [2.00 GiB] inherit
      ACTIVE            '/dev/rhel/root' [23.80 GiB] inherit
    [root@localhost ~]#
    1. 逻辑卷使用前和分区一样,都需要格式化一下
    [root@localhost ~]# mkfs.ext4 /dev/datavg/lv1 
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    25688 inodes, 102400 blocks
    5120 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=33685504
    13 block groups
    8192 blocks per group, 8192 fragments per group
    1976 inodes per group
    Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done 
    
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]#
    • 知识点:确认上一步操作是否成功可用 [root@localhost ~]# echo $? 检查,为0表示成功,其他都是失败

      1. 挂载逻辑卷到/lv1目录下
    [root@localhost /]# mkdir /lv1
    [root@localhost /]# mount /dev/datavg/lv1 /lv1/
    [root@localhost /]# df -h
    Filesystem              Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root    24G  3.6G   19G  16% /
    devtmpfs                898M     0  898M   0% /dev
    tmpfs                   913M   84K  913M   1% /dev/shm
    tmpfs                   913M  9.2M  904M   1% /run
    tmpfs                   913M     0  913M   0% /sys/fs/cgroup
    /dev/sda1               190M  133M   43M  76% /boot
    /dev/mapper/rhel-home   2.0G   12M  1.8G   1% /home
    tmpfs                   183M     0  183M   0% /run/user/0
    tmpfs                   183M   16K  183M   1% /run/user/42
    /dev/mapper/datavg-lv1   93M  1.6M   85M   2% /lv1
    [root@localhost /]#
    • 当然我们也可以设置将逻辑卷永久挂载

      ①将逻辑卷的lv1的UUID写到/etc/fstab配置文件中

    [root@localhost lv1]# blkid |grep "lv1" |awk '{print $2}' >> /etc/fstab
    • 1

    ②重新加载下配置文件/etc/fstab

    [root@localhost /]# mount -a
    • 1
    1. 我们可以看到datavg卷组已经少了100M,先使用的sdb物理卷的空间
    [root@localhost /]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree  
      datavg   2   1   0 wz--n- 400.00m 300.00m
      rhel     1   2   0 wz--n-  25.80g      0 
    [root@localhost /]#
    • 1
    • 2
    • 3
    • 4
    • 5

    二、VG的扩展pv和移除pv

    • 扩展一个新的pv
    [root@localhost /]# vgextend datavg /dev/sdd
    • 1
    • 移除一个pv
    [root@localhost ~]# vgreduce datavg /dev/sdd
    • 1
    • 删除VG
    [root@localhost ~]# vgremove datavg
    • 1

    三、pvmove在线数据迁移(不同物理卷之间)和快照建立(逻辑卷之间)

    • 假如pv物理卷/dev/sdb硬盘已经老化,需要将sdb里的数据在线迁移到sdc物理卷

      1. 先检查当前逻辑卷VG中的PV使用情况
    [root@localhost /]# df -h
    Filesystem              Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root    24G  3.6G   19G  16% /
    devtmpfs                898M     0  898M   0% /dev
    tmpfs                   913M   84K  913M   1% /dev/shm
    tmpfs                   913M  9.2M  904M   2% /run
    tmpfs                   913M     0  913M   0% /sys/fs/cgroup
    /dev/sda1               190M  133M   43M  76% /boot
    /dev/mapper/rhel-home   2.0G   12M  1.8G   1% /home
    tmpfs                   183M     0  183M   0% /run/user/0
    tmpfs                   183M   16K  183M   1% /run/user/42
    /dev/mapper/datavg-lv1   93M   33M   54M  39% /lv1
    [root@localhost /]# pvs
      PV         VG     Fmt  Attr PSize   PFree  
      /dev/sda2  rhel   lvm2 a--   25.80g      0 
      /dev/sdb   datavg lvm2 a--  200.00m 100.00m
      /dev/sdc   datavg lvm2 a--  200.00m 200.00m
      /dev/sdd   datavg lvm2 a--  200.00m 200.00m
    [root@localhost /]#
    1. 开始数据迁移
    [root@localhost etc]# pvmove /dev/sdb /dev/sdc 
      /dev/sdb: Moved: 12.0%
      /dev/sdb: Moved: 100.0%
    [root@localhost etc]# pvs
      PV         VG     Fmt  Attr PSize   PFree  
      /dev/sda2  rhel   lvm2 a--   25.80g      0 
      /dev/sdb   datavg lvm2 a--  200.00m 200.00m
      /dev/sdc   datavg lvm2 a--  200.00m 100.00m
      /dev/sdd   datavg lvm2 a--  200.00m 200.00m
    [root@localhost etc]#
    1. 迁移完成后可将老旧的物理卷pv(sdb)从卷组中除去
    [root@localhost etc]# vgreduce datavg /dev/sdb
      Removed "/dev/sdb" from volume group "datavg"
    [root@localhost etc]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree  
      datavg   2   1   0 wz--n- 400.00m 300.00m
      rhel     1   2   0 wz--n-  25.80g      0 
    [root@localhost etc]#
    
    // partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。
    //partprobe命令k可以不用重启系统即可配合fdisk、gdisk工具创建新的分区
    [root@localhost /]# partprobe 
    • lvm建立快照lv1-bak
    // 制作/dev/datavg/lv1的快照lv1-bak
    [root@localhost lv1]# df -h
    .......
    /dev/mapper/datavg-lv1   93M  1.6M   85M   2% /lv1
    [root@localhost lv1]#
    // 制作快照前最好先卸载/dev/datavg/lv1
    [root@localhost /]# umount /lv1/
    [root@localhost /]# lvcreate -L 35M -n lv1-bak -s /dev/datavg/lv1
      Rounding up size to full physical extent 36.00 MiB
      Logical volume "lv1-bak" created.
    [root@localhost /]# df -h
    ........
    /dev/mapper/datavg-lv1--bak   93M   33M   54M  39% /lv1

    四、LVM管理知识扩展及易错问题的出现及方法

    1. lvm的拉伸与缩减

      • 针对xfs文件系统—–lvm设备的扩大(只可以扩大,不可以缩小)
    // 此操作只能扩大
    [root@server188 ~]# lvextend -L 500M /dev/datavg/lv1  
    Extending logical volume lv0 to 500.00 MiB 
    Logical volume lv0 successfully resized 
    [root@server188 ~]# df -h 
    Filesystem Size Used Avail Use% Mounted on
    ….. ….. ….. … 
    /dev/mapper/datavg-lv1 197M 11M 187M 6% /lv1
    // xfs格式同步下设备
    [root@server188 ~]# xfs_growfs /dev/datavg/lv1 
    [root@server188 ~]# df -h 
    Filesystem Size Used Avail Use% Mounted on 
    ……. …… … … 
    /dev/mapper/datavg-lv1 497M 11M 487M 3% /lv1
    • 针对ext文件系统—–lvm设备的扩大(可拉伸也可缩减)

    • lvm设备的拉伸

    //将/dev/mapper/datavg-lv1格式化为ext格式 
    [root@server188 ~]# umount /dev/mapper/datavg-lv1
    [root@server188 ~]# mkfs.ext4 /dev/mapper/vg0-lv0
    
    //此时要扩展到600M,但vg中容量<600M,因此vg中加入新的物理卷pv
    [root@localhost /]# vgextend datavg /dev/sdd
    [root@server188 ~]# lvextend -L 2G /dev/vg0/lv0
    Extending logical volume lv0 to 2.00 GiB 
    Insufficient free space: 387 extents needed, but only 130 available
    // lvm丢失pv设备:unknown device datavg lvm2 a-m  200.00m 200.00m
    [root@localhost ~]# pvs
      WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.
      WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.
      PV             VG     Fmt  Attr PSize   PFree  
      /dev/sda2      rhel   lvm2 a--   25.80g      0 
      /dev/sdb              lvm2 ---  204.00m 204.00m
      /dev/sdc       datavg lvm2 a--  200.00m 200.00m
      unknown device datavg lvm2 a-m  200.00m 200.00m
      unknown device datavg lvm2 a-m  200.00m 200.00m
    
    // 当想删除未知设备[unknown device]时用下面的命令 
    [root@localhost ~]# vgreduce --removemissing datavg 
      WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.
      WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.
      WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.
      WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.
      Wrote out consistent volume group datavg
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree  
      /dev/sda2  rhel   lvm2 a--   25.80g      0 
      /dev/sdb          lvm2 ---  204.00m 204.00m
      /dev/sdc   datavg lvm2 a--  200.00m 200.00m
    [root@localhost ~]# 
  • 相关阅读:
    Hello,world的几种写法!
    浮动与清除浮动
    css中表格的table-layout属性特殊用法
    CSS之照片集效果
    CSS之transition过渡练习
    CSS之过渡简单应用—日落西山
    CSS之立方体绘画步骤
    CSS之立体球体
    transform
    Vue.sync修饰符与this.$emit('update:xxx', newXXX)
  • 原文地址:https://www.cnblogs.com/ztxd/p/13628438.html
Copyright © 2011-2022 走看看