• Linux磁盘管理:LVM逻辑卷的拉伸及缩减


    ①查看当前VG的信息,保证VG中有足够的空闲空间  通过 vgdisplay 或者 vgs 命令

    [root@rusky ~]# vgs rusky-vg 
      VG       #PV #LV #SN Attr   VSize VFree
      rusky-vg   2   1   0 wz--n- 2.99g 2.50g
    [root@rusky ~]# lvs rusky-vg    ---vg总大小2.99G,创建myLv使用500MB,剩余VFree2.5G 
      LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      mylv rusky-vg -wi-a----- 500.00m                                                    
    [root@rusky ~]# mount /dev/rusky-vg/mylv  /mnt/myLvm/  --挂载并使用myLv
    [root@rusky ~]# df -hT
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                   devtmpfs  906M     0  906M   0% /dev
    tmpfs                      tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                      tmpfs     921M  8.7M  912M   1% /run
    tmpfs                      tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                  xfs       497M  157M  341M  32% /boot
    tmpfs                      tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv xfs       497M   26M  472M   6% /mnt/myLvm    ---挂载成功,注意Type是xfs,因为我没有使用ext4来格式化逻辑卷
    [root@rusky ~]# 
    

    VG中还有足够的空闲空间时,我们就可以动态的对逻辑卷进行拉伸操作了

    ②扩充逻辑卷  通过 lvextend 命令

    比如我这里要对 mylv 逻辑卷扩充300MB的大小,此时我们就可以使用 lvextend -L +300MB /dev/rusky-vg/mylv 命令来执行操作

    [root@rusky ~]# lvextend -L +300MB /dev/rusky-vg/mylv 
      Size of logical volume rusky-vg/mylv changed from 500.00 MiB (125 extents) to 800.00 MiB (200 extents).
      Logical volume mylv successfully resized.
    [root@rusky ~]# lvs rusky-vg  --查看mylv的大小,由原来的500MB扩展为现在的800MB
      LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      mylv rusky-vg -wi-ao---- 800.00m                                                    
    [root@rusky ~]# 
    

    使用df -hT命令查看当前的文件系统信息

    [root@rusky ~]# df -hT
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                   devtmpfs  906M     0  906M   0% /dev
    tmpfs                      tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                      tmpfs     921M  8.7M  912M   1% /run
    tmpfs                      tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                  xfs       497M  157M  341M  32% /boot
    tmpfs                      tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv xfs       497M   26M  472M   6% /mnt/myLvm
    

    /mnt/myLvm大小没变,还是原来的500MB,其原因就是我们的文件系统是在创建完LV以后就马上格式化的,此后我们对逻辑卷进行拉伸以后,其并不会改变当前的文件系统,所以我们这个时候必须更新我们的文件系统,通过使用 resize2fs 命令 

    [root@rusky ~]# resize2fs /dev/rusky-vg/mylv 
    resize2fs 1.42.9 (28-Dec-2013)
    resize2fs: Bad magic number in super-block while trying to open /dev/rusky-vg/mylv
    Couldn't find valid filesystem superblock.
    

    有报错,其原因是我现在使用的是rhel7版本的操作系统,格式化mylv时使用的是xfs类型,所以要使用另外一个命令xfs_growfs扩展文件系统大小。

    [root@rusky ~]# xfs_growfs /dev/rusky-vg/mylv 
    meta-data=/dev/mapper/rusky--vg-mylv isize=256    agcount=4, agsize=32000 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=0        finobt=0
    data     =                       bsize=4096   blocks=128000, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
    log      =internal               bsize=4096   blocks=853, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 128000 to 204800
    [root@rusky ~]# df -hT
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                   devtmpfs  906M     0  906M   0% /dev
    tmpfs                      tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                      tmpfs     921M  8.7M  912M   1% /run
    tmpfs                      tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                  xfs       497M  157M  341M  32% /boot
    tmpfs                      tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv xfs       797M   26M  772M   4% /mnt/myLvm
    [root@rusky ~]# 
    

    使用命令df -hT查看文件系统大小,/dev/mapper/rusky--vg-mylv变为800MB,扩展成功。

    说明:

    可以使用xfs_growfs命令单独扩展xfs类型的文件系统。这个命令只能用来扩展xfs格式的文件系统,xfs格式是RHEL7版本默认的文件系统,所以用得比较少。lvextend和vgextend命令也可以用于操作xfs类型的文件系统。关于xfs_growfs命令的使用请参考另一篇文档。  

    另外一个命令resize2fs也是用来扩展文件系统,但是只能用来扩展ext2,ext3,ext4格式的文件系统大小,在RHEL7版本以下的系统中用得比较多。

    二、拉伸一个卷组

    上面介绍了如何拉伸一个逻辑卷,如果说此时我们的VG中PE的数量已经不足了,此时我们如果需要拉伸我们的逻辑卷,发现卷组中的空间已经不够用了,这个时候我们就必须对我们的卷组进行拉伸,使得卷组中有足够的空闲空间,最后再来拉伸我们的逻辑卷。我们知道卷组其实就是将多块PV加入到VG当中,所以卷组的拉伸也非常的简单,我们只需要增加一块物理硬盘,将其格式化成PV,然后再将这个PV加入到该卷组中即可。

    查看当前的PV及VG信息:

    [root@rusky ~]# pvs 
      PV         VG       Fmt  Attr PSize    PFree  
      /dev/sda2  rhel     lvm2 a--     7.51g  40.00m   
      /dev/sdb   rusky-vg lvm2 a--  1020.00m 220.00m
      /dev/sdc   rusky-vg lvm2 a--     2.00g   2.00g
    [root@rusky ~]# vgs rusky-vg 
      VG       #PV #LV #SN Attr   VSize VFree
      rusky-vg   2   1   0 wz--n- 2.99g 2.21g
    [root@rusky ~]# pvdisplay
      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               rusky-vg
      PV Size               1.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              255
      Free PE               55
      Allocated PE          200
      PV UUID               uiL3x1-0868-hXun-XpE5-hZd5-oBYC-LebUXW
       
      --- Physical volume ---
      PV Name               /dev/sdc
      VG Name               rusky-vg
      PV Size               2.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              511
      Free PE               511
      Allocated PE          0
      PV UUID               ChddTg-FBp2-ZoxF-HK1x-BjKy-dEG4-cEEWzX
       
      --- Physical volume ---
      PV Name               /dev/sda2
      VG Name               rhel
      PV Size               7.51 GiB / not usable 3.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              1922
      Free PE               10
      Allocated PE          1912
      PV UUID               qMyN56-3szx-N7EG-s5Zh-YsrE-eScv-fdEHHZ
    [root@rusky ~]# lvs rusky-vg
      LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      mylv rusky-vg -wi-ao---- 800.00m 

    从上面可以看出,我们有两个物理卷PV:/dev/sdb和/dev/sdc,同属于一个卷组VG:rusky-vg,这个卷组可用空间VFree为2.21GB。
    逻辑卷mylv现在大小LSize为800MB,如果想再扩充2.5个GB,很明显VG剩余空间不够,所以需要先增加VG的大小,才能完成mylv的扩展。

    现在我们增加一块物理磁盘/dev/sdd,并将其格式化为PV,然后加入到VG中。

    新增加的磁盘/dev/sdd大小为3GB,如下:

    [root@rusky ~]# fdisk -l /dev/sdd
    
    Disk /dev/sdd: 3221 MB, 3221225472 bytes, 6291456 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    

    ①将要添加到VG的硬盘格式化成PV  通过 pvcreate 命令

    [root@rusky ~]# pvcreate /dev/sdd
      Physical volume "/dev/sdd" successfully created
    [root@rusky ~]# pvs
      PV         VG       Fmt  Attr PSize    PFree  
      /dev/sda2  rhel     lvm2 a--     7.51g  40.00m
      /dev/sdb   rusky-vg lvm2 a--  1020.00m 220.00m
      /dev/sdc   rusky-vg lvm2 a--     2.00g   2.00g
      /dev/sdd            lvm2 ---     3.00g   3.00g   --/dev/sdd还没有添加到任何卷组
    [root@rusky ~]# 
    

    ②将新的PV添加到指定的VG当中  通过 vgextend 命令

    [root@rusky ~]# vgextend rusky-vg /dev/sdd
      Volume group "rusky-vg" successfully extended
    [root@rusky ~]# pvs
      PV         VG       Fmt  Attr PSize    PFree  
      /dev/sda2  rhel     lvm2 a--     7.51g  40.00m
      /dev/sdb   rusky-vg lvm2 a--  1020.00m 220.00m
      /dev/sdc   rusky-vg lvm2 a--     2.00g   2.00g
      /dev/sdd   rusky-vg lvm2 a--     3.00g   3.00g
    [root@rusky ~]# vgs rusky-vg
      VG       #PV #LV #SN Attr   VSize VFree
      rusky-vg   3   1   0 wz--n- 5.99g 5.21g    --VFree由原来的2.21G变为现在的5.21G
    [root@rusky ~]# 
    

    现在已完成一个卷组rusky-vg的扩展,可按需求扩展lv的大小了。

    三、缩小一个逻辑卷

    上面讲的都是如何对逻辑卷进行拉伸以及对卷组进行拉伸,其实逻辑卷还可以动态的对其进行缩小。

    我们看到缩小逻辑卷其实就是从当前的LV中拿出指定的PE数量放回到VG当中。

    注意:逻辑卷的缩小操作必须离线执行,要先卸载掉逻辑卷才可以

    上面在讲的逻辑卷的拉伸操作时我们可以在线执行,不需要卸载掉逻辑卷,但是在进行逻辑卷的缩小操作时,我们必须要先卸载掉逻辑卷才行,否则就可能造成逻辑卷里的文件发生损害。接下来我们来看一下对逻辑卷进行缩小操作的步骤

    ①卸载已经挂载的逻辑卷  通过 umount 命令

    [root@rusky ~]# df -hT
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                   devtmpfs  906M     0  906M   0% /dev
    tmpfs                      tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                      tmpfs     921M  8.7M  912M   1% /run
    tmpfs                      tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                  xfs       497M  157M  341M  32% /boot
    tmpfs                      tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv xfs       797M   26M  772M   4% /mnt/myLvm
    [root@rusky ~]# umount /mnt/myLvm/
    [root@rusky ~]# df -hT   --查看已卸载/mnt/myLvm
    Filesystem            Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs              devtmpfs  906M     0  906M   0% /dev
    tmpfs                 tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                 tmpfs     921M  8.7M  912M   1% /run
    tmpfs                 tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1             xfs       497M  157M  341M  32% /boot
    tmpfs                 tmpfs     185M     0  185M   0% /run/user/0
    

    ②缩小文件系统(会提示需要运行fsck来检查文件系统)  通过 resize2fs 命令

    我们在讲到对逻辑卷进行拉伸的时候,其顺序是先对逻辑卷进行拉伸操作,然后再更新我们的文件系统,但是在对逻辑卷进行缩小操作时,我们必须先执行缩小文件系统这个操作!!!这个顺序必须要记清楚!!!

    ========

    There is currently no command to shrink an XFS file system.

    ****这里有个问题:由于之前做测试时对xfs文件系统不是很了解,想在此尝试一下,结果最后发现xfs文件系统只支持扩展,不支持缩小。所以只能再创建一个其它类型的逻辑卷进行测试。


    查看当前的VG及LV信息:

    [root@rusky ~]# vgdisplay rusky-vg 
      --- Volume group ---
      VG Name               rusky-vg
      System ID             
      Format                lvm2
      Metadata Areas        3
      Metadata Sequence No  4
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                3
      Act PV                3
      VG Size               5.99 GiB
      PE Size               4.00 MiB
      Total PE              1533
      Alloc PE / Size       200 / 800.00 MiB
      Free  PE / Size       1333 / 5.21 GiB    --rusky-vg还剩余5.21GB
      VG UUID               pnYjr2-mFDA-ddBM-Samb-odGK-Uuqv-ZJov52
       
    [root@rusky ~]# lvdisplay rusky-vg
      --- Logical volume ---
      LV Path                /dev/rusky-vg/mylv
      LV Name                mylv
      VG Name                rusky-vg
      LV UUID                tBPpLw-5EZu-yoEt-hAnj-UZd7-MGNK-Sd8e4i
      LV Write Access        read/write
      LV Creation host, time rusky.com, 2016-10-11 11:34:01 +0800
      LV Status              available
      # open                 1
      LV Size                800.00 MiB
      Current LE             200
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2
    

    创建mylv2,大小为3GB,并将其格式化为ext4

    [root@rusky ~]# lvcreate -n mylv2 -L 3GB rusky-vg 
      Logical volume "mylv2" created.
    

    查看添加的mylv2信息:

    [root@rusky ~]# lvs
      LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root  rhel     -wi-ao----   6.67g                                                    
      swap  rhel     -wi-ao---- 820.00m                                                    
      mylv  rusky-vg -wi-ao---- 800.00m                                                    
      mylv2 rusky-vg -wi-a-----   3.00g                                                    
    [root@rusky ~]# lvdisplay rusky-vg
      --- Logical volume ---
      LV Path                /dev/rusky-vg/mylv
      LV Name                mylv
      VG Name                rusky-vg
      LV UUID                tBPpLw-5EZu-yoEt-hAnj-UZd7-MGNK-Sd8e4i
      LV Write Access        read/write
      LV Creation host, time rusky.com, 2016-10-11 11:34:01 +0800
      LV Status              available
      # open                 1
      LV Size                800.00 MiB
      Current LE             200
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2
       
      --- Logical volume ---
      LV Path                /dev/rusky-vg/mylv2
      LV Name                mylv2
      VG Name                rusky-vg
      LV UUID                Fev9Cq-6XwK-QxPM-oJtw-Xuec-iede-Yv9PKQ
      LV Write Access        read/write
      LV Creation host, time rusky.com, 2016-10-11 16:07:46 +0800
      LV Status              available
      # open                 0
      LV Size                3.00 GiB
      Current LE             768
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:3

    格式化mylv2

    [root@rusky ~]# mkfs.ext4 /dev/rusky-vg/mylv2 
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    196608 inodes, 786432 blocks
    39321 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=805306368
    24 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376, 294912
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done 

    挂载mylv2到/mnt/myLvm2目录下:

    [root@rusky ~]# mount /dev/rusky-vg/mylv2 /mnt/myLvm2/
    [root@rusky ~]# df -hT
    Filesystem                  Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root       xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                    devtmpfs  906M     0  906M   0% /dev
    tmpfs                       tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                       tmpfs     921M  8.7M  912M   1% /run
    tmpfs                       tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                   xfs       497M  157M  341M  32% /boot
    tmpfs                       tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv  xfs       797M   33M  765M   5% /mnt/myLvm
    /dev/mapper/rusky--vg-mylv2 ext4      2.9G  9.0M  2.8G   1% /mnt/myLvm2
    [root@rusky ~]# 

    由上可知,我们创建了一个大小为2.9GB,文件系统类型为ext4的逻辑卷mylv2.


    缩小逻辑卷mylv2为1GB

    ①卸载已经挂载的逻辑卷  通过 umount 命令  

    [root@rusky ~]# umount /mnt/myLvm2/
    [root@rusky ~]# df -hT
    Filesystem                 Type      Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      xfs       6.7G  2.9G  3.8G  44% /
    devtmpfs                   devtmpfs  906M     0  906M   0% /dev
    tmpfs                      tmpfs     921M     0  921M   0% /dev/shm
    tmpfs                      tmpfs     921M  8.7M  912M   1% /run
    tmpfs                      tmpfs     921M     0  921M   0% /sys/fs/cgroup
    /dev/sda1                  xfs       497M  157M  341M  32% /boot
    tmpfs                      tmpfs     185M     0  185M   0% /run/user/0
    /dev/mapper/rusky--vg-mylv xfs       797M   33M  765M   5% /mnt/myLvm   --/mnt/myLvm2已卸载
    

    ②缩小文件系统(会提示需要运行fsck来检查文件系统)  通过 resize2fs 命令

    [root@rusky ~]# resize2fs /dev/rusky-vg/mylv2 1G  --不能用GB
    resize2fs 1.42.9 (28-Dec-2013)
    Please run 'e2fsck -f /dev/rusky-vg/mylv2' first.
    
    [root@rusky ~]# e2fsck -f /dev/rusky-vg/mylv2 
    e2fsck 1.42.9 (28-Dec-2013)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/rusky-vg/mylv2: 11/196608 files (0.0% non-contiguous), 31036/786432 blocks

    the size parameter may be suffixed by one of the following the units designators: 's', 'K', 'M', or 'G', for 512 byte sectors, kilobytes,

    megabytes, or gigabytes, respectively.

    查看mylv2大小,没变,还是3GB,所以还必须缩小lv

    [root@rusky ~]# lvs 
      LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root  rhel     -wi-ao----   6.67g                                                    
      swap  rhel     -wi-ao---- 820.00m                                                    
      mylv  rusky-vg -wi-ao---- 800.00m                                                    
      mylv2 rusky-vg -wi-a-----   3.00g  

    ③缩小LV  通过 lvreduce 命令

    因为我们之前的LV大小为3G,我们通过缩小文件系统将其缩减小为1GB,所以此时我们需要缩小2GB大小的逻辑卷。

    [root@rusky ~]# lvreduce -L 2G /dev/rusky-vg/mylv2 

    之后,重新mount即可。

    四、缩小卷组

    ①首先必须也要卸载掉我们的逻辑卷  通过 umount 命令

    ②将一个PV从指定卷组中移除掉  通过 vgreduce 命令

    [root@rusky ~]# pvs
      PV         VG       Fmt  Attr PSize    PFree   
      /dev/sda2  rhel     lvm2 a--     7.51g   40.00m
      /dev/sdb   rusky-vg lvm2 a--  1020.00m  220.00m
      /dev/sdc   rusky-vg lvm2 a--     2.00g    2.00g
      /dev/sdd   rusky-vg lvm2 a--     3.00g 1020.00m
    
    [root@rusky ~]# vgreduce rusky-vg /dev/sdd
    

     ④将PV删除掉   通过 pvremove 命令 

    # pvremove /dev/sdd

     

    原文出处:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/24/3097785.html

  • 相关阅读:
    with ,Row_Number,DateDiff,DateAdd用法学习
    jmeter 读取mysql数据库
    fidder 自动保存请求内容
    redis 常用方法整理
    解决:EXCEL复制粘贴,精度丢失
    MYSQL 创建常见问题
    MYSQL 存储过程、函数、临时表、游标
    MYSQL 测试常用语句使用技巧
    3-6
    selenium3 下载、配置
  • 原文地址:https://www.cnblogs.com/rusking/p/5948767.html
Copyright © 2020-2023  润新知