• Linux磁盘分区管理-LVM回顾


    LVM(逻辑分区管理)的几个概念:PV(物理卷),VG(卷组),LV(逻辑卷),PE(物理区域),LE(逻辑区域),其中PV, VG, LV 三者之间的关系如下图 :

    物理存储介质:这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

    物理卷(PV):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

    卷组(VG):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

    逻辑卷(LV):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

    物理区域(PE):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

    逻辑区域(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

    简单来说就是:

    PV:是物理的磁盘分区

    VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为是由多个PV组合成的大磁盘。

    LV:也就是从VG中划分的逻辑分区

       创建LVM逻辑分区:系统中有两块硬盘/dev/sdb ,  /dev/sdc
    
    Disk /dev/sdb: 2147 MB, 2147483648 bytes
    255 heads, 63 sectors/track, 261 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    
    Disk /dev/sdc: 2147 MB, 2147483648 bytes
    255 heads, 63 sectors/track, 261 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    

    创建LVM分区步骤:创建 PV >> 创建 VG >> 创建 LV

    一: 创建PV阶段:有关PV的几个指令

    pvcreate : 将物理分区新建成为pv
    
    pvscan : 查看当前系统里所有的pv
    
    pvdisplay : 列出当前系统的pv状态
    
    pvremove : 删除一个pv
    
    pvs :查看物理卷PV信息
    

    将/dev/sdb , /dev/sdc 创建成PV

    [root@file-server ~]# pvcreate /dev/sd{b,c}
      Physical volume "/dev/sdb" successfully created
      Physical volume "/dev/sdc" successfully created
    

    查看创建的PV

    [root@file-server ~]# pvscan
      PV /dev/sda2   VG VolGroup        lvm2 [14.51 GiB / 0    free]  #/dev/sda2是安装系统时创建的
      PV /dev/sdb                       lvm2 [2.00 GiB]
      PV /dev/sdc                       lvm2 [2.00 GiB]
      Total: 3 [18.51 GiB] / in use: 1 [14.51 GiB] / in no VG: 2 [4.00 GiB]
    

    二:创建VG阶段:有关VG的几个指令

    vgcreate : 创建vg卷组
    
    vgscan : 查看系统是否有VG存在
    
    vgdisplay :查看当前VG状态
    
    vgextend : 拓展vg卷组的容量,新增加额外的 pv
    
    vgreduce : 在vg内删除一个PV
    
    vgchange : 设置VG是否启用
    
    vgremove : 删除一个VG卷组
    

    将上面创建好的/dev/sdb , /dev/sdc 物理卷合并成一个卷组。取名为myvg,指定PE物理单元块为16M

    [root@file-server ~]# vgcreate -s 16M myvg /dev/sd{b,c}
      Volume group "myvg" successfully created
    

    查看myvg卷组信息

    [root@file-server ~]# vgdisplay
      --- 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               3.97 GiB
      PE Size               16.00 MiB
      Total PE              254
      Alloc PE / Size       0 / 0   
      Free  PE / Size       254 / 3.97 GiB
      VG UUID               xHz5Gp-VWQP-3qyH-VCCK-NBrG-vYWU-io5dOA
    

    创建好VG卷组后就可以创建LV逻辑卷了,创建LV逻辑卷大小是根据PE为单元块来决定大小的,myvg中一共有254个PE块。

    三:创建LV逻辑卷:有关LV的几个指令

    lvcreate : 创建lv
    
    lvscan : 查看系统中的LV
    
    lvdisplay :查看当前LV状态
    
    lvextend : 在LV里增加容量
    
    lvreduce : 在LV内减少容量
    
    lvresize : 对LV容量大小进行调整
    
    lvremove : 删除一个LV
    

    lvcreate创建逻辑卷时指定卷大小的方式有4种方式

    lvcreate 指令:
    
    后面接 -L 指定分区大小如 M, G,T 等
    
    后面接小写L : -l  指定PE数量
    
    后面接 -n : 指定lv的名称
    
    最后要指定是在哪个VG卷组上,也就是要指VG名称
    
    [root@file-server ~]# lvcreate -l +20 -n lv0 myvg
      Logical volume "lv0" created
    

    查看LV,此时fdisk已经可以看到 lv0 的分区信息

    [root@file-server ~]# lvscan
      ACTIVE            '/dev/myvg/lv0' [320.00 MiB] inherit
    
    [root@file-server ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/myvg/lv0
      LV Name                lv0
      VG Name                myvg
      LV UUID                NITm8c-wGYW-4Mmp-oCFC-8VjX-qULm-v395WT
      LV Write Access        read/write
      LV Creation host, time file-server, 2018-04-26 19:47:35 +0800
      LV Status              available
      # open                 0
      LV Size                320.00 MiB
      Current LE             20
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:2
    

    给lv0创建文件系统

    [root@file-server ~]# mkfs -t ext4 /dev/myvg/lv0 
    

    挂载测试

    查看分区的UID号

    [root@file-server ~]# blkid
    ... ...
    /dev/mapper/myvg-lv0: UUID="38620ff3-6617-4ba5-9fa8-b34845b4f1a1" TYPE="ext4" 
    

    添加开机自动挂载

    vim   /etc/fstab
    #加入下行
    UUID=38620ff3-6617-4ba5-9fa8-b34845b4f1a1       /mnt/LVM          ext4    defaults        0 0
    
    #重新挂载
    [root@file-server ~]# mount -a
    [root@file-server ~]# df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   13G   11G  1.9G  85% /
    tmpfs                         496M     0  496M   0% /dev/shm
    /dev/sda1                     477M   37M  411M   9% /boot
    /dev/mapper/myvg-lv0          302M  2.1M  280M   1% /mnt/LVM
    

    扩容lv0空间

    将/dev/myvg/lv0 容量再加一倍,方法一:使用lvextend

    [root@file-server ~]# lvextend -l +20 -n /dev/myvg/lv0
      Extending logical volume lv0 to 640.00 MiB
      Logical volume lv0 successfully resized
    

    扩容后分区大小没有改变,要执行resize2fs指令重读分区

    [root@file-server ~]# resize2fs   /dev/myvg/lv0 
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/myvg/lv0 is mounted on /mnt/LVM; on-line resizing required
    old desc_blocks = 2, new_desc_blocks = 3
    Performing an on-line resize of /dev/myvg/lv0 to 655360 (1k) blocks.
    The filesystem on /dev/myvg/lv0 is now 655360 blocks long.
    #再查看分区大小
    [root@file-server ~]# df  -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   13G   11G  1.9G  85% /
    tmpfs                         496M     0  496M   0% /dev/shm
    /dev/sda1                     477M   37M  411M   9% /boot
    /dev/mapper/myvg-lv0          612M  2.3M  577M   1% /mnt/LVM
    

    方法二:使用 lvresize 再加一次空间

    [root@file-server ~]# lvresize -l +20 /dev/myvg/lv0 
      Extending logical volume lv0 to 960.00 MiB
      Logical volume lv0 successfully resized
    You have new mail in /var/spool/mail/root
    #重读磁盘
    [root@file-server ~]# resize2fs /dev/myvg/lv0 
    

    缩减lv0空间
    缩小空间前要取消挂载分区:

    [root@file-server ~]# umount /dev/myvg/lv0 
    

    使用 resize2fs 缩小文件系统空间,( 现有2.4G大小,减到2G)

    [root@file-server ~]# resize2fs /dev/myvg/lv0 2G
    resize2fs 1.41.12 (17-May-2010)
    请先运行 'e2fsck -f /dev/myvg/lv0'.
    
    [root@file-server ~]# e2fsck -f /dev/myvg/lv0 
    
    [root@file-server ~]# resize2fs /dev/myvg/lv0 2G
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/myvg/lv0 to 524288 (4k) blocks.
    The filesystem on /dev/myvg/lv0 is now 524288 blocks long.
    
    [root@file-server ~]# df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   13G   11G  1.9G  85% /
    tmpfs                         496M     0  496M   0% /dev/shm
    /dev/sda1                     477M   37M  411M   9% /boot
    /dev/mapper/myvg-lv0          2.0G  3.7M  1.8G   1% /mnt/LVM
    

    缩小后的逻辑卷并没有真正释放空间:如果不释放则一直在lv0中,缩减下的空间别会一直闲置,应该释放

    [root@file-server ~]# lvdisplay
      --- Logical volume ---
    ... ...
      LV Size                2.41 GiB
      Current LE             154
    ... ...
    
    #LE的大小为154,空间没有释放出去
    

    要想在彻底释放掉缩小的空间,需要释放 lv0 的PE,使用lvreduce来缩减逻辑卷空间

    [root@file-server ~]# lvreduce -L 2G /dev/myvg/lv0 
      WARNING: Reducing active logical volume to 2.00 GiB
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce lv0? [y/n]: y
      Reducing logical volume lv0 to 2.00 GiB
      Logical volume lv0 successfully resized
    

    再查看lv0 PE 大小

    [root@file-server ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/myvg/lv0
    ... ...
      LV Size                2.00 GiB
      Current LE             128
    

    【缩小逻辑卷空间会丢失原有数据,操作比较危险】

     VG 卷组的伸缩;扩容
    

    扩容VG卷组的过程为 :创建PV >> 将创建好的PV添加到卷组中

    再使用两块新硬盘 /dev/sdd , /dev/sde ,将两块硬盘容量加到myvg卷组中

    创建PV

    [root@file-server ~]# pvcreate /dev/sd{d,e}
      Physical volume "/dev/sdd" successfully created
      Physical volume "/dev/sde" successfully created
    

    新建的PV添加到myvg卷组

    [root@file-server ~]# vgextend myvg /dev/sdd /dev/sde 
      Volume group "myvg" successfully extended
    You have new mail in /var/spool/mail/root
    #可以看到myvg卷组大小已经改变了
    [root@file-server ~]# vgdisplay
      --- Volume group ---
      VG Name               myvg
      System ID             
      Format                lvm2
      Metadata Areas        4
      Metadata Sequence No  23
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                4
      Act PV                4
      VG Size               7.94 GiB
      PE Size               16.00 MiB
      Total PE              508
      Alloc PE / Size       128 / 2.00 GiB
      Free  PE / Size       380 / 5.94 GiB
      VG UUID               xHz5Gp-VWQP-3qyH-VCCK-NBrG-vYWU-io5dOA
    

    VG卷组的缩小
    缩小VG卷组只要将VG卷组中的PV删掉即可

    查看当前pv信息执行pvs

    [root@file-server ~]# pvs
      PV         VG       Fmt  Attr PSize  PFree
      /dev/sda2  VolGroup lvm2 a--  14.51g    0 
      /dev/sdb   myvg     lvm2 a--   1.98g    0 
      /dev/sdc   myvg     lvm2 a--   1.98g 1.97g
      /dev/sdd   myvg     lvm2 a--   1.98g 1.98g
      /dev/sde   myvg     lvm2 a--   1.98g 1.98g
    

    注意:卷组缩小空间,一定要要卷组的空闲空间大小大于删除的物理卷的空间大小

    把/dev/sdb 磁盘腾出来,由于sdb磁盘可能存有数据,需要把数据移到其他PV中

    [root@file-server ~]# pvmove /dev/sdb
      /dev/sdb: Moved: 3.1%
      /dev/sdb: Moved: 100.0%
    

    删除myvg卷组中的/dev/sdb物理卷,执行指令如下

    [root@file-server ~]# vgremove   myvg   /dev/sdb
    Do you really want to remove volume group "myvg" containing 1 logical volumes? [y/n]: y
    Do you really want to remove active logical volume lv0? [y/n]: y
      Logical volume "lv0" successfully removed
      Volume group "myvg" successfully removed
      Volume group "sdb" not found
      Skipping volume group sdb
    
  • 相关阅读:
    信号量Semaphore的使用
    Future和FutureTask
    阻塞队列和线程池
    Java多线程基础
    Java常用方法
    Scanner和BufferedReader的区别和用法
    QT学习笔记9:QTableWidget的用法总结
    WordPress 建站教程:新手搭建 WordPress个人博客图文教程(完全版)
    Let's do it
    jdk alternatives
  • 原文地址:https://www.cnblogs.com/anay/p/12802143.html
Copyright © 2020-2023  润新知