快捷搜索:

您的位置:澳门新葡4473网站 > 新闻社区 > Linux基础学习-LVM逻辑卷管理遇到的问题

Linux基础学习-LVM逻辑卷管理遇到的问题

发布时间:2019-12-07 15:36编辑:新闻社区浏览(91)

    LVM学习逻辑卷管理创建逻辑卷遇到的问题

    1 实验环境

    系统 内核 发行版本
    CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final)

    由于是最小化安装没有xfs命令,yum安装如下包支持此命令

    [root@www ~]# yum install xfsprogs
    Loaded plugins: fastestmirror, security
    Setting up Install Process
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package xfsprogs.x86_64 0:3.1.1-20.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ======================================================================================================
     Package                 Arch                  Version                      Repository           Size
    ======================================================================================================
    Installing:
     xfsprogs                x86_64                3.1.1-20.el6                 base                725 k
    
    Transaction Summary
    ======================================================================================================
    Install       1 Package(s)
    
    Total download size: 725 k
    Installed size: 3.2 M
    Is this ok [y/N]: y
    Downloading Packages:
    xfsprogs-3.1.1-20.el6.x86_64.rpm                                               | 725 kB     00:00     
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : xfsprogs-3.1.1-20.el6.x86_64                                                       1/1 
      Verifying  : xfsprogs-3.1.1-20.el6.x86_64                                                       1/1 
    
    Installed:
      xfsprogs.x86_64 0:3.1.1-20.el6                                                                      
    
    Complete!
    

    2 用gdisk分区对/dev/sdb分区然后再删除后遇到以下问题

    [root@www ~]# pvcreate /dev/sdb
      Device /dev/sdb not found (or ignored by filtering).
    

    3 解决方法

    开始尝试使用partprobe /dev/sdb但是没有用处,后来用如下命令解决.

    [root@www ~]# dd if=/dev/urandom of=/dev/sdb bs=512 count=64
    64+0 records in
    64+0 records out
    32768 bytes (33 kB) copied, 0.0513912 s, 638 kB/s
    [root@www ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1  4.3G  0 rom  
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0  200M  0 part /boot
    ├─sda2   8:2    0    1G  0 part [SWAP]
    └─sda3   8:3    0 18.8G  0 part /
    sdb      8:16   0    1G  0 disk 
    sdc      8:32   0    1G  0 disk 
    sdd      8:48   0    1G  0 disk 
    sde      8:64   0    1G  0 disk 
    [root@www ~]# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created
    [root@www ~]# 
    
    [root@www ~]# pvs
      PV         VG   Fmt  Attr PSize PFree
      /dev/sdb        lvm2 ---- 1.00g 1.00g
      /dev/sdc        lvm2 ---- 1.00g 1.00g
      /dev/sdd        lvm2 ---- 1.00g 1.00g
    

    为什么会报如上的错误呢,我现在还没有搞清楚.

    [root@www ~]# vgcreate storage /dev/sdb /dev/sdc /dev/sdd
      Volume group "storage" successfully created
    [root@www ~]# vgs
      VG      #PV #LV #SN Attr   VSize VFree
      storage   3   0   0 wz--n- 2.99g 2.99g
    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sdc   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   storage lvm2 a--u 1020.00m 1020.00m
    

    www.4473.vip,4 创建一个150M大小的逻辑卷

    [root@www ~]# lvcreate -n vo -L 150M storage
      Rounding up size to full physical extent 152.00 MiB
      Logical volume "vo" created.
    [root@www ~]# lvs
      LV   VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      vo   storage -wi-a----- 152.00m   
    

    5 把生成号的逻辑卷进行格式化,然后挂载使用.

    [root@www ~]# mkfs.xfs /dev/storage/vo
    meta-data=/dev/storage/vo        isize=256    agcount=4, agsize=9728 blks
             =                       sectsz=512   attr=2, projid32bit=0
    data     =                       bsize=4096   blocks=38912, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0
    log      =internal log           bsize=4096   blocks=1200, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@www ~]# mount /dev/storage/vo /soft/
    [root@www ~]# ls /soft/
    [root@www ~]# 
    

    永久挂载,重启后生效,这里可以使用/dev/storage/vo也可以使用uuid推荐使用后者.

    UUID="645e5ca4-d564-425b-ad50-a9d43536951f" /soft xfs   defaults        0 0
    

    可以使用umount /soft卸载,再使用mount -a检查一下有没有挂载成功.使用df -h查看分区情况

    [root@www ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda3              19G  1.7G   16G  10% /
    tmpfs                 490M     0  490M   0% /dev/shm
    /dev/sda1             190M   59M  122M  33% /boot
    /dev/mapper/storage-vo
                          148M  7.8M  140M   6% /soft
    

    Linux LVM逻辑卷,linuxlvm逻辑

    扩容逻辑卷

    这里使用lvextend -l 50指定200M大小的逻辑卷,计算方法为4M*50.

    [root@www ~]# lvextend -l 50 /dev/storage/vo
      Size of logical volume storage/vo changed from 152.00 MiB (38 extents) to 200.00 MiB (50 extents).
      Logical volume vo successfully resized.
    
    [root@www ~]# lvs
      LV   VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      vo   storage -wi-a----- 200.00m   
    

    新硬盘加入vg卷组

    [root@www ~]# pvcreate /dev/sde
      Physical volume "/dev/sde" successfully created
    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   storage lvm2 a--u 1020.00m  820.00m
      /dev/sdc   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sde           lvm2 ----    1.00g    1.00g
    
    [root@www ~]# vgextend storage /dev/sde
      Volume group "storage" successfully extended
    [root@www ~]# vgs
      VG      #PV #LV #SN Attr   VSize VFree
      storage   4   1   0 wz--n- 3.98g 3.79g
    
    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   storage lvm2 a--u 1020.00m  820.00m
      /dev/sdc   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sde   storage lvm2 a--u 1020.00m 1020.00m
    

    从vg卷组移除一块硬盘

    [root@www ~]# vgreduce storage /dev/sde
      Removed "/dev/sde" from volume group "storage"
    [root@www ~]# vgs
      VG      #PV #LV #SN Attr   VSize VFree
      storage   3   1   0 wz--n- 2.99g 2.79g
    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   storage lvm2 a--u 1020.00m  820.00m
      /dev/sdc   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   storage lvm2 a--u 1020.00m 1020.00m
      /dev/sde           lvm2 ----    1.00g    1.00g
    

    逻辑卷裁剪大小为120M

    [root@www ~]# lvreduce -L 120M /dev/storage/vo
      WARNING: Reducing active logical volume to 120.00 MiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce storage/vo? [y/n]: y
      Size of logical volume storage/vo changed from 200.00 MiB (50 extents) to 120.00 MiB (30 extents).
      Logical volume vo successfully resized.
    [root@www ~]# lvs
      LV   VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      vo   storage -wi-a----- 120.00m                                                    
    [root@www ~]# 
    

    删除逻辑卷,依次删除lv逻辑卷,gv卷组,pv物理卷

    [root@www ~]# lvremove /dev/storage/vo
    Do you really want to remove active logical volume vo? [y/n]: y
      Logical volume "vo" successfully removed
    [root@www ~]# lvs
    [root@www ~]# vgremove storage
      Volume group "storage" successfully removed
    [root@www ~]# vgs
    [root@www ~]# pvremove /dev/sde
      Labels on physical volume "/dev/sde" successfully wiped
    [root@www ~]# pvs
      PV         VG   Fmt  Attr PSize PFree
      /dev/sdb        lvm2 ---- 1.00g 1.00g
      /dev/sdc        lvm2 ---- 1.00g 1.00g
      /dev/sdd        lvm2 ---- 1.00g 1.00g
    [root@www ~]# pvremove /dev/sdd /dev/sdc /dev/sdb
      Labels on physical volume "/dev/sdd" successfully wiped
      Labels on physical volume "/dev/sdc" successfully wiped
      Labels on physical volume "/dev/sdb" successfully wiped
    [root@www ~]# pvs
    

    数据迁移,首先创建一些文件touch /soft/{00..100}.txt,然后进行数据迁移.

    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   oradata lvm2 a--u 1020.00m  140.00m
      /dev/sdc   oradata lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   oradata lvm2 a--u 1020.00m 1020.00m
      /dev/sde   oradata lvm2 a--u 1020.00m 1020.00m
    
    [root@www ~]# pvmove /dev/sdb /dev/sdd
      /dev/sdb: Moved: 0.9%
      /dev/sdb: Moved: 36.4%
      /dev/sdb: Moved: 54.5%
      /dev/sdb: Moved: 100.0%
    [root@www ~]# pvs
      PV         VG      Fmt  Attr PSize    PFree   
      /dev/sdb   oradata lvm2 a--u 1020.00m 1020.00m
      /dev/sdc   oradata lvm2 a--u 1020.00m 1020.00m
      /dev/sdd   oradata lvm2 a--u 1020.00m  140.00m
      /dev/sde   oradata lvm2 a--u 1020.00m 1020.00m
    [root@www ~]# 
    

    迁移后查看文件并没有丢失,最后删除这些文件.

    [root@www ~]# ls /soft/
    000.txt  010.txt  020.txt  030.txt  040.txt  050.txt  060.txt  070.txt  080.txt  090.txt  100.txt
    001.txt  011.txt  021.txt  031.txt  041.txt  051.txt  061.txt  071.txt  081.txt  091.txt  
    002.txt  012.txt  022.txt  032.txt  042.txt  052.txt  062.txt  072.txt  082.txt  092.txt
    003.txt  013.txt  023.txt  033.txt  043.txt  053.txt  063.txt  073.txt  083.txt  093.txt
    004.txt  014.txt  024.txt  034.txt  044.txt  054.txt  064.txt  074.txt  084.txt  094.txt
    005.txt  015.txt  025.txt  035.txt  045.txt  055.txt  065.txt  075.txt  085.txt  095.txt
    006.txt  016.txt  026.txt  036.txt  046.txt  056.txt  066.txt  076.txt  086.txt  096.txt
    007.txt  017.txt  027.txt  037.txt  047.txt  057.txt  067.txt  077.txt  087.txt  097.txt
    008.txt  018.txt  028.txt  038.txt  048.txt  058.txt  068.txt  078.txt  088.txt  098.txt
    009.txt  019.txt  029.txt  039.txt  049.txt  059.txt  069.txt  079.txt  089.txt  099.txt
    
    [root@www ~]# find /soft/ -type f -size 0 -delete
    

    概述  

          LVM的产生是因为传统的分区一旦分区好后就无法在线扩充空间,也存在一些工具能实现在线扩充空间但是还是会面临数据损坏的风险;传统的分区当分区空间不足时,一般的解决办法是再创建一个更大的分区将原分区卸载然后将数据拷贝到新分区,但是在企业的生产系统往往不允许停机或者允许停机的时间很短,LVM就能很好的解决在线扩充空间的问题,而且不会对数据造成影响,LVM还能通过快照在备份的过程中保证日志文件和表空间文件在同一时间点的一致性;本篇文章不会对概念知识做太详细的介绍,主要讲述LVM的扩容、收缩、移除的方法。

     

    原理  

    www.4473.vip 1

    PE(Physical Extend):卷的最小单位,默认4M大小,就像我们的数据是以页的形式存储一样,卷就是以PE的形式存储。

    PV(Physical Volume):物理卷,如果要使用逻辑卷,首先第一步操作就是将磁盘格式化成PV,从上图可以看出PV是保护PE的,PV内PE的数量取决于这块磁盘的容量/4M.

    VG(Volume Group):卷组,VG就是将很多PE组合在一起生成一个卷组,当然这里的PE是可以跨磁盘的,如果当前服务器磁盘空间不足就可以增加一个新磁盘对当前系统不会产生任何影响。

    LV(Logical Volume):逻辑卷,逻辑卷最终是给用户使用的,前面几个都是为创建逻辑卷做的准备,创建逻辑卷的大小只要不超过VG剩余空间就可以。

    步骤:

    1.PV:格式化磁盘

    2.VG:创建卷组

    3.LV:创建逻辑卷

    4.mkfs:格式化逻辑卷

    5.mount:挂载逻辑卷

    创建LV  

    1.PV(格式化磁盘):pvcreate命令      

     第一步就是对磁盘格式化,不要对现有已分区的磁盘做这个操作。

     先查看当前系统磁盘信息,我电脑通过虚拟机刚添加了两块块20G的磁盘,分别是sdb、sdc,使用fdisk -l查看

    fdisk -l
    

    www.4473.vip 2

    格式化/dev/sdb

    pvcreate /dev/sdb /dev/sdc
    

    www.4473.vip 3

    使用pvdisplay或者pvs查看pv信息

    www.4473.vip 4

    从上图可以的信息可以得知PV的大小和剩余空间信息。

    2.VG(创建卷组):vgcreate命令

    vgcreate vggroup /dev/sdb /dev/sdc
    

    vggroup是卷组名称

    www.4473.vip 5

    使用vgdisplay和vgs查看vg信息

    www.4473.vip 6

     

    通过vgdisplay可以查看vg的大小和PE的大小,从上图可以看到单个PE的默认大小是4M,当前VG总共有10238个PE,当前vg总共使用了两个pv。

    3.LV(创建逻辑卷):lvcreate -n 逻辑卷名称 -L 逻辑卷大小 卷组名

    记住创建逻辑卷大小不能超过卷组的剩余空间大小,我这里创建30G大小的逻辑卷。

    lvcreate -n lv -L 30G vggroup
    

    www.4473.vip 7

    使用lvdisplay和lvs查看lv的信息

     www.4473.vip 8

    lvdisplay可以获取到的lv信息包括,lv的名称和路径、lv对应的vg组的名称、lv的大小、当前lv包含的PE数量。

    lv的文件路径保存在vg下面。

    4.mkfs(格式化lv)

    mkfs.ext4 /dev/vggroup/lv
    

    www.4473.vip 9

    5.mount(挂载LV)

    mount -t ext4 /dev/vggroup/lv /mnt
    

    www.4473.vip 10

    使用df -h查看挂载信息

    www.4473.vip 11

    扩充逻辑卷(LV)  

     在对LV(逻辑卷)进行容量扩充之前先查看VG(卷组)中剩余空间有多少,扩充的大小不能超过VG剩余的空间大小

    vgdisplay
    

    www.4473.vip 12

    当前VG剩余空间9.99G

    1.lvextend(扩充逻辑卷)

    为了演示在线扩充对文件不造成影响,我先在/mnt目录下创建了一个text测试文件,内容为“1”

    lvextend -L +9.99G /dev/vggroup/lv
    

    这里将VG所有的剩余空间全部划分给LV

    www.4473.vip 13

    www.4473.vip 14

    vg的剩余空间变成了0

    www.4473.vip 15

    LV的大小变成了39.99G

    2.resize2fs:更新文件系统 

    resize2fs  /dev/vggroup/lv
    

    www.4473.vip 16

    查看/mnt目录下的text文件是否受影响

    www.4473.vip 17

     文件没有受影响。

    扩充卷组(VG)  

     当前我系统VG已经没有剩余空间了,如果这个时候系统空间不够了,这个时候就要增加一块磁盘来增加VG的大小,在虚拟机我增加一个10G的新磁盘sdd

    1.格式化新磁盘(pvcreate)

    pv /dev/sdd
    

    2.将格式化的PV添加到VG中去(vgextend)

    vgextend vggroup /dev/sdd
    

    3.查看当前vg的大小(vgdisplay)

    www.4473.vip 18

     

    当前VG的大小变成了50G,剩余空间也变成10G,当前VG的PV数变成了3

    收缩逻辑卷(LG)  

     注意:对逻辑卷进行收缩操作之前必须先卸载逻辑卷,再缩小文件系统,最后才是缩小逻辑卷,而且收缩的大小也不能超过剩余空间大小。

    1.卸载逻辑卷(unmount)

    umount /mnt
    

    www.4473.vip 19

    2.收缩文件系统

    这步一定要操作,而且是在收缩LV之前操作

    先检查文件系统(e2fsck)

    e2fsck -f /dev/vggroup/lv
    

    www.4473.vip 20

    缩小文件系统(resize2fs)

    将文件系统缩小到30G,刚才如果细心注意会发现,使用lvdisplay查看文件系统是39.9G,而通过df -h查看是40G,这里以df -h的大小为准,因为下一步收缩LV的时候是通过减操作,所以要数据一致性下一步就是-10G

    --将文件系统缩小为30G
    resize2fs /dev/vggroup/lv 30G
    

    www.4473.vip 21

    3.缩小LV(lvreduce)

    lvreduce -L -10G /dev/vggroup/lv
    

    www.4473.vip 22

    注意:这三步操作顺序不能弄乱。

    接下来再挂载lV卷看看空间是否修改

    mount /dev/vggroup/lv /mnt/
    

    www.4473.vip 23

    可以看到重新挂载后text文件还是存在,lv的大小也变成了30G

     

    虽然可以使用收缩LV但是还是不建议这样做,特别是企业的系统,因为收缩后的结果会存在很多的未知可能。

    收缩卷组(VG)  

     收缩卷组只能对那些未使用pv进行操作,如果你的当前PV已经已经在逻辑卷中被使用,那么该PV是不能去除的,比如刚才新增加的sdd磁盘未被使用就可以将其从VG中去除。

    通过PVS查看那些PV已被使用

    pvs
    

    www.4473.vip 24

    当前只有/dev/sdd未被使用

    1.卸载逻辑卷

    逻辑卷对应的是卷组而不是PV,虽然sdd在前面的操作并没有被添加到LV当中,但是这里还是需要先将LV卸载

    umount /mnt
    

    2.移除PV(vgreduce)

    vgreduce vggroup /dev/sdd
    

    www.4473.vip 25

    3.删除pv

    pvremove /dev/sdd
    

    www.4473.vip 26

    可以看到/dev/sdd已经被移除

     

    删除lv、vg、pv  

    1.同样删除前先卸载所有lv,在当前系统只有一个lv

    umount /mnt
    

     

    2.lvremove,vgreomve,pvremove

    --删除LV
    lvremove /dev/vggroup/lv
    
    --删除VG
    vgremove vggroup
    
    --删除PV
    pvremove /dev/sdb /dev/sdc
    

    www.4473.vip 27

    这些删除操作都确保未被使用,比如删除LV在删除前先将数据拷贝出去然后再删除,删除VG确保VG组中不存在LV,删除PV刚才已经说过了,PV需要没有被使用。

     

    mount挂载相关内容参考: 

    分区相关内容参考:

    本章内容参考来自:

    总结

    LVM带来的好处不仅仅是在线扩容,在备份的过程中为了保证日志文件和表空间文件一致性问题也用到了LVM,在后面详细讲备份相关内容的时候会详细讲,欢迎关注。

     

     

     不要吝啬投上您神圣的一票!!!

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

    《欢迎交流讨论》

    LVM逻辑卷,linuxlvm逻辑 概述 LVM的产生是因为传统的分区一旦分区好后就无法在线扩充空间,也存在一些工具能实现在线扩充空间但是还...

    本文由澳门新葡4473网站发布于新闻社区,转载请注明出处:Linux基础学习-LVM逻辑卷管理遇到的问题

    关键词:

上一篇:最实用的计算机常用快捷键

下一篇:没有了